07.11.2011

SSH JailKit

Устанавливаем необходимые для сборки пакеты:
apt-get install debhelper devscripts

И желательные для конфигурации:
apt-get install libcap-dev

Переходим в директорию, где будем собирать пакет:
cd /usr/src

Скачиваем его:
wget http://olivier.sessink.nl/jailkit/jailkit-2.14.tar.gz

Распаковываем:
tar xzf jailkit-2.14.tar.gz

Переходим в директорию с пакетом и с удивлением находим, что самый обычный тарбол с сорцами уже готов к сборке на Debian (об этом говорит директория debian с внутренними файлами):
cd jailkit-2.14

В пакете есть неболшой косячок с LSB-тэгами, поэтому можно их до сборки руками поправить:
vi extra/jailkit
#!/bin/sh
#
### BEGIN INIT INFO
# Provides:          jailkit
# Required-Start:    $remote_fs $syslog
# Required-Stop:     $remote_fs $syslog
# Should-Start:      $network $time
# Should-Stop:       $network $time
# Default-Start:     2 3 4 5
# Default-Stop:      0 1 6
# Short-Description: Start and stop the jailkit syslog daemon
### END INIT INFO
#
Осталось только запустить сборку. Во время прохождения инструкций, сборщик споткнется об отсутствие файла *orig*, но не беда. Жмем на Y и идем дальше:
debuild -uc -us
Устанавливаем свежесобранный пакет:
 dpkg -i ../jailkit_2.14-1_i386.deb
Конфигурирование находится под катом.





Создадим директорию, в которую будем чрутить наших пользователей:
mkdir /some/dir
Теперь нужно разобраться с утилитами. Первая утилита, которая нам повстречается - jk_init. Чтобы объяснить ее смысл, сначала надо рассказать как было плохо без нее. Раньше в chroot заводили пользователя одноименной командой. Ничего системного в такой директории как правило не было (если сама директория не какая-нибудь /etc или /lib). Пользователь, помещенный в чрут не может сделать почти ничего. И вот тут нам приходит на помощь jk_init. Ее задача пробросить основные библиотеки, системные файлы (как например /etc/resolv.conf) и утилиты (как например ls или cat) в ту самую директорию, куда зачрутили пользователя, чтобы ему хоть было с чем работать.

Для начала откроем файл /etc/jailkit/jk_init.ini и посмотрим, что в нем. Файл разбит на комплекты пробрасываемых файлов, объединенных по целевым принципам. Например если пользователю надо иметь возможность примитивных действий с сетью (хотябы отрезолвить кого-то), то есть комплект [netbasics]. Если же ему кроме первого надо еще и rsync использовать, то кроме [netbasics] для него придется прокинуть комплект [rsync]. Причем [rsync], как видно в конфиге, включает в свои зависимости и [netbasics] и [uidbasics], а значит если мы скажем утилите jk_init включить [rsync], он включит все три автоматически.
Итак включим пользователю [rsync], [git] и [basicshell],
jk_init -v /some/dir basicshell rsync git
Создаем пользователя, устанавливаем ему пароль и добавляем его в группу users (всех пользователей этой группы мы будем заворачивать в наш чрут):

groupadd users
useradd testuser
passwd testuser
usermod -a -G users testuser
Теперь в /etc/ssh/sshd_config, в самом низу пишем перенаправление всех пользователей из группы users в чрут:
Match Group users
    ChrootDirectory /some/dir
    AllowTCPForwarding no
После чего нужно перезапустить SSH:
service ssh restart


Готово, можно логиниться под любым пользователем, который состоит в группе users - например testuser.




Комментариев нет:

Отправить комментарий