Под защитой песочного демона Евгений Зобнин ака j1m Хакер, номер #093, стр. 093-118-3 Последний штрих - изменяем значение опции "UsePAM" на "no" в файле /usr/chroot/ssh/etc/ssh/sshd_config. Теперь все, можно со спокойной душой запускать сервер: # chroot /usr/chroot/ssh /usr/sbin/sshd [нестандартные решения стандартных проблем] К сожалению, описанный выше способ имеет один серьезный недостаток, проявляющийся в том, что теперь невозможно получить ssh-доступ к корню. В случае с jail-окружением эта проблема решается чуть ли не автоматически благодаря виртуализации сетевых ресурсов. В данной же ситуации мы не можем запустить второй ssh-сервер на корневой машине, две программы технически не способны разделять один порт. Само собой напрашивается решение - изменить значение опции "Port" одного из ssh-серверов на номер другого, незанятого порта. На мой взгляд, не совсем удачный ход, путаницы и так хватает (а способ защиты на основе смены порта довольно наивен). А что если сделать так, чтобы корневой ssh-сервер делал системный вызов chroot и отправлял указанных пользователей в изолированную среду? Несмотря на всю абсурдность и противоречивость такой идеи, она является наиболее популярной. План следующий - патчим sshd таким образом, чтобы он, встретив в базе пользователей некий знак, делал chroot(2) и отрезал юзера от корня. Идея настолько проста и примитивна, что любой человек, обладающий навыками программирования, способен исправить sshd и придать ему нужную функциональность. Но ничего кодить не придется, об этом уже позаботился человек из проекта chrootssh (chrootssh.sf.net). Все, что от нас требуется - это наложить на сырцы OpenSSH патч osshChroot-4.3p1.diff или скачать тарболл openssh-4.2p1-chroot.tar.gz с предварительно пропатченными исходниками, а затем произвести сборку и установку модифицированной версии. Далее вышеприведенным скриптом потребуется создать chroot-окружение для будущих юзеров. Самих chroot'ных клиентов мы создадим тоже в корне и поместим их в группу sshusers. Причем в поле домашнего каталога этих юзеров необходимо указать каталог "/usr/chroot/ssh/./home/user" (точка - это и есть та самая метка, на которую sshd реагирует, как собака на кость, и отправляет пользователя в глубокий chroot, а именно - в каталог, указанный перед точкой). И это все, осталось только перенести некоторые строки из базы пользователей корня в chroot-окружение: # cd /usr/chroot/ssh # grep /etc/group -e "^root" -e "^sshusers" > etc/group # grep /etc/passwd -e "^root" >> etc/passwd # grep /etc/passwd -e "^user" >> etc/passwd Последнюю команду придется выполнять каждый раз после добавления новых клиентов в группу sshusers. Другой и еще более грязный способ предложил Wolfgang Fuschlberger. Скрипт, который можно скачать с его сайта (www.fuschlberger.net), подготавливает chroot-окружение таким образом, что выбранные пользователи автоматически попадают в chroot, причем реализуется это стандартными средствами. Как же он работает? 1 Создается стандартное jail окружение и в него, кроме всего прочего, копируется /bin/su. |