Сейчас я покажу на примере Ubuntu Server 10.10 Amd64, как настроить тюрьму для подключённых по ssh.
В основе так называемой «Тюрьмы» лежит утилита Jailkit, которая представляет собой набор утилит для ограничения учётных записей пользователей и конкретных файлов с помощью изолированной оболочки.
Информация по моей системе на которой я буду демонстрировать пошаговую настройку:
ekzorchik@webserver:~$ uname -a
Linux webserver 2.6.35-22-server #33-Ubuntu SMP Sun Sep 19 20:48:58 UTC 2010 x86_64 GNU/Linux
ekzorchik@webserver:~$ lsb_release -a
Description: Ubuntu 10.10
Release: 10.10
Codename: maverick
И так у нас есть система, выступающая в роли Web-сервера с доступом по ssh, задача ограничить каждого подключённого по ssh собственным окружением.
Скачиваем JailKit:
ekzorchik@webserver:~$ wget -c http://olivier.sessink.nl/jailkit/jailkit-2.15.tar.gz
–2012-11-23 13:06:13– http://olivier.sessink.nl/jailkit/jailkit-2.15.tar.gz
Resolving olivier.sessink.nl… 95.97.76.243, 2001:7b8:1529::243
Connecting to olivier.sessink.nl|95.97.76.243|:80… connected.
HTTP request sent, awaiting response… 200 OK
Length: 137372 (134K) [application/x-gzip]
Saving to: `jailkit-2.15.tar.gz’
100%[====================================================================>] 137,372 217K/s in 0.6s
2012-11-23 13:06:13 (217 KB/s) – `jailkit-2.15.tar.gz’ saved [137372/137372]
Распаковываем и устанавливаем в систему:
ekzorchik@webserver:~$ tar -zxvf jailkit-2.15.tar.gz
ekzorchik@webserver:~$ cd jailkit-2.15/
ekzorchik@webserver:~/jailkit-2.15$ ./configure
configure: config files will be in /etc/jailkit/
checking for gcc… no
checking for cc… no
checking for cl.exe… no
configure: error: in `/home/ekzorchik/jailkit-2.15′:
configure: error: no acceptable C compiler found in $PATH
See `config.log’ for more details.
,как видите в системе не установлены, компиляторы, установку производим из репозитариев Ubuntu 10.10
ekzorchik@webserver:~$ sudo apt-get install build-essential
ekzorchik@webserver:~$ gcc –version
gcc (Ubuntu/Linaro 4.4.4-14ubuntu5.1) 4.4.5
повторяем:
ekzorchik@webserver:~/jailkit-2.15$ ./configure
ekzorchik@webserver:~/jailkit-2.15$ make
ekzorchik@webserver:~/jailkit-2.15$ sudo make install
Сейчас время создать директорию «тюрьмы», которую все пользователи будут видеть как корневую сервера:
ekzorchik@webserver:~$ sudo mkdir /jail
ekzorchik@webserver:~$ sudo chown root:root /jail
Используем команду jk_init для имитации «тюрьмы» с основным командами внутри:
ekzorchik@webserver:~$ sudo jk_init -v /jail basicshell
ekzorchik@webserver:~$ sudo jk_init -v /jail netutils
ekzorchik@webserver:~$ sudo jk_init -v /jail ssh
ekzorchik@webserver:~$ sudo jk_init -v /jail/ sftp scp jk_lsh
Создадим пользователя с домашний каталоги и интерпретатором командной строки:
ekzorchik@webserver:~$ sudo useradd -d /home/keiz -m keiz -s /bin/bash
ekzorchik@webserver:~$ sudo passwd keiz
Enter new UNIX password: Aa1234567
Retype new UNIX password: Aa1234567
passwd: password updated successfully
Сейчас время сделать «тюрьму» для созданного пользователя:
ekzorchik@webserver:~$ sudo jk_jailuser -m -j /jail/ keiz
Отобразим файл /etc/passwd для созданного пользователя:
ekzorchik@webserver:~$ cat /etc/passwd | grep keiz
keiz:x:1001:1001::/jail/./home/keiz:/usr/sbin/jk_chrootsh
Если пользователю нужно будет подключаться к системе, то отредактировать тюремный /etc/passwd:
ekzorchik@webserver:~$ sudo nano /jail/etc/passwd
keiz:x:1001:1001::/home/keiz:/bin/bash
Копируем файл в «тюрьму»:
ekzorchik@webserver:~$ sudo jk_cp -v -f /jail/ /etc/shadow
Copying /etc/shadow to /jail/etc/shadow
ekzorchik@webserver:~$ sudo jk_cp -v -f /jail/ /etc/shadow-
Copying /etc/shadow- to /jail/etc/shadow-
Разрешим bash, скопировал с помощью jk_cp нужные библиотеки в тюрьму:
ekzorchik@webserver:~$ sudo jk_cp -v -f /jail/ /bin/bash
Таким способом, можно и необходимые, но только обязательно проверенные утилиты предоставлять в тюрьму.
Сделаем обновления для системы и для «тюрьмы» в целом:
ekzorchik@webserver:~$ sudo jk_update -j /jail/ -d
ERROR: while scannign dir /jail/opt/: No such file or directory
ekzorchik@webserver:~$ sudo mkdir /jail/opt
ekzorchik@webserver:~$ sudo jk_update -j /jail/ -d
Вот собственно и всё, ограниченное окружение готово.
Спасибо друг! Обязательно попробую!