Мы будем использовать makejail, но есть еще ряд аналогов: jailer и jailtool.
Ставим тулзу для сборки chroot среды:
apt-get install -y makejail
В его стандартной поставке есть ряд шаблонов для запуска различных сервисов в chroot:
ls /usr/share/doc/makejail/examples
apache.py global.OpenBSD mysqld.py postgresql.py
bind.py mldonkey.py ntpd.py sshd.py
Теперь создаем папку, куда будет "сложен" комплект файлов для успешного чрута sshd:
mkdir -p /var/chroot/sshd
Но при попытке запуска:
makejail /usr/share/doc/makejail/examples/sshd.py
Нас постигает полный облом:
Loading configuration file /usr/share/doc/makejail/examples/sshd.py
Cannot load configuration file '/usr/share/doc/makejail/examples/sshd.py' as a python module
Executing it with python which should display a syntax error:
File "/usr/share/doc/makejail/examples/sshd.py", line 3
SyntaxError: Non-ASCII character '\xf1' in file /usr/share/doc/makejail/examples/sshd.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details
К счастью, это крайне легко фиксица добавлением в файл:
vi /usr/share/doc/makejail/examples/sshd.py
Следующих строк в самое начало:
# -*- coding: utf-8 -*-
Также добавляем в низ файла подключение стандартных утилит работы с файлами - ls, dir, ln, chown и проч ( в примере конфига опечатка, fileutils теперь зовут coreutils):
packages=["coreutils"]
И повторяем запуск команды.
После того, как программа отработает в нашей chroot папке будет построено дерево каталогов, необходимое sshd для работы:
ls /var/chroot/sshd/
bin dev etc lib lib64 sbin usr var
Причем, занимаемое им пространство крайне скромно:
du -sh /var/chroot/sshd/
16M /var/chroot/sshd/
Теперь пробуем сделать chroot на созданную папку:
chroot /var/chroot/sshd/
Основано на: http://www.debian.org/doc/manuals/securing-debian-howto/ap-chroot-ssh-env.en.html и http://stephan.paukner.cc/syslog/archives/332-SSH-daemon-in-a-chroot-on-Debian-lenny.html
А как же это... chroot ломается, да нафиг он нужен? )))
ReplyDeleteНу, разумеется, чистый chroot не панацея, но если юзать такие security патчи на ядро типа grsecurity, все вполне хорошо будет :)
ReplyDelete