Компьютерный форум OSzone.net  

Компьютерный форум OSzone.net (http://forum.oszone.net/index.php)
-   Общий по FreeBSD (http://forum.oszone.net/forumdisplay.php?f=10)
-   -   ssh из chroot-песочницы (не-jail) (http://forum.oszone.net/showthread.php?t=42040)

mar 03-12-2004 23:20 277713

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 каталог
, то упорно получала отлуп со словами unknown user номер_uid_в_настоящем_passwd
отлов этого отлупа в исходниках 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)
      отлуп

Понятно, что раз в дело вступает getpwuid, то поиск идет не по файлу паролей, а по файлам базы, находящимся в etc. То есть ошибка перестала вылезать не после создания в chroot-ном etc файла паролей, или же master.passwd, а после копирования в этот самый chroot-ный etc
pwd.db и spwd.db

Теперь все работают, но возникают вопросы:
пусть даже юзер в chroot будет запускаться с флагом -u имя (то есть не получит там chroot-ного root-ового shell-a). Все равно как-то сомнения гложат, насколько такой метод безопасен.

Возможные варианты:
1) скомпилировать специально для использования в песочнице ssh без этих строк проверки.
2) сделать так, как сделано - с копированием реальных файлов (и запуском юзера под юзером :))
3) создания файлов базы прямо под chroot (боюсь, придется поизвращаться)
4) any ideas?
Хотелось бы выслушать мнение уважаемого all и всякие идеи по этому поводу :)

misher 04-12-2004 12:05 277777

Прежде всего, оговорюсь, почему chroot, а не jail:
- только 1 внешний (юзер ожидается снаружи) IP
- мало места на диске, да и машинка старая-слабая.

Лучше создать алиасный IP для jail,
ну а для экономии места,- jail тоже рекомендуется собирать руками (прям как chroot песочницу, это еще и лишняя безопасность - когда в тюряге мало всякой всячины)

По поводу безопасности с chroot - если юзер поменяет себе uid на ноль (мало ли что бывает), то минимум он сможет организовать в chroot'e файлы устройств (например /dev/mem)

Вобщем грамотно настроеная jail-subsystem будет лучшим решением

mar 04-12-2004 12:18 277778

misher
Цитата:

Лучше создать алиасный IP для jail
и пробрасывать конкретнеого юзера на этот алиаз? как? (напоминаю - провайдер дал мне один внешний IP. Второго не будет.)
Цитата:

если юзер поменяет себе uid на ноль
как? =)
Цитата:

jail тоже рекомендуется собирать руками
и сколько занимает самый минимум? с bash и ls? (или bash+ls+ssh)

Но вообще-то меня больше интересовали варианты решения запуска ssh из-под chroot и их обсуждение :)

misher 04-12-2004 12:35 277780

Самый возможный минимум это один фаил
с баш и лс столько же сколько в чруте

Насчет как поменять уид на ноль - встречный вопрос если он неможет этого сделать в
чруте - может он несможет сделать этого и в основной системе и мутить песочницу ненадо?

misher 04-12-2004 12:49 277781

Кстати насчет одного внешнего ip - можно настроить ipfw для forward'a во внутрь (на алиас)

mar 04-12-2004 13:18 277784

Цитата:

Кстати насчет одного внешнего ip - можно настроить ipfw для forward'a во внутрь (на алиас)
как сделать в ipfw forward для пакетов, приходящих не с конкретной машины, а от конкретного пользователя? (Честно говоря, по-моему никак :))

Цитата:

Насчет как поменять уид на ноль - встречный вопрос если он неможет этого сделать в чруте - может он несможет сделать этого и в основной системе и мутить песочницу ненадо?
ну в песочнице возможностей для порчи системы мягко говоря меньше :) (если вообще имеются)

кроме того, меня все-таки занимает задача с ssh из-под chroot (хотя бы просто, как возможная задача :))

misher 04-12-2004 13:36 277786

как сделать в ipfw forward для пакетов, приходящих не с конкретной машины, а от конкретного пользователя? (Честно говоря, по-моему никак )
-Можно подробнее (должен ли юзер выходить в инет или иметь какие-либо серверы)

Чрут делается для того чтобы убрать юзеру доступ к основным файлам системы.
Какие файлы являются опасными? Фаилы с setuid, файлы с паролями и файлы устройств - на устройства система ставит грамотные права, пароли тоже простому юзеру недоступны, а вот сетуид файлы могут появится из-за третьего софта - их следует найти
и запретить запускать этому юзеру-хакеру и нефига он сделать несможет. (а если как-то сможет, то и чрут он тоже завалит)

misher 04-12-2004 13:40 277788

mar
Кстати прикинь если в ssh будет какое-нибудь переполнение буфера

кроме того, меня все-таки занимает задача с ssh из-под chroot (хотя бы просто, как возможная задача )

А вот это весьма интересная тема - sshd работает из под рута и в песочнице
он единственный превелигерованный процесс - заставить бы его работать
неиз под рута и безопасность в песочнице будет навысоте.

Наверное следует создать пользователя типа croot отдать ему в хозяйство все
системные (в чруте) файлы (каие-то на чтение) и запускать sshd из под него.

mar 04-12-2004 14:11 277796

мнение misher, в общем понятно: мне предлагается заниматься безопасностью системы и чтением новостей по эксплойтам :)
по-прежнему очень интересует мнение тех, кто хотел бы высказаться по поводу вариантов того, как поступить с ssh-прибамбасами :
Цитата:

Теперь все работает, но возникают вопросы:
пусть даже юзер в chroot будет запускаться с флагом -u имя (то есть не получит там chroot-ного root-ового shell-a). Все равно как-то сомнения гложат, насколько такой метод безопасен.

Возможные варианты:
1) скомпилировать специально для использования в песочнице ssh без этих строк проверки.
2) сделать так, как сделано - с копированием реальных файлов (и запуском юзера под юзером )
3) создания файлов базы прямо под chroot (боюсь, придется поизвращаться)
4) any ideas?
Хотелось бы выслушать мнение уважаемого all и всякие идеи по этому поводу


Время: 18:36.

Время: 18:36.
© OSzone.net 2001-