Иногда возникает необходимость ограничить пользователя который имеет доступ по 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 …”
Вот собственно и все, очень надеюсь что статья будет полезна вам.
О разном
Советую скачать саундтрек фильма сумерки. Просто великолепная музыка.
Стихотворная классика: “Гой ты, Русь, моя родная” Сергея Есенина