ssh из chroot-песочницы (не-jail)
возникла задача - сделать песочницу, загнать туда пользователя и дать ему возможность идти по ssh дальше.
Прежде всего, оговорюсь, почему chroot, а не jail: - только 1 внешний (юзер ожидается снаружи) IP - мало места на диске, да и машинка старая-слабая. chroot-песочница, назначение юзеру шелла для попадания в нее и прочее мы как-то уже обсуждали (могу еще как-нибудь подробно для желающих расписать, но вопрос сейчас не об этом). Кратко остановлюсь на установка ssh тк она не совсем тривиальна: Потребовалось: - копирование программы ssh - копирование библиотек (узнаем по ldd) - копирование неотловленных ldd библиотек (ловим: strace sshd 2>&1 | grep lib ) - touch etc/resolv.conf - echo "order hosts" > etc/host.conf - echo "127.0.0.1 localhost" > etc/hosts - cp /usr/bin/env usr/bin/ (может, можно и без этого обойтись) - mknod dev/random c 2 3 ( а то получим ошибку PRNG is not seeded) - mknod dev/urandom c 2 4 (см выше) - mknod dev/tty c 1 0 (NB цифры для mknod смотрим в ls -l /dev | grep что_нам_надо) - файл паролей в chroot-ом etc (хотя я теперь в этом и не уверена - надо проверить) - mkdir .ssh - touch .ssh/known_hosts Вроде бы все =) Дальше, собственно, самое интересное - когда я пыталась запустить ssh после Код:
chroot каталог отлов этого отлупа в исходниках openssh в портах показал три места в файлах /usr/src/crypto/openssh/scp.c /usr/src/crypto/openssh/ssh.c /usr/src/crypto/openssh/tildexpand.c во всех трех идет проверка Код:
if ((pwd = getpwuid(userid = getuid())) == NULL) pwd.db и spwd.db Теперь все работают, но возникают вопросы: пусть даже юзер в chroot будет запускаться с флагом -u имя (то есть не получит там chroot-ного root-ового shell-a). Все равно как-то сомнения гложат, насколько такой метод безопасен. Возможные варианты: 1) скомпилировать специально для использования в песочнице ssh без этих строк проверки. 2) сделать так, как сделано - с копированием реальных файлов (и запуском юзера под юзером :)) 3) создания файлов базы прямо под chroot (боюсь, придется поизвращаться) 4) any ideas? Хотелось бы выслушать мнение уважаемого all и всякие идеи по этому поводу :) |
Прежде всего, оговорюсь, почему chroot, а не jail:
- только 1 внешний (юзер ожидается снаружи) IP - мало места на диске, да и машинка старая-слабая. Лучше создать алиасный IP для jail, ну а для экономии места,- jail тоже рекомендуется собирать руками (прям как chroot песочницу, это еще и лишняя безопасность - когда в тюряге мало всякой всячины) По поводу безопасности с chroot - если юзер поменяет себе uid на ноль (мало ли что бывает), то минимум он сможет организовать в chroot'e файлы устройств (например /dev/mem) Вобщем грамотно настроеная jail-subsystem будет лучшим решением |
misher
Цитата:
Цитата:
Цитата:
Но вообще-то меня больше интересовали варианты решения запуска ssh из-под chroot и их обсуждение :) |
Самый возможный минимум это один фаил
с баш и лс столько же сколько в чруте Насчет как поменять уид на ноль - встречный вопрос если он неможет этого сделать в чруте - может он несможет сделать этого и в основной системе и мутить песочницу ненадо? |
Кстати насчет одного внешнего ip - можно настроить ipfw для forward'a во внутрь (на алиас)
|
Цитата:
Цитата:
кроме того, меня все-таки занимает задача с ssh из-под chroot (хотя бы просто, как возможная задача :)) |
как сделать в ipfw forward для пакетов, приходящих не с конкретной машины, а от конкретного пользователя? (Честно говоря, по-моему никак )
-Можно подробнее (должен ли юзер выходить в инет или иметь какие-либо серверы) Чрут делается для того чтобы убрать юзеру доступ к основным файлам системы. Какие файлы являются опасными? Фаилы с setuid, файлы с паролями и файлы устройств - на устройства система ставит грамотные права, пароли тоже простому юзеру недоступны, а вот сетуид файлы могут появится из-за третьего софта - их следует найти и запретить запускать этому юзеру-хакеру и нефига он сделать несможет. (а если как-то сможет, то и чрут он тоже завалит) |
mar
Кстати прикинь если в ssh будет какое-нибудь переполнение буфера кроме того, меня все-таки занимает задача с ssh из-под chroot (хотя бы просто, как возможная задача ) А вот это весьма интересная тема - sshd работает из под рута и в песочнице он единственный превелигерованный процесс - заставить бы его работать неиз под рута и безопасность в песочнице будет навысоте. Наверное следует создать пользователя типа croot отдать ему в хозяйство все системные (в чруте) файлы (каие-то на чтение) и запускать sshd из под него. |
мнение misher, в общем понятно: мне предлагается заниматься безопасностью системы и чтением новостей по эксплойтам :)
по-прежнему очень интересует мнение тех, кто хотел бы высказаться по поводу вариантов того, как поступить с ssh-прибамбасами : Цитата:
|
Время: 18:36. |
Время: 18:36.
© OSzone.net 2001-