января 10 2009 03:17 дп

Установка и настройка SSHD в среде chroot при помощи makejail

ssh-lock.jpg

Иногда возникает необходимость ограничить пользователя который имеет доступ по ssh, конечно это можно реализовать выставив права на лиректории, урезав права пользователю и тд. Но сменив корневую директорию для пользователя и ограничив его набором программ которые вы выбрали сами гораздо безопаснее. В этой статье я опишу как настроить SSHD на работу с chroot, применяя ограничения только к нужным пользователям. Для настроки нам понадобятся измененная версия SSHD и пакет makejail  который создает chroot окружение для программ автоматически, используя конфигурационные файлы. Есть и минусы, так как на сегодня имеется не самая свежая версия пакета sshd, а именно версии 4.3p2. Установку и настройку я проводил на системе Ubuntu 8.04, но на странице где можно скачать пропатченный SSHD имеются исходные коды, которые можно собрать на других операционных системах.

Установим необходимое програмное обеспечение командой

Код:


aptitude install makejail

Затем создадим конфигурационный файл для этой программы, он понадобится нам для создания среды chroot с набором необходимых программ, библиотек и прочего.

Код:


touch /etc/makejail/sshd.py

Ниже я приведу свой файл, вы можете изменить там директорию для chroot, имена пользователей, а так же набор программ, вписав названия в секцию packages

Код:


chroot="/mnt/chroot"
forceCopy=["/etc/ssh/ssh_host*","/etc/ssh/sshd*","/etc/ssh/moduli",
"/etc/pam.conf","/etc/security/*","/etc/pam.d/ssh","/etc/pam.d/other",
"/etc/hosts","/etc/nsswitch.conf",
"/var/run/sshd","/lib/security/*",
"/etc/shells", "/etc/nologin","/etc/environment","/etc/motd",
"/etc/shadow","/etc/hosts*",
"/bin/*sh", "/lib/libnss*",
"/dev/pt*","/dev/ttyp[0-9]*"]
packages=["fileutils"]
preserve=["/dev/","/var/www","/etc","/usr","/lib","/etc/ssh"]
userFiles=["/etc/passwd","/etc/shadow"]
groupFiles=["/etc/group","/etc/gshadow"]
users=["sshd","tester"]
groups=["sshd","tester"]
testCommandsInsideJail=["start-stop-daemon --start --quiet --pidfile /var/run/sshd.pid --exec /usr/sbin/sshd"]
testCommandsOutsideJail=["ssh localhost"]
processNames=["sshd"]

Установим пропатченный SSHD, который имеет поддержку chroot. Так же придется заменить и клиент, что бы версии совпадали.

Код:


wget http://debian.home-dn.net/etch/ssh/openssh-server_4.3p2-9etch2-chroot4.3p1_i386.deb
wget http://debian.home-dn.net/etch/ssh/openssh-client_4.3p2-9etch2-chroot4.3p1_i386.deb
dpkg -i openssh-client_4.3p2-9etch2-chroot4.3p1_i386.deb openssh-server_4.3p2-9etch2-chroot4.3p1_i386.deb

Cоздадим тестового пользователя с логином tester

Код:


useradd -m -d /mnt/chroot/home/tester -s /bin/bash -p secret tester

Если вы заглянете в файл /etc/passwd то увидите там примерно следующее:
tester:x:142:142::/mnt/chroot/home/tester:/bin/bash
Для того что бы наш пользователь при входе по SSH попадал в chroot необходимо изменить строку в /etc/passwd вот так:
tester:x:142:142::/mnt/chroot/./home/tester:/bin/bash
Мы добавили в строку символы /./ которые и сменят корневой каталог для нашего пользователя вместо / на /mnt/chroot

Теперь запустим программу makejail для создания chroot среды

Код:


makejail /etc/makejail/sshd.py

Она автоматически скопирует все необходимое и запустит демона SSHD. После этого попробуйте выполнить вход на сервер от пользователя tester.

Для того что бы наш SSH сервер при перезагрузках и рестартах стартовал в созданной нами изолированной среде немного подправим скрипт /etc/init.d/ssh изменив строку «start-stop-daemon …» на «chroot /var/chroot/sshd start-stop-daemon …»

Вот собственно и все, очень надеюсь что статья будет полезна вам.





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


Trackback URI | Comments RSS

Leave a Reply

You must be logged in to post a comment.


« | »



Server load average: 0.00, 0.00, 0.00
Server uptime: 355 days, 11:56
Your IP is: 54.162.76.55.