Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по FreeBSD » ssh из chroot-песочницы (не-jail)

Ответить
Настройки темы
ssh из chroot-песочницы (не-jail)
mar mar вне форума

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


возникла задача - сделать песочницу, загнать туда пользователя и дать ему возможность идти по 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 и всякие идеи по этому поводу

Отправлено: 23:20, 03-12-2004

 

Аватара для misher

Пользователь


Сообщения: 103
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


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

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

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

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

-------
Где линукс пингвины висят
там черти БСД продолжают работать


Последний раз редактировалось misher, 04-12-2004 в 12:14.


Отправлено: 12:05, 04-12-2004 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.

mar mar вне форума Автор темы

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


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

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

Отправлено: 12:18, 04-12-2004 | #3


Аватара для misher

Пользователь


Сообщения: 103
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


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

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

-------
Где линукс пингвины висят
там черти БСД продолжают работать


Отправлено: 12:35, 04-12-2004 | #4


Аватара для misher

Пользователь


Сообщения: 103
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


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

-------
Где линукс пингвины висят
там черти БСД продолжают работать


Отправлено: 12:49, 04-12-2004 | #5

mar mar вне форума Автор темы

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


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

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

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

Последний раз редактировалось mar, 04-12-2004 в 13:28.


Отправлено: 13:18, 04-12-2004 | #6


Аватара для misher

Пользователь


Сообщения: 103
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


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

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

-------
Где линукс пингвины висят
там черти БСД продолжают работать


Отправлено: 13:36, 04-12-2004 | #7


Аватара для misher

Пользователь


Сообщения: 103
Благодарности: 5

Профиль | Сайт | Отправить PM | Цитировать


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

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

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

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

-------
Где линукс пингвины висят
там черти БСД продолжают работать


Последний раз редактировалось misher, 04-12-2004 в 14:00.


Отправлено: 13:40, 04-12-2004 | #8

mar mar вне форума Автор темы

Аватара для mar

just mar


Moderator


Сообщения: 3904
Благодарности: 163

Профиль | Отправить PM | Цитировать


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

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

Последний раз редактировалось mar, 04-12-2004 в 23:51.


Отправлено: 14:11, 04-12-2004 | #9



Компьютерный форум OSzone.net » Linux и FreeBSD » Общий по FreeBSD » ssh из chroot-песочницы (не-jail)

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочее - Стабильный SSH туннель. Скрипт мониторинга SSH туннеля. AlexeiZ Общий по Linux 2 02-11-2009 12:49
FreeBSD - Jail и natd Orfan Общий по FreeBSD 2 27-08-2008 14:23
pf(+nat) и jail - как разграничить доступ jail-ов в инет brag Общий по FreeBSD 8 28-06-2007 02:40
Виртуальный хостинг и apache в chroot. Dmitry am Общий по FreeBSD 16 01-09-2005 00:37
jail mar Общий по FreeBSD 14 08-04-2004 08:43




 
Переход