Под защитой песочного демона Евгений Зобнин ака j1m Хакер, номер #093, стр. 093-118-2 # создаем каталог для chroot-окружения mkdir -p $CHROOT chown root:root $CHROOT chmod 700 $CHROOT cd $CHROOT # создаем каталоговую структуру DIRS="bin sbin lib etc dev home usr usr/bin /usr/sbin usr/lib" for dir in $DIRS; do mkdir -p $dir done # копируем необходимые библиотеки LIBS=`ldd $CMDS|grep -v ':$'|grep -v "not a dynamic executable"|cut -f 3 -d " "|sort|uniq|sed 1d` for lib in $LIBS; do cp -P $lib ./$lib cp -L $lib ./$lib done cp -P /lib/ld-linux.so.2 ./lib cp -L /lib/ld-linux.so.2 ./lib # копируем команды for cmd in $CMDS; do cp -P $cmd ./$cmd cp -L $cmd ./$cmd done # создаем необходимые файлы устройств mknod -m 666 dev/null c 1 3 mknod -m 666 dev/zero c 1 5 Ставим на скрипт бит исполнения и запускаем: # chmod +x ~/bin/mkchroot # ~/bin/mkchroot /usr/chroot/ssh Каталог /usr/chroot/ssh волшебным образом наполнится почти всем, что может только понадобиться. Следующий шаг - перенос ssh. Потребуется скопировать сам демон /usr/sbin/sshd, файл /usr/libexec/sftp-server (если требуется sftp-сервер), конфигурационные файлы /etc/ssh/{moduli,ssh_config,sshd_config}. Далее следует создать два каталога внутри chroot-окружения: /var/empty (без него sshd не сможет понижать свои привилегии до пользователя sshd), /var/run (для хранения PID-файла) и несколько дополнительных файлов устройств: /dev/urandom, /dev/ptmx, /dev/ptyp*, /dev/ptyq*, /dev/ttyp*, /dev/ttyq* (нужны для работы псевдотерминала). Проще будет скопировать их из корневой машины. Кроме того, рекомендуется перенести каталог /usr/share/terminfo для правильной инициализации терминала (иначе многие клавиши будут работать неверно). Осталось скопировать библиотеки, и перенос sshd можно считать завершенным. Прием с ldd в данном случае не пройдет, так как ssh-демон загружает некоторые библиотеки "на лету". Чтобы узнать о всех (с оговорками) требуемых библиотеках, потребуется запустить sshd на корневой машине и выполнить следующую команду: $ cat /proc/`cat /var/run/sshd.pid`/maps Сервер ssh установлен и готов к запуску. Следующий шаг - создание ключей и клиентских аккаунтов. Первая процедура достаточно тривиальна и выполняется несколькими простыми командами: # cd /usr/chroot/ssh # ssh-keygen -t dsa -f etc/ssh/ssh_host_dsa_key -N '' # ssh-keygen -t rsa -f etc/ssh/ssh_host_rsa_key -N '' С аккаунтами немного сложнее. Дело в том, что стандартные утилиты, манипулирующие привилегиями пользователя, не позволяют изменить месторасположение файлов /etc/{passwd,shadow,group}. Эта проблема может быть решена различными способами. Можно скопировать эти файлы в укромное место, создать на их месте пустые файлы, добавить нужные аккаунты для пользователей, переместить файлы в chroot, восстановить оригиналы. Можно установить в chroot утилиты /usr/sbin/{passwd,useradd,userdel,usermod} (для этого достаточно добавить их в переменную CMDS вышеприведенного скрипта), зайти в сhroot под рутом и добавить пользователей. В конце концов никто не запрещает править файлы в ручную, как это делаю я. Главное создать пользователей root и sshd, а также группы root, sshd и sshusers, в последнюю мы будем помещать наших пользователей. |