SELinux, AppArmor и др. системы безопасности
Цитата с другой ветки, обсуждение перенесено сюда в отдельно созданную тему.
> Но безопасность в контексте браузера это фантастика, на сегодняшний день.
SELinux по идее должен защищать пользовательское пространство от уязвимостей в приложениях. Правда я пока не освоил эту технику. Может кто из знающих людей покажет пример? Предположим, нужно изолировать браузер Firefox
Вот пример создания политики для гуглохрома:
http://danwalsh.livejournal.com/32759.html
Или пример использования киоск-режима:
http://danwalsh.livejournal.com/11913.html
Но всё вменяемо работает только в Федоре (в нём ведётся официальна разработка), в других дистрах поддержка SELinux не очень хорошая (местами плачевная) и стабильно отлажена только в расчёте на запуск серверов. Многих утилит, фич просто может не быть. Особенно для юзер-приложений и иксов.
А вы уже пробовали как-то работать хотя-бы с готовыми политиками? Про всякие тонкости с "domain transition" внятно себе представляете?
По SELinux практически нет ни манов ни доков, только книжки, разрозненные описания в расчёте на опору поддержки дистростроителями готовых политик (что хорошо делается только в Федоре).
комментариев: 9796 документов: 488 редакций: 5664
Набор стандартных модулей, согласованных с вашим дистрибутивом, отлично будет защищать сервисы, которые с ним же и поставляются (CUPS, VPN, ssh). Можно подправить правила и для системного Tor (но не TBB). Это то, как SELinux работал всегда, будучи ориентированным на серверы. Для десктопа есть немного готовых модулей для программ (gnupg, mplayer).
Чтобы не мучиться с составлением с нуля модуля для программ, можно отдельного анонимного пользователя дополнительно запускать с готовой SELinux ролью user_u, прописать, чтобы при логине эта роль автоматически накладывалась и назначались соотв. SELinux-права в хомдире. Пользователь с этой ролью может не бояться эксплойтов, которые повышают свои привилигии до рута (если не будет эксплойтов против самого SELinux или его конкретных настроек). Во-первых получить права рута сложнее: чтение и работа с некоторыми системными файлами для пользователя с такой ролью ограничены, нет возможности запускать суидные файлы, пользоваться пингом, su, sg, sudo и любой программой, меняющей UID/GID. Во-вторых, если рут даже получен, то он выглядит очень забавно (как не рут) — он практически ничего не может, т.к. находится в том же пользовательском SELinux-контексте.
В новых версиях SELinux ещё больше интересных возможностей и утилит (в плане взаимодействия с сетевыми возможностями как напрямую так и посредством iptables, совместное использование с виртуалками и "квазивиртуалками" – LXC), но вся разработка ведётся на Fedora Linux, а в другие дистрибутивы всё переходит очень медленно.
Кстати, в одной из рассылок натыкался на давний вопрос, "почему нет файрволла, работающего на уровне приложений?". Ответ от разработчиков примерно в таком же духе, что "без соответствующего контекста безопасности, накладываемого на приложение, любой локальный файрволл будет бесполезен".
Конечно, как и в курсе того, что при этом было много ругани на тему «SeLinux работает только в дефолтной поставке, а при малейшем изменении настроек под себя (ну среднестатистическому пользователю федоры зачем анонимность? А вам она может понадобиться) получается что-то такое». В итоге SeLinux превратился в средство «работает, если ничего не трогать и не менять» (по словам пользователей той же федоры — за что купил, за то и продаю).
В нативной системе защиты вектор угроз, как правило, настолько отличается от ваших, что сам вопрос доверия теряет смысл: они строят защиту от одного, а вам нужна защита от другого. Кого будет волновать утечка серийников железа, MAC-адресов сетевых? Даже разработчики целевых решений для анонимности порой прокалываются так, что должно быть совсем стыдно. Я считаю, что если вы понимаете что и как работает (а это не так сложно, как кажется) в плане анонимности, вы сделаете свою систему более безопасной, чем искаробочное решение. К тому же про правила SeLinux, защищающие от утечек информации о железе и самой ОС, на которой целевой софт работает, я не слышал. Когда будет стандартизированное решение (пока Qubes самое близкое к тому), тогда можно будет говорить о его выборе.
судитьчитать форум невзирая на лица: я тоже иногда говорю чушь, и меня поправляют. Страшно сказать, но даже сам unknown иногда бывает не прав, и его тоже поправляют. В чём смысл анонимных постов — описано в /comment39243. Истинность высказываний не зависит от того, кто их произносит, так что надоЕщё один всё понялНу почему, где-то половина гостевых постов — не мои. Есть насколько человек (не более десятка — зарегистрированные и незарегистрированные вместе), которые тоже иногда что-то пишут. И ещё есть много новичков, которые приходят, задают вопрос, получают ответ, уходят, и больше никогда не возвращаются. На самом деле сложившаяся ситуация хороша, т.к. неоправданно быстрый рост популярности моментально приводит к падению качества материалов и постов на сайте, а так это пока что-то типа коллективного блога.Ну как же, remote считают (причём даже их — только в умолчальной установке ОС), а local — нет. Уже это — прозрачный намёк. Скорее, отношение к local root у всех такое, не только у OpenBSD'шников: считается, что
Наверное, можно найти и конкретные цитаты, но сходу не вспоминается ничего такого.
И как у него насчёт прав к просмотру конфигурации системы и типа железа, настроек сети? Если есть два разных юзера (например, один анонимный, а другой нет), оба с правами user_u, могут ли они потенциально определить (не ограничиваем их в средствах), что запущены физически на одной и той же ОС/железе?
Мы же начали вроде с того, что приложение запускается из-под отдельного пользователя, которому запрещён доступ в сеть? И тем более каких-то условий анонимности заявлено не было. Это вы уже о чём-то о своём, батенька, пошли.
Про утечки SELinux vs виртуалка согласен. Но виртуалки помимо спорной защищённости приносят и другие неудобства: дополнительные затраты ресурсов, оверхэд, время на разворачивание.
remote-дырки считают, потому что они наиболее опасны.
Спасибо, Капитан Очевидность! Но не забивают же? Серьёзная уязвимость, фиксят быстро, чего вам не хватает?
Домысливая за разработчиков в духе spinore можно в итоге придти к:
- десктопы не популярны, не приносят дохода, да и *nix это серверная ОС вообще
- исходя из п.1 разработчики смотрят сквозь пальцы (sic!) на все десктоп-ориентированные дыры
- исходя из п.1 и п.2 *nix нисколько не претендуют в качестве безопасной ОС
Подытоживая всё вышесказонное: Linux и BSD на десктопе не нужны. Windows лучшая ОС, т.к. она делается для десктопов.Да, нить разговора и контекст потерялся. С другой стороны, если не беспокоиться об анонимности, то непонятно откуда взялось требование про «запрещён доступ в сеть» (выдумать такие условия можно, но да ладно).
Если речь идёт про настоящую паравиртуализацию (Xen), то основные затраты — время на разворачивание. Оверхед, пишут, действительно есть, но он отрицательный:
Из нахождения дыры не делается соответствующих выводов, не всегда даже поднимается шум; что касается части таких дыр, их долгое время считают неважными до тех пор, пока кто-то со стороны не напишет эксплоит и не выложит его в паблик (увы, и такое было). И я уж не говорю о том, что есть масса дыр чуть послабее, чем local root, но которые довольно опасны с точки зрения анонимности. Но главный посыл — «нас всех всё устраивает», т.е. слишком
прагматическоеэкономическое отношение к безопасности: «пока ОС/программа не настолько дырявая, чтоб из-за этого терять популярность, мы и серьёзного внимания этому уделять не будем». Наиболее наглядно такую стратегию можно видеть на примере числа дыр в Firefox c нежеланием разработчиков что-то с этим делать. Фичи уже давно стали важнее на рынке, чем безопасность. Потребность в высокой безопасности/анонимности — исключительный случай, потому решений на рынке под него практически нет. Сам Linus, называющий OpenBSD'шников онанирующими на безопасность обезьянами, признавался, что Linux никогда не делался с расчётом быть «безопасной ОС номер один: Linux предполагался быть лишь достаточно хорошим во всём, в том числе и в плане безопасности». Одним словом, анонимы — маргиналы, и никто под них подстраиваться не будет. Это всё какие-то банальные вещи, их совсем скучно обсуждать, тем более в духе холиваров.Нет, в Windows всё то же, только помноженное ещё на сумасшедший коэффициент. В support MS приватно заявляют о серьёзном баге, а те не чешутся до тех пор, пока этот баг на начнёт несколько месяцев/лет спустя массово использоваться зловредами.
Когда-то давно читал интервью, с Linus'ом, что ли, там было про его ругань в духе «новые патчи к ядру принимаются в среднем каждые 15 минут, всем интересней добавлять новые фичи и никто не беспокоиться о тестировании и приведении в порядок», типа «надо с этим что-то делать». Всего такого было много, но точные ссылки не привести. С другой стороны, достаточно ввести в гугле ключевые слова, как сразу находится вот такое (ссылка старая, но тем не менее). Не так давно на pgpru ещё были посты о том, что 2.4 безопасней 2.6, потому некоторые предпочитали не обновляться до 2.6 (сейчас это неактуально). Наверное, всё это не от хорошей жизни... К тому же, с течением времени сложность кода растёт, а безопасность, видимо, падает, т.к. при прочих равных чем сложнее система, тем тяжелее за всем уследить.
У OpenBSD есть список security holes, которые официально учитываются. Также, есть просто список (прочих) ошибок в релизах (reliability fix'ы туда идут, к примеру). Как можно видеть хотя бы из этого, remote DoS, приводящий к панике ядра, попал в один список с reliability fix'ами, а не в список ошибок безопасности. Более того, порывшись в этом списке, можно найти много чего интересного и подумать, как это связано с реальной безопасностью в ОС, и почему оно не продублировано в списке security. Понятно, что в случае remote DoS логика была банальной: атакующий не получит доступа к данным, потому это не ошибка безопасности. Насколько я помню, были тут и ещё более вопиющие примеры.
а если я задам вопрос о проекте JanusVM здесь, это будет по теме?
комментариев: 11558 документов: 1036 редакций: 4118
Отвечено.
P.S. Никогда бы не подумал, что SATtva читает этот топик :-)
комментариев: 43 документов: 0 редакций: 7
Полное отделение операционной системы от реального железа – вот логичный путь дальнейшего развития изоляции. По сути опять получается инкарнация старого спора микроядерная архитектура vs монолитное ядро, только теперь каждая программа(в общем смысле слова, файрволл, firefox итд, в зависимости от задач), которой желательна полная изоляция от железа работает на собственной ОС и фактически уже не способна видеть другие изолированные программы и влиять на них через реальное железо. Раньше просто не было ресурсов для таких мероприятий. При этом идею SE отвергать не нужно ибо оно работает на ring0, а гипервизор работает на ring-1 и ничем не мешает работе SE или AppArmor
Разве? Ну системные квоты же есть. Их можно заранее постестировать на эффективных fork-бомбах типа этой.
Это какой-то дешёвый гипервизор, раз он в ring 1:
Опять Linux со своим kvm портит понимание пользователям, что такое настоящий (Type 1) гипервизор с паравиртуализацией?