LINUX.ORG.RU

OpenSSH 5.9 с экспериментальным режимом «песочницы»

 


0

1

Появилась версия 5.9 открытой реализации клиента и сервера с поддержкой SSH-протокола — OpenSSH. Данный релиз впервые представляет экспериментальную функцию «песочницы», налагающей ограничения на осуществление определённых системных вызовов.

Цель создания «песочницы» заключается в установке барьера на пути атаки на другие узлы сети, например, посредством создания прокси или открытия сокетов, а также локальных атак на систему.

Предоставляется три реализации «песочницы»:

  • systrace использует systrace(4) со списком разрешённых системных вызовов, остальным посылается сигнал SIGKILL; данный режим осуществим только при активации новой опции ядра SYSTR_POLICY_KILL, существующей на данный момент только в OpenBSD;
  • seatbelt использует возможности OS X/Darwin sandbox(7) с политиками, запрещающими доступ к файловой системе и сети;
  • rlimit выбирается в случае, если предыдущие два режима не могут быть реализованы, и использует setrlimit() для запрета порождения новых процессов и файловых дескрипторов.

В «песочнице» запускается дочерний процесс для обработки SSH-протокола, сжатия и выполнения части криптографических операций, не относящихся к аутентификации.

>>> Полный список изменений

★★★★★

Проверено: svu ()
Последнее исправление: maxcom (всего исправлений: 7)

Надеюсь, OpenSSH можно будет собрать без этой штуки? Или вшита «без шансов, без вариантов, безотносительно именно к вам ...»?

И как оно сожительствует с AppArmor, SeLinux, TOMOYO etc?

adriano32 ★★★
()
Ответ на: комментарий от ciiccii

Это же OpenSource (c)

Если оно мне нафиг не нужно, я хочу иметь возможность отключить это при конфигурировании перед сборкой указанием опции --without-this-fucken-shit-which-slows-down-my-server-when-i-am-accessing-it

adriano32 ★★★
()

Кажется это какая-то сомнительная фича на Linux. Setrlimit не проблема и так выставить, только что потом из такого shell'а делать? Кстати через selinux наверное можно sandbox хороший построить

maxcom ★★★★★
()
Ответ на: комментарий от rtvd

как научили ругаться на английском, так и ругаюсь.

adriano32 ★★★
()
Ответ на: комментарий от AVL2

> Странно, что линукс тут последний.

вовсе не странно, ведь openssh разрабатывается фанатиками из банды openbsd.

anonymous
()
Ответ на: комментарий от maxcom

Да он и так строится не плохо...

> Кстати через selinux наверное можно sandbox хороший построить

Только для всей системы, безотносительно к тему как зарегистрирован пользователь, запустивший данное приложение (по ssh или в локальном терминале). Это довольно удобно — любое приложение находится под контролем.

Что-то мне кажется что данное нововведение напрямую связано с проблемами, возникшими на kernel.org.

anonymous
()
Ответ на: Да он и так строится не плохо... от anonymous

>Что-то мне кажется что данное нововведение напрямую связано с проблемами, возникшими на kernel.org.

Changes by:   djm@cvs.openbsd.org   2011/06/22 15:57:01
Modified files:
   usr.bin/ssh : servconf.c servconf.h sshd.c sshd_config.5
   usr.bin/ssh/sshd: Makefile
Added files:
   usr.bin/ssh : sandbox-rlimit.c sandbox-systrace.c sandbox.h

Log message:
introduce sandboxing of the pre-auth privsep child using systrace(4).

anonymous
()
Ответ на: комментарий от AVL2

Не странно. Просто в linux переизбыток конкурирующих security framework'ов.

anonymous
()
Ответ на: комментарий от val-amart

Надо бы поправить, но я не уверен что все правильно понял. Что если аутентификация сетевая, вроде ldap?

maxcom ★★★★★
()
Ответ на: комментарий от anonymous

Да, скорее всего мне действительно просто показалось.

Хотя, возможно, что команда разработчиков OpenSSH либо знала, либо догадывалась о том, что проблемы есть. Пока нет публичной информации об инциденте, говорить наверное преждевременно. Всё это на уровне догадок.

anonymous
()

Блин. Песочницы должны быть глобально, любое приложение должно работать в песочнице.

Тот же браузера вообще доступ к файловой системе иметь не должен, за исключением явного указания пользователем какого-то файла.

namezys ★★★★
()
Ответ на: комментарий от namezys

Слишком много неудобств для пользователя и нагрузки на систему. Не так чатос попадаются критичные данные, чтобы голову морочить. Больше того - процентах в 50 случаев можно защищаться только от уничтожения (что деается бэкапами), так как sensitive данных нет. У домашних пользователей, к примеру, это очень типичная ситуация, когда на компе лежит архив фотографий (и они же выложены в сети), какая-то подборка музыки да фильмы. При этом аккаунты IM/почты теряются раз в пол-года и заводятся новые. А защита - это скорее необходимость для рабочих машин - так там она обычно сводится просто к спокойному дистрибутиву (RH/Centos либо Debian stable), приличному паролю, своевременным апдейтам и не запусканию взятого невесть откуда софта.

anonymous
()
Ответ на: комментарий от namezys

Блин. Песочницы должны быть глобально, любое приложение должно работать в песочнице.

Hallo Plan9, там это by design

beastie ★★★★★
()
Ответ на: комментарий от anonymous

Не скажите. Рассмотрим пример с браузером.

Для пользователя ничего не меняется - он говорит: приложи фаил. Открывается окно (его выдает уже не сам браузера, а система). Пользователь там выбирает фаил. Фаил автоматически становится доступен браузеру для чтения, он его получает и использует. Аналогично, если пользователю надо что-то записать. Похожие действия делать, если идет работа с закладками/данными и тд. Таким образом, взлом процесса браузера не дает вообще не какого доступа к информации пользователя, ну кроме уже наличиствующей в браузере. Если каждая сессия/вкладка работают в отдельном потоке, то доступ будет только к данным этих вкладок. Да, это сложнее программируется. Да, это повышает степень связанности компонентов системы (точнее требует более развитого интерфейса между компонентами). Но в итоге дает значительный прирост безопасности.

А про нагрузку на железо? Так это вообще смешно, проверка прав дешевая операция, по сравнению с анимацией страницы.

namezys ★★★★
()
Ответ на: комментарий от beastie

Не совсем. Окружение процесса не индивидуальное - процессы должны быть в одном пространстве, но их к друг другу не пускают. Хотя в плане это хорошо реализовано. Но ведь это есть и в Linux - SElinux, и в mac OS, и задатки этого есть даже в windows - приведении пользователя и развитые сложные тленны безопасности

namezys ★★★★
()
Ответ на: комментарий от namezys

если мне не совсем изменяет склероз, как раз для этих целей есть plumber, да пространства имён можно биндить друг к другу как угодно.

beastie ★★★★★
()

Ну вот, прощай халявный интернет через ssh

luke ★★★★★
()
Ответ на: комментарий от registrant

О как!

> т.е. это происки бздунов? Изя?

Т.е., Изяслав наш есть сетевой фулюган? Он открылся с неожиданной для меня стороны... :)))

anonymous
()
Ответ на: комментарий от namezys

Не очень это удобно, если честно.

> Блин. Песочницы должны быть глобально, любое приложение должно работать в песочнице.

Если мы говорим о «десктопе», то тот же SELinux запаришься настраивать при всём многообразии современного софта (прежде всего потому, что для начала надо будет хорошенько разобраться с описанием правил для приложения). На сервере — да, бесспорно, написанные грамотно правила решают проблему. Но там и софта относительно не много.

Без тени ёрничества рекомендовал бы сообществу попробовать тот же Hardened Gentoo в _серверной_ конфигурации, со всеми пирогами и плюшками в виде защиты стека от срыва, SELinux (PaX, PIC, Grsecurity2). Проблем (говорю на основании жёсткого тестирования) намного меньше. Даже потенциальных.

http://www.gentoo.org/proj/en/hardened/

anonymous
()
Ответ на: комментарий от maxcom

> Что если аутентификация сетевая, вроде ldap?

Модули аутентификации, как и раньше, выполняются под root, без всякого sandbox'а.

Реализация privilege separation появилась в OpenSSH в районе версии 3.3 и 2002-го года. При этом создается child-процесс для обработки SSH-протокола, сжатия и выполнения части криптографических операций, не относящихся к аутентификации. Этот процесс работает под отдельным псевдо-пользователем (например, sshd или _sshd) и в chroot'е в пустой каталог (например, /usr/share/empty или /var/empty).

Суть нынешней новости в том, что привилегии этого процесса теперь снижаются еще сильнее. OpenSSH здесь не первый - до того cхожее дополнительное снижение привилегий privsep child'а было реализовано в vsftpd - трюк с rlimit'ами и использование namespaces на Linux (CLONE_NEWPID, CLONE_NEWIPC, позже CLONE_NEWNET) начиная с 2.1.1 и 2009-го года, чуть позже еще ptrace. Конкретно трюк с нулевыми rlimit'ами был описан в статье DJB (автор qmail и т.п.) за 2007 год (но до vsftpd в чем-либо широко распространенном, насколько мне известно, не использовался).

solardiz
()
Ответ на: О как! от anonymous

катится по наклонной. сначала мелкое хулиганство на ЛОРе, теперь кернел.орг. к успеху идет

registrant ★★★★★
()
Ответ на: комментарий от solardiz

> Модули аутентификации, как и раньше, выполняются под root, без всякого sandbox'а.

Добавлю: да, это плохо, но это сложно и/или бессмысленно исправлять:

Portable OpenSSH не знает какие привилегии могут требоваться модулям из PAM-стека. Обычно модули пишутся в расчете на работу под root.

OpenSSH доверяет результату аутентификации, в том числе для заходов под root (если они разрешены) или обычно хотя бы для заходов под пользователем, которому разрешен su/sudo под root. При таких типичных настройках, даже если код аутентификации будет выполняться в каком-либо sandbox'е, уязвимость в таком коде все равно позволит получить root или почти root (возможность зайти под любым пользователем кроме root).

Поэтому лучшее, что мы можем сделать, это исключить на конкретных системах лишние способы аутентификации, особенно такие опасные как LDAP.

solardiz
()
Ответ на: комментарий от namezys

> Для пользователя ничего не меняется - он говорит: приложи фаил.

Открывается окно (его выдает уже не сам браузера, а система).

Пользователь там выбирает фаил. Фаил автоматически становится


доступен браузеру для чтения, он его получает и использует.



Ты ведь правда читал про режим Application sandboxing в Apple OS Lion? Если нет - рекомендую почитать:
http://developer.apple.com/library/mac/#documentation/Security/Conceptual/Cod...

Korwin ★★★
()
Ответ на: комментарий от registrant

Дааа... Success story просто... :)

> к успеху идет

И далеко пойдёт, если менты конечно не остановят.

По теме. С выводами Александра (solar desiner'а) полностью согласен. Единственное что сейчас занимает наши пытливые умы, так это несколько странноватое совпадение. Мы, знаете ли, крайне недоверчивы...

И, кажется, начали понимать как именно поимели kernel.org.

anonymous
()
Ответ на: комментарий от anonymous

> а не дадите ли ссылочку на них? интересно почитать.

Ну проявите же чудеса наблюдательности, коллега! Право, как-то даже и неловко.

Вот же они:

OpenSSH 5.9 с экспериментальным режимом «песочницы» (комментарий)

OpenSSH 5.9 с экспериментальным режимом «песочницы» (комментарий)

Сразу оговорюсь. Фразы

Мы, знаете ли, крайне недоверчивы...

И, кажется, начали понимать как именно поимели kernel.org.

Не относятся ни к кому, кроме нас, тишайшего и скромнейшего ордена [s]Извмаи...[/s] эээ... палюсь, Анонимусов. :)))

anonymous
()
Ответ на: комментарий от Korwin

Sandbox они начали закладывать еще в 10.5

Важным элементом этого является не только наличие самой песочницы, но и возможность просто менять ее.

namezys ★★★★
()
Ответ на: комментарий от namezys

>Написание правил - задача разработчика софта

ну да.

разработчки софта сейчас разбегуться, и сразу выложат нам правила для selinux-а, а потом разбегуться и даже сделают их работающими. Но вот кто проверит, безопасны ли эти правила ? Я уверен, что подавляющая часть разработчиков даже понятия не имеет об этой системе.

В rhel5 кде3 фактически исключалась из selinux-а, а в кде4 наверняка стало ещё хуже.

argin ★★★★★
()
Ответ на: комментарий от adriano32

> Если оно мне нафиг не нужно, я хочу иметь возможность отключить это при конфигурировании перед сборкой указанием опции

сначала слезь с бубунты, а то очень смешно получается

anonymous
()

>посредством создания прокси или открытия сокетов, а также локальных атак на систему.

SSH тихонько подбирается к серверу, попутно атакуя атакующих хакеров?

hwnd
()
Ответ на: комментарий от rtvd

> Чувак, сначала аглийский подтяни, ОК?

В Participle I добавляется суффикс -ing, а не -en.


То, что он сделал, называется «графон» и изучается стилистикой.

Но можно ткнуть в другое. :)

Jayrome ★★★★★
()
Ответ на: комментарий от namezys

> Для пользователя ничего не меняется - он говорит: приложи фаил.

Открывается окно (его выдает уже не сам браузера, а система).

Пользователь там выбирает фаил. Фаил автоматически становится


доступен браузеру для чтения, он его получает и использует.


С файловым диалогом аттачмента такое может и прокатит, но
очевидно же, что пользователь не обязан подтверждать доступ ко
_всем_ файлам, необходимым приложению.

anonymous
()
Ответ на: комментарий от Deleted

> Английский только в учебнике видел, да? :)

Госпожа Кассандра не умеет смотреть в профайл собеседников? Примите мои соболезнования.

rtvd ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.