Тюрьма для подключённых по SSH

Posted by

Сейчас я покажу на примере Ubuntu Server 10.10 Amd64, как настроить тюрьму для подключённых по .

В основе так называемой «Тюрьмы» лежит утилита , которая  представляет собой набор утилит для ограничения учётных записей пользователей и конкретных файлов с помощью изолированной оболочки.

Информация по моей системе на которой я буду демонстрировать пошаговую настройку:

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:     

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

Вот собственно и всё, ограниченное окружение готово.

Leave a Reply

Ваш e-mail не будет опубликован. Обязательные поля помечены *

один × 5 =