SELinux, AppArmor и др. системы безопасности
Цитата с другой ветки[link1], обсуждение перенесено сюда в отдельно созданную тему.
> Но безопасность в контексте браузера это фантастика, на сегодняшний день.
SELinux по идее должен защищать пользовательское пространство от уязвимостей в приложениях. Правда я пока не освоил эту технику. Может кто из знающих людей покажет пример? Предположим, нужно изолировать браузер Firefox
Вот пример создания политики для гуглохрома:
http://danwalsh.livejournal.com/32759.html
Или пример использования киоск-режима:
http://danwalsh.livejournal.com/11913.html
Но всё вменяемо работает только в Федоре (в нём ведётся официальна разработка), в других дистрах поддержка SELinux не очень хорошая (местами плачевная) и стабильно отлажена только в расчёте на запуск серверов. Многих утилит, фич просто может не быть. Особенно для юзер-приложений и иксов.
>Как написать политику для браузера? Если будет реальный рабочий пример, то для всех остальных приложений можно написать самостоятельно по аналогии.
А вы уже пробовали как-то работать хотя-бы с готовыми политиками? Про всякие тонкости с "domain transition" внятно себе представляете?
По SELinux практически нет ни манов ни доков, только книжки, разрозненные описания в расчёте на опору поддержки дистростроителями готовых политик (что хорошо делается только в Федоре).
Ссылки
[link1] https://www.pgpru.com/comment38549
[link2] https://www.pgpru.com/comment34744
[link3] https://www.pgpru.com/novosti/2007/vrassylkeopenbsdproshloobsuzhdenieselinux
[link4] https://www.pgpru.com/comment25761
[link5] https://www.pgpru.com/comment32254
[link6] http://www.novell.com/linux/security/apparmor/selinux_comparison.html
[link7] http://www.linux-magazine.com/issue/69/AppArmor_vs_SELinux.pdf
[link8] http://securityblog.org/brindle/2006/04/19/security-anti-pattern-path-based-access-control/
[link9] https://www.pgpru.com/comment38583
[link10] http://selinux-mac.blogspot.com/
[link11] http://sapunidze.blogspot.com/2009/06/selinux-1-selinux.html
[link12] https://www.pgpru.com/comment32246
[link13] http://en.wikiquote.org/wiki/C._A._R._Hoare
[link14] http://www.ibm.com/developerworks/ru/library/l-bastille/index.html?S_TACT=105AGX99&S_CMP=GR01
[link15] http://www.pgpru.com/forum/anonimnostjvinternet/torbrowserbundleipaketnyjjtor
[link16] https://www.pgpru.com/comment34765
[link17] http://danwalsh.livejournal.com/45194.html
[link18] https://www.pgpru.com/comment52970
[link19] https://www.pgpru.com/comment38612
[link20] https://www.pgpru.com/comment38574
[link21] https://www.pgpru.com/comment38599
[link22] https://www.pgpru.com/comment21230
[link23] https://www.pgpru.com/comment32257
[link24] http://www.openbsd.org
[link25] https://www.pgpru.com/comment48294
[link26] https://www.pgpru.com/comment43202
[link27] https://www.pgpru.com/comment52971
[link28] https://www.pgpru.com/comment39243
[link29] https://www.pgpru.com/comment43968
[link30] https://www.pgpru.com/comment44596
[link31] https://www.pgpru.com/comment51089
[link32] https://www.pgpru.com/comment50980
[link33] https://en.wikipedia.org/wiki/NetBSD
[link34] https://www.linux.org.ru/news/linux-general/789284
[link35] https://www.pgpru.com/comment9814
[link36] http://openbsd.org/security.html
[link37] http://www.openbsd.org/errata45.html#002_pf
[link38] http://www.linux.org.ru/news/security/3639847
[link39] http://openbsd.org/errata.html
[link40] https://www.pgpru.com/forum/anonimnostjvinternet/janusvm
[link41] https://www.pgpru.com/comment53178
[link42] https://www.linux.org.ru/forum/talks/1398974?cid=1399115
[link43] http://www.virtuatopia.com/index.php/An_Overview_of_the_Hyper-V_Architecture
[link44] http://blog.xen.org/index.php/2008/08/27/xen-33-feature-memory-overcommit/
[link45] http://huanliu.wordpress.com/2012/03/13/amazon-data-center-size/
[link46] http://www.dedoimedo.com/computers/xen-console.html
[link47] http://www.opennet.ru/opennews/art.shtml?num=32703
[link48] http://files.qubes-os.org/files/doc/arch-spec-0.3.pdf
[link49] http://qubes-os.org/trac/wiki/UserFaq
[link50] http://www.blogger.com/profile/07657268181166351141
[link51] http://invisiblethingslab.com/itl/About.html
[link52] https://www.pgpru.com/comment38597
[link53] http://invisiblethingslab.com/itl/Resources.html
[link54] https://www.pgpru.com/comment67748
[link55] https://www.pgpru.com/comment68173
[link56] https://en.wikipedia.org/wiki/Pretty_Good_Privacy#Network_Associates_acquisition
[link57] http://oss.tresys.com/projects
[link58] https://www.linux.com/learn/tutorials/560928-counting-contributions-who-wrote-linux-32
[link59] http://arstechnica.com/business/2012/04/linux-kernel-in-2011-15-million-total-lines-of-code-and-microsoft-is-a-top-contributor/
[link60] https://www.pgpru.com/comment67915
[link61] https://www.pgpru.com/comment51160
[link62] https://en.wikipedia.org/wiki/Blum_Blum_Shub
[link63] http://www.fas.org/irp/nsa/rainbow/tg030.htm
[link64] https://www.pgpru.com/biblioteka/osnovy/fondpoleznyhpostov/raznoe#fppA3
[link65] http://www.thg.ru/software/joanna_rutkowska_interview/joanna_rutkowska_interview-01.html
[link66] http://www.thg.ru/software/joanna_rutkowska_interview/joanna_rutkowska_interview-02.html
[link67] https://www.pgpru.com/comment34715
[link68] http://www.theregister.co.uk/2013/09/10/torvalds_on_rrrand_nsa_gchq/
[link69] https://www.pgpru.com/comment59253
[link70] https://www.pgpru.com/comment50109
[link71] http://www.securelist.com/ru/blog?print_mode=1&weblogid=207768920
[link72] http://linuxtesting.ru/results/report?num=L0004
[link73] http://linuxtesting.ru/results/report?num=L0002
[link74] http://fxr.watson.org/fxr/source/fs/cifs/md5.h?v=linux-2.6#L16
[link75] http://www.inggross.de/archiv/www.cryptonym.com/msft-nsa.html
[link76] http://guruadmin.ru/page/4-metoda-otkljuchenija-selinux#comment-966
[link77] https://www.pgpru.com/comment69101
[link78] https://tails.boum.org/contribute/design/application_isolation/
[link79] https://www.pgpru.com/comment79837
[link80] https://www.pgpru.com/comment79842
А может чем-то попроще воспользоваться? Apparmor-ом, например. Политики писать точно сильно проще.
Какие у него есть фундаментальные недостатки относительно SELinux?
/comment34744[link2] Былинные чудеса поиска, sentaus. Вы слишком редко участвуете в срачах на pgpru :)
Точно, видимо, я тогда это не читал, иначе бы запомнил.
unknown,
а можно на это ссылочку? Гугль что-то у меня молчит как партизан.
Обсуждали раз[link3], два[link2], три[link4], четыре[link5].
Этот вопрос заслуживает отдельной темы.
Только модель SELinux является формально полной из всех возможных (и за счёт попытки объять необъятное невероятно сложной, многое упирается в разработку средств упрощения работы с готовыми политиками и макроязыком для создания новых), а AppArmor простой за счёт крайней ограниченности, которую разработчики SELinux и независимые эксперты безопасности считают фундаментальным изъяном всей идеи.
В итоге толку от обоих может быть мало — один плохо настраивается и толком не работает, другой добавляет столь мало безопасности, что иногда больше создаёт её иллюзию.
Есть ещё концепт безопасности от Джоанны Рутковской через всеобщую раздельную виртуализацию : http://www.qubes-os.org/Home.html
Также IMHO намного слабее SELinux (хотя может использоваться совместно — какой-то монстроидально-параноидальный кошмар), завязан на закрытые проприетарные стандарты Intel, но зато искаробочный и рассчитанный на потребности рядового десктопного пользователя.
Реклама от Новелла[link6], какой сложный и неудобный SELinux.
Статья[link7] с мнениями двух сторон. Поверхностная, технические детали освещены слабо, но как можно проводить эскалацию привилегий в AppArmor показано.
Просто, когда тыкают в ужасный код модулей SЕLinux, не понимают, что он описывает не просто права доступа, но все возможные потенциальные действия компонентов программы, включённых в домены безопасности (например — не положено такой-то проге иметь выход в сеть или положено только определённым образом, порты, сокеты, доступ к ресурсам ядра и др. и сделано это не по путям, метки принадлежности к домену проставлены на уровне ФС, а никто из домена не сможет сбросить контекст для перехода к пользователю в другом домене, если не прописаны переходы доменов, так что даже получив эксплойтом рута за пределы этих политик не выйти).
В сети есть демо-машинки с рутовым доступом по ssh для желающих помучать SELinux, никто вроде не взломал за много лет.
Спасибо, рекламу от новелля гугль давал сразу – и в основном только её, а вот вторую статью я не находил.
Сейчас нашёл ещё вот это:
http://www.isoc.org/isoc/conferences/ndss/09/pdf/16.pdf
А реально это настроить по аналогии самому на произвольной оупенсурц-ОС, которая поддерживает Xen? Это намного сложнее просто запуска машин в виртуалках Xen + минимальная доводка?
Скорее малореально, полистайте пэдээфку к работе в конце страницы: http://qubes-os.org/Architecture.html
Много всяких наворотов, чтобы безопасный буфер обмена работал, чтобы это всё не тормозило и т.д.
Ну и концепция виртуализации для защиты раньше оценивалась скептически. Докажет ли Рутковская обратное — неизвестно.
Для безопасности API в ядре был выбран SELinux, другие альтернативы рассматривались (в том числе AppArmor):
http://lwn.net/Articles/181508/
Вот подробное описание[link8] неполноценности ограничивающих моделей ACL по путям (AppArmor, etc).
Работа, которую привели выше[link9] интересна тем, что на практике показывает, что реально используемые правила AppArmor немного безопаснее SELinux, но там рассматривается доступ, который злоумышленник может получить к дополнительным утилитам только определённым способом и не рассматриваются другие возможные способы.
Судя по количесту багов даже в правилах, поставляемых самими разработчикам SELinux, вполне возможно, что он хорош в теории, а на практике многое в плачевном состоянии.
SELinux Mandatory Access Control[link10];
...: SELinux Lockdown, 1: пользователи SELinux[link11];
Спасибо. Я имел в виду, что если можно настроить не патча никакой код – это одно (уровень продвинутого администрирования), а если нужно что-то патчить – то другое (уровень (системного) программиста). Мну не программист, потому второй вариант заведомо отсекается.
"Для защиты" – понятие растяжимое: защиты от чего? В идеологии TdR[link12] виртуализация не помогает, но там имелась в виду защита от атак не слабее local root, что как раз актуально для серверных приложений, где почти нет прикладного софта (файерволлы и прочее есть часть ядра ОС). Чаще реалистичней другая угроза: выполнение дырявых приложений в ОС, которая полагается приемлемо защищёной (нет local root дыр). В таком случае как раз виртуализация и помогает, особенно в плане анонимности: дырявое приложение может получить доступ как к параметрам конфигурации системы и железа, так и к файлам других программ, выслав которые по анонимному каналу можно деанонимизировать пользователя, либо, как минимум, слить нежелательную информацию, даже если анонимность не преслудется как самоцель. Для защиты от такого сценария как раз разумно разделить программы на "классы эквивалентности", и выполнять разные программы в разных виртуалках/ОС. В целом задача решается на уровне стандартной настройки виртуализации и/или гипервизора, при этом Рутковская (как я понял), ещё как-то улучшила эту конфигурацию.
Напомнило мне известную цитату:Hoare[link13]. Как тонко подмечено! :)
Пробовал, но познания у меня пока поверхностные на уровне SELinux User Guide от Федоры
http://docs.fedoraproject.org
Что такое "domain transition" знаю, про возможные тонкости – нет.
Спасибо за комментарии и ссылки.
А кто что может сказать хорошего/плохого про Bastille-linux?
http://bastille-linux.sourceforge.net/
http://www.ibm.com/developerwo.....=105AGX99&S_CMP=GR01[link14]
Это просто диалоговый конфигуратор-"отключатор", удаляющий ненужное из системы. То что опытный админ (продвинутый пользователь) может сделать вручную. И эта штука заведомо будет отставать от новинок в системе.
гыгыг
в статье про бастиллу аффтар защищает линукс систему, поднятую под вирт. машиной под физической виндой :)
Вообще так прочел статью – ничего интересного для моей системы в плане ее защиты она не дает, т.к. часть вопросов решена в Debian по-дефолту, остальная часть настроек уже зада мною (да, если бы я знал про эту систему, может быть не делал это руками, но раз уж сделал :)), пара из них мне не нужна.
Но, учитывая, что автор работает в администрации Краснодарского края :), конечно для кубаноидов м.б. полезная система, ибо у них там ну просто очень много тупоголовых. В частности, демонстрирующих работу линукс-системы под вирт. машиной, поднятой под кривой вендой :)))
Кто вникал в суть, подскажите: как так получается, что Xen — полностью свободен и открыт, а Qubes, на нём основанный, жизненно требует каких-то "закрытых проприетарных стандартов"? Может, не во всех конфигурациях?
Возможно, действительно не во всех. В описаниях там явно упоминается использование TPM-чипа против атаки "злонамеренной уборщицы" и идёт упор поддержки виртуализации на аппаратном уровне от Intel для ёщё чего-то.
От DMA, видимо, если речь идёт о VT-d.
Вообе говоря, почему бы и нет – сделать на основе открытой вещи что-то специализированное. Вот если наоборот – было бы странно...
А если уборщицу исключить как угрозу и рассматривать чисто программную изоляцию данных? Просто Xen в минимальной функциональной форме сам по себе ничего такого не требует в применении к Linux'ам, даже аппаратной поддержки. Я понимаю, если бы они винду хотели в domU засунуть.
Сама Рутковска ничего специально не закрывает и не опроприетаривает, насколько я понимаю.
unknown, как мы поняли отсюда http://www.pgpru.com/forum/ano.....rbundleipaketnyjjtor[link15] и из рассылки Tor, Вы очень продвинулись в деле юзанья SELinux.
Может быть, напишите на досуге раздел в FAQ по данному вопросу?
Там конечно много полезных вещей. Например запрет пинга не руту, просмотра dmesg и /proc по-умолчанию. Защита хотя бы таких стабильных программ, как ssh, dhcp или gpg.
Но вообще, SELinux всё ещё кривой и ужасный. По крайней мере в исполнении Debian. Приходиться использовать только стандартные политики (выучить и понять весь его синтаксис нет сил), выгружать часть глючных модулей (оставляя часть программ без защиты). Те модули, которые относительно успешно можно запустить хотя бы с глюками, есть возможность дополнять своими политиками в соответствии с тем, что выдаёт audit2allow, что есть неправильно и заведомо опасно (но лучше, чем совсем без них). И после каждого обновления есть шанс получить много геммороя с поиском причин глюков и перенастройкой. Стандартную поставку очень хреново обновляют. Иногда приходиться его полностью отключать (превращение защиты в театр). Но хоть какая-то защита (по принципу — в плане защиты SELinux не делает хуже, он может сделать "лучше, чем ничего" или ничего не сделать).
Надеюсь, что в будущем им можно будет пользоваться нормально. А так, поделиться в плане некривых и верных решений пока нечем.
А что можно сказать про аналогичные решения усиления безопасности для платформы FreeBSD? Они существуют? они стабильны и эффективны или дело еще хуже чем с SELinux?
/comment34765[link16]
Все эти замечания справедливы только в одном случае, когда отсутствует 0-day в ядре, т.е. будь-то мандатный контроль доступа и/или ролевой, он может дополнить заплатанное PAX/grsecurity ядро. Найти уязвимость наверное можно и в песочнице SELinux, а последняя представляет из себя модуль безопасности ядра, здесь[link17] об этом есть немного.
Продолжение обсуждения от /comment52970[link18]
А что ему может позволяться? Боитесь, что потрёт файлы чужих программ, или тех, с которыми работает? Если среда враждебная до такой степени исключительности, а данные настолько критичны, запускайте его от отдельного юзера, где больше ничего нет, предварительно дав ему копию файла для чтения. Если боитесь local root, запустите виртуалке, где ничего кроме него нет. И даже это, пожалуй, будет сделать намного проще и надёжней, чем самопальные правила для SELinux, собранные на коленке.
Почему вы так уповаете на надёжность виртуалок? На форуме это обсуждалось[link12] уже.
Ну обсуждалось, и что? Да, я когда-то обсуждал это с unknown'ом, теперь вы ссылаетесь в споре со мной на мой же пост, lol. Итог этих обсуждений я озвучивал в /comment38612[link19]. Раз уж на то пошло, обратите внимание и на критику SeLinux:
Были и другие посты, суть которых сводилась к тому, что SELinux настолько сложен, что обычным пользователям (даже достаточно опытным) он попросту не под силу. Скорее, это уровень коммитеров в ядро, причём хорошо понимающих, как разные системы ОС/ядра взаимосвязаны между собой.
Если говорить на языке ИБ, векторы атаки для анонимов и для TdR совершенно разные. Что касается основного детища TdR, OpenBSD, в ней на local root сквозь пальцы смотрят, да и цитата говорит о том же. Виртулаки — не панацеи, но довольно эффективны в качестве средства изоляции враждебного окружения как от сети, так и от знания реальных параметров железа. У разработчиков же OpenBSD анонимность, шифрование дисков и тому подобные вещи имеют низкий приоритет: «им нечего скрывать» на их рутерах, и уже тем более они не рассматривают получение к ним физического доступа атакующим.
spinore, ну вы бы тогда подписывались что ли. Или я должен детектировать вас, хотя вы даже не потрудились имя в поле вписать? К чему упрёк?
Хотя, здесь похоже кроме вас с SATtva, да unknown и нет никого.
И я дал ссылку на цитату и дальнейшее обсуждение скорее, там в посте кроме неё ничего нет.
Смелое заявление. Подкрепите словами Тео? Цитата про remote holes ни о чём не говорит.
Насчёт сложности SELinux. Вы конечно же в курсе, что оно по дефолту включено в федоре? Пользователи, судя по всему, жалуются всё меньше и меньше (субъективно, конечно). Имеются подробные доки и кое-какие гуи-утилиты.
А вообще, я и не говорил, что оно простое. Но у меня больше доверия к нативной системе защиты, чем к сделанным совсем для других целей инструментам. Впрочем, в качестве quick&dirty решения — согласен, годится.
По поводу SELinux, там есть медленные улучшения для рядового пользователя.
Набор стандартных модулей, согласованных с вашим дистрибутивом, отлично будет защищать сервисы, которые с ним же и поставляются (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 работает только в дефолтной поставке, а при малейшем изменении настроек под себя (ну среднестатистическому пользователю федоры зачем анонимность? А вам она может понадобиться) получается что-то такое[link25]». В итоге SeLinux превратился в средство «работает, если ничего не трогать и не менять» (по словам пользователей той же федоры — за что купил, за то и продаю).
В нативной системе защиты вектор угроз, как правило, настолько отличается от ваших, что сам вопрос доверия теряет смысл: они строят защиту от одного, а вам нужна защита от другого. Кого будет волновать утечка серийников железа, MAC-адресов сетевых? Даже разработчики целевых решений для анонимности порой прокалываются[link26] так, что должно быть совсем стыдно. Я считаю, что если вы понимаете что и как работает (а это не так сложно, как кажется) в плане анонимности, вы сделаете свою систему более безопасной, чем искаробочное решение. К тому же про правила SeLinux, защищающие от утечек информации о железе и самой ОС, на которой целевой софт работает, я не слышал. Когда будет стандартизированное решение (пока Qubes самое близкое к тому), тогда можно будет говорить о его выборе.
судитьчитать форум невзирая на лица: я тоже иногда говорю чушь, и меня поправляют. Страшно сказать, но даже сам unknown иногда бывает не прав, и его тоже поправляют. В чём смысл анонимных постов — описано в /comment39243[link28]. Истинность высказываний не зависит от того, кто их произносит, так что надоЕщё один всё понялНу почему, где-то половина[link29] гостевых постов — не мои. Есть насколько человек (не более десятка — зарегистрированные и незарегистрированные вместе), которые тоже иногда что-то пишут. И ещё есть много новичков, которые приходят, задают вопрос, получают ответ, уходят, и больше никогда не возвращаются. На самом деле сложившаяся ситуация хороша[link30], т.к. неоправданно быстрый рост популярности моментально приводит к падению качества[link31] материалов и постов на сайте, а так это пока что-то типа коллективного блога[link32].Ну как же, remote считают (причём даже их — только в умолчальной установке ОС), а local — нет. Уже это — прозрачный намёк. Скорее, отношение к local root у всех такое, не только у OpenBSD'шников: считается, что
Наверное, можно найти и конкретные цитаты, но сходу не вспоминается ничего такого.
И как у него насчёт прав к просмотру конфигурации системы и типа железа, настроек сети? Если есть два разных юзера (например, один анонимный, а другой нет), оба с правами user_u, могут ли они потенциально определить (не ограничиваем их в средствах), что запущены физически на одной и той же ОС/железе?
spinore, заканчивайте троллить и приводить цитаты из темы Юмор. Я прекрасно понимаю смысл анонимных постов, я конкретно отвечал вам на
Мы же начали вроде с того, что приложение запускается из-под отдельного пользователя, которому запрещён доступ в сеть? И тем более каких-то условий анонимности заявлено не было. Это вы уже о чём-то о своём, батенька, пошли.
Про утечки 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 минут, всем интересней добавлять новые фичи и никто не беспокоиться о тестировании и приведении в порядок», типа «надо с этим что-то делать». Всего такого было много, но точные ссылки не привести. С другой стороны, достаточно ввести в гугле ключевые слова, как сразу находится вот такое[link34] (ссылка старая, но тем не менее). Не так давно на pgpru ещё были посты о том, что 2.4 безопасней 2.6[link35], потому некоторые предпочитали не обновляться до 2.6 (сейчас это неактуально). Наверное, всё это не от хорошей жизни... К тому же, с течением времени сложность кода растёт, а безопасность, видимо, падает, т.к. при прочих равных чем сложнее система, тем тяжелее за всем уследить.
Это так, пока предмет разговора прост и обозрим (для слушателя), а реальные предметы чаще всего не таковы, поэтому и становиться важно КТО говорит – его порядочность и компетентность в обсуждаемом вопросе, поскольку иначе не хватит времени на вникание в любую малознакомую тему для проверки сказанного. Количество переходит в качество.
У OpenBSD есть список[link36] security holes, которые официально учитываются. Также, есть просто список (прочих) ошибок[link37] в релизах (reliability fix'ы туда идут, к примеру). Как можно видеть хотя бы из этого[link38], remote DoS, приводящий к панике ядра, попал в один список с reliability fix'ами, а не в список ошибок безопасности. Более того, порывшись в этом списке[link39], можно найти много чего интересного и подумать, как это связано с реальной безопасностью в ОС, и почему оно не продублировано в списке security. Понятно, что в случае remote DoS логика была банальной: атакующий не получит доступа к данным, потому это не ошибка безопасности. Насколько я помню, были тут[link39] и ещё более вопиющие примеры.
жесткая полемика с кучей цитат.. страшно становится.
а если я задам вопрос о проекте JanusVM здесь, это будет по теме?
Не будет. Почему не задать его непосредственно в теме[link40] по JanusVM?
спасибо. там тема мертвая и видимо никому не интересная, т.к. кто специалист в Unix, тот сам себе такое сделает. а у простых пользователей стало быть не популярен.
Отвечено[link41].
P.S. Никогда бы не подумал, что SATtva читает этот топик :-)
в SE вынесена часть логики в конфигурацию. Это тоже не очень хорошо, так как в итоге всё зависит от качества конфигов каждой софтины, но гораздо лучше чем вообще ничего. Apparmor кроме этой же проблемы имеет меньшую изоляцию. Также на практике забывают маленький нюанс. Атака на сервер может быть произведена в виде перегрузки системных ресурсов(для этого хватит минимума прав), что вызовет увеличение числа ошибок работы с устройствами, что в свою очередь не сказывается на безопасности положительным образом или просто вызовет останов части или всех сервисов этого сервера, что в реальном мире вызывает не только остановку сервера, но и может опять же негативно сказаться на его безопасности из-за человеческого фактора во время попыток системных администраторов, находящихся под сильным давлением менеджеров, восстановить работоспособность системы в кратчайшие сроки. На практике атаки на отказ в обслуживании отнюдь не редкость и SE никак не решает проблему с защитой от таких атак.
Полное отделение операционной системы от реального железа – вот логичный путь дальнейшего развития изоляции. По сути опять получается инкарнация старого спора микроядерная архитектура vs монолитное ядро, только теперь каждая программа(в общем смысле слова, файрволл, firefox итд, в зависимости от задач), которой желательна полная изоляция от железа работает на собственной ОС и фактически уже не способна видеть другие изолированные программы и влиять на них через реальное железо. Раньше просто не было ресурсов для таких мероприятий. При этом идею SE отвергать не нужно ибо оно работает на ring0, а гипервизор работает на ring-1 и ничем не мешает работе SE или AppArmor
Разве? Ну системные квоты же есть. Их можно заранее постестировать на эффективных fork-бомбах типа этой[link42].
Это какой-то дешёвый гипервизор, раз он в ring 1:
Опять Linux со своим kvm портит понимание пользователям, что такое настоящий (Type 1) гипервизор с паравиртуализацией?
P.S.: Цитата взята с этой[link43] ссылки, забыл вставить.
1 != -1
правда ring -1 у amd вроде только
если атаковать скажем по нагруженному запросу сервер( для удобства пусть будет запрос к БД), то либо БД займёт все ресурсы если на неё квот нет, либо она будет очень плохо работать когда ресурсы есть. Даже двухуровневые квоты не спасают, это основная проблема серверов openvz
Как же тогда хостинги живут в такой агрессивной среде? Любой клиент виртуалки может повесить весь хостинг?
В контексте анонимности никто не запрещает сделать физически разные диски для разных гостевых ОС. Этим проблема с БД решается. Да и если пользователь находится за компьютером, вряд ли он не заметит перегрузки по ресурсам, причём такой, которая сразу на обеих гостевых ОС (где работают разные программы и решаются разные задачи).
Квота на CPU и память тоже выделяется Xen'ом (и даже динамически регулируема на лету — сколько из баллона надуешь[link44], столько и будет).
в openVZ или Jail таки да, один клиент может грохнуть всех других. Может также не запустится что нибудь, что требует 10 мб при свободных 200мб. Есть ещё много других радостей от прокачанного chroot.
Если речь вести о паравиртуализации, то там всё лучше, можно сказать всё по честному, но без hvm всё равно поломается что нибудь вроде SElinux, ну и windows нельзя будет запустить, что уже говорит о том, что гостевая ОС должна быть подготовлена специальным образом, т.е. не что хочешь, то и ставишь. hvm позволяет запустить почти что угодно в качестве гостевой ОС
Ну, наверное, на хостинге считают дыры в гипервизорах исключительным явлением? А без этого всё равно никуда не уехать. SELinux — это скорее защита внутри ОС от опасностей, исходящих из самой ОС, а не от соседних гостевых ОС. Хотя unknown писал, что и к виртуалкам его прикручивают.
Да, это понятно. Но для домашнего использования самое важное упущение не это, а то, что проброс PCI-устройств без хардварной поддержки (HVM) не заработает.
например у амазона около 0.5 млн физических серверов[link45]. Если в гипервизоре будет дырка, то все 0.5 млн серверов можно смело считать скомпрометированными. Думаю прилагаются большие финансовые усилия в обеспечении изоляции виритуальных машин друг от друга.
Да, но не понятно где выполняется SE, в ring3 что ли?
Да, совсем забыл, игры не запустить будет.
А насколько сложно на практике поддерживать виртуализированную ОС в актуальном состоянии со всеми апдейтами и пр.?
Сложность не только первоначальной установки/настройки, но и регулярного обновления/обслуживания используется как один из аргументов в пользу AppArmor/SELinux/etc.
Если в системе есть какие-то стабильные сервисы, которые надо защищать в первую очередь (к сожалению, tor не очень стабилен, но проблемы с ним в SELinux разрулить оказалось несложно), то можно их обновлять, и если применять на пользовательской машине параллельные иксы или квазивиртуализацию LXC, то достаточно делать стандартным образом каждый раз только одно обновление для общей системы.
Если же есть масса раздельных, тщательно изолированных друг от друга виртуалок, да и ещё запутанных слоями-каскадами, то поддержание всей этой структуры в актуальном состоянии кажется сложным.
Для удобства рассматриваем XEN HVM.
Точно также, как обычную ОС на выделенном сервере
AppArmor и SE не заметят такой виртуализации. Настройка гостевой ОС не требуется почти никогда( конечно ОС внезапно могут понадобиться какие нибудь железки, которые XEN не виртуализирует. Тогда будет плохо )
В данном вопросе ситуация с hvm равнозначна ситуации с несколькими физическими серверами. Т.е. если tor у нас на отдельной машине, то хватит одного обновления.
есть xenconsole и вообще у всех гостевых ОС есть устройство терминал и сетевая карта, которые может дёргать хост. Вопрос в том как передать правильные обновления гостевым ОС. Можно настроить NAT, чтобы гостевые системы могли обновляться. Тут конечно вопрос насколько надёжен NAT и система обновления, но это от виртуализации не зависит. Хоть на реально изолированных серверах будет тот же вопрос.
Кто о чём :) Я имел в виду, что звука на будет, например. Точнее, мне трудно представить, как прозрачно туннелировать весь звук из domU в dom0. Аналогов xennet и xbd для звуковой я не видел. Может быть, в Linux они есть?
Чем-то оно даже проще: новую сборку можно заранее собрать в каком-то domU и протестировать, а потом централизованно накатить её на все остальные домены.
Это что-то типа
В NetBSD по умолчанию у гостевых ОС нет ни доступа к терминалу, ни к сетевой карте. Доступ — из-под виртуального сетевого интерфейса, бриджа. Если вы решили потом, пользуясь hvm, дать полный доступ к сетевой карте или какой-то tty-консоли — это уже на свой страх и риск.
звук можно настроить, у линуксов сейчас звуковая подсистема позволяет передавать прозрачно звук по сети на другой компьютер.
xm console domUname[link46]
Как нет, при создании domu виртуальная карта у гостя точно появляется, и виртуальное последовательное устройство тоже должно появляться( правда последнее перепиливали несколько раз, потому гарантировать нельзя )
Это правда[link47], что SeLinux никак не помогает от подобных уязвимостей?
По поводу модулей для виртуалок.
У SELinux есть какие-то готовые модули для этого, но как обычно, если внутри не ковыряться, то это вещь в себе, несмотря на то, что часть параметров в модулях обычно можно настраивать без компиляции.
В предыдущем абзаце получился стандартный образец отговорки, характерный для всех случаев, когда нечего конкретно сказать про SELinux ;-) Может кто-то разбирал подробнее.
arch-spec-0.3.pdf[link48]:
UserFaq[link49]:
Unknown, вглядитесь внимательно[link50] в глаза[link51] этой женщины. Как вы думаете, стоит ли ей верить[link52]? Уже три года прошло с тех пор, как вы вынесли[link20] тему на обсуждение.
Оформление интернет-страничек с публикациями у неё интересное, оригинальное[link53].
P.S. Навеяно комментом[link54]
Хотел сказать «Появилось ли что-то новое в плане мнения открытого сообщества по поводу её подхода?».
Наивный подход к виртуалкам ведёт к ресурсоёмкости и затратности: при обновлениях системы нужно обновить каждую виртуалку. Как у неё это там автоматизировано — не знаю. Переходить на другую параллельно загружаемую ось для безопасной работы — это надоедливый дуалбут.
Что ещё неприятно с виртуалками — всевозможные /dev/(u)random для сильного противника в них превращаются в тыкву. Даже если подключить доверяемый аппаратный ГПСЧ, то нужен специальный демон-брокер энтропии, который корректно транслирует энтропию внутрь каждой виртуалки. Никто всерьёз это не воспринимает и не использует.
Интереснее подход с псевдовиртуалками (LXC). Сами по себе они не дают безопасности (рут в LXC = рут в системе и выход из псевдовиртуалки). Но для LXC уже сейчас есть специальные правила SELinux, которые исключают такую возможность, делая их допустимо безопасными. Стоит отметить, что проблема анонимности за счёт профилирования железа при этом не решается.
В будущем LXC планируется допилить до безопасного состояния, чтобы даже SELinux был не нужен. Это имеет не только перспективы для безопасности, но и коммерческого применения (хостинги на однотипных версиях ОС). И всяко больше шансов интеграции с обычной ОС.
Можно сделать одну систему, которая будет снапшотом для остальных, и все гостевые системы клонировать с этого доверенного снапшота (одного или нескольких).
Qubes поддерживает установку собственных гостевых ОС в Qubes штатным образом. По сути Qubes играет роль обычного гипервизора типа Xen, только с примесью юзерофилии. Я не разбирался глубоко, но там есть инструкции, как поставить любую гостевую ОС, натыкался даже на инструкции по установке
MinixNetBSD в Qubes.С этим не поспоришь, в этом надо быть аккуратным.
А мужики-то не знают!Да ладно?! Я вам написал короткий комментарий[link55] на эту тему.Местное wiki — это пипец. Чуть больше
140 символов8-ми страниц — и всё, коммент (да и любой документ вики) начинает обрезаться, форматирование — портиться. Из-за этого какие-то жалкие 15 страниц экранных разворотов приходится разбивать на несколько комментариев, неудобно. Кто такие драконовские лимиты на максимальных объём текста поставил?Вы сами всё сказали.
Как я понял из ваших постов, SELinux для анонимности (не путать с безопасностью), который бы позволял прятать от пользователя какую бы то ни было информацию о системе и железе, вообще не развивают. А раз так, фингерпринтинг таких систем всегда будет висеть дамокловым мечом.
LXC при чтении вызывает стойкие ассоциации с LHC.
Как я понял, основная идея Рутковской (да и не только её, сейчас так многие рассуждают) в том, что индустрия софта показала, что безопасных программ у нас не будет в наличии никогда. И именно с этим придётся смириться и жить. Надеяться, что для всех неидеальных программ будет один идеальный SELinux, который магически решит все их проблемы, несколько наивно. В конце концов, SELinux — это тоже программы, в них самих могут быть баги. Альтернатива — осознать проблему и сразу строить архитектуру безопасности/анонимности/ещё чего-нибудь (подставить нужное) так, чтобы бажность программ нейтрализовывались другими программами более высокого уровня.* Во всяком случае, нормально настроить такую архитектуру несоизмеримо проще, чем детально разобраться с SELinux'ом.** Более того, при апдейтах всё будет продолжать работать как и ранее — это не SELinux, где небольшое изменение ядра может порушить все SELinux-костыли, которые были до этого настроены. Да и вообще гипервизор как-то слабо зависит от внутренностей ОС. Какие-то такие мысли.
*ACL, разделение доступа, разделение осей, гипервизоры, физически выделенные машины и т.д., зависит от задачи.
**На свете есть хоть один человек, который идеально знает ядро Linux, и потому у него не вызывает каких-либо проблем настройка SELinux под любую задачу? Вы писали, что, например, всё Debian-коммунити, вместе взятое, так и не осилило базовые патчи SELinux под последний релиз.
И так после каждого apt-get update; apt-get upgrade? Для всех n-цати анонимных профилей?
Получается, что:
Никто не надеется. Есть несколько векторов SELinux-защиты: отдельные программы, системные демоны и ограниченный пользователь (это неполный список).
С программами и демонами понятно. Для многих из них правил просто нет и они незащищены. Для других правила настолько глючат, что не допиливаются даже вручную. Для третьих вроде оно работает, но насколько это только видимость защиты — понять сложно.
С пользовательской ролью интереснее. Недоверенным пользователям (это все пользователи, которые ходят в сеть) по желанию присваивается роль с низкими привилегиями. Если они получат рута (что само по себе намного усложняется), он будет бесполезен. У него только UID=0, а SELinux-роль как у простого пользователя. Фактически — это не рут, чужих файлов и процессов он поиметь не может. У таких пользователей не работает sudo, ping, dmesg, ifconfig, доступ к /proc, запуск демонов из-под пользователя и много чего ещё. Это может спасти в случае уязвимости в TBB, но в особо хитрых случаях может быть и обойдено. Даёт ли это профилирование? В случае оптимального компромисса: если эксплойта нет — пользователь не отпрофилирован, если есть эксплойт — то он отпрофилирован, но только как невосприимчивый к этому эксплойту. Неплохой вариант компромисса. Хуже конечно, если эксплойт сможет обойти SELinux.
Там не только и не столько в ядре дело, но и во внутреннем синтаксисе SELinux. Не столько из-за ядра всё отваливается, сколько из-за всяких новых фич udev и пр.
Хуже то, что коммунити там никакое. В крайнем случае пишут модули и подкручивают правила на метаязыке, но исходный код кроме самого АНБ и его контракторов, похоже, вообще никто не пилит и не аудитит.
На самом деле, архитектуру надо серьёзно продумывать, но общие мысли таковы:
электрификации в тайгесети. Т.е. просто дом, в который можно прийти и поработать, где сеть не нужна.Ремонтироватьобновлять его можно редко.Не совсем так всё же. По возможности все нужные статические настройки софта вносятся в саму чистую копию, в снапшот. Далее команды сноса текущего дома rm -R и восстановления его из копии rdiff-backup -v5 -r now /снапшот /дом выполняются за секунды, поэтому большой проблемы не вижу. Да, есть вопрос дисциплины, надо себя приучить помнить, что любые изменения надо вносить в снэпшот или в него и в текущую версию сразу.
После каждого обновления TBB — да, безусловно. Кстати, чистой копии с TBB можно давать поработать в сети, чтобы она обросла свежей статистикой и сменила при необходимости guard'ы. По каким-либо сайтам из-под неё ходить, конечно, не надо.
При правильной инфраструктуре это как раз не страшно. Не обновили вы сейчас, не сделали амнезию в этой конкретной сесиии — не страшно. Главное — что есть готовая инфраструктура, и в любой момент времени позже вы можете навести порядок в системе, сделав всё, как надо. Когда же инфраструктуры нет вообще, сделать нельзя ничего. Если у вас утекли серийники, что мы можете сделать? Менять железо либо устанавливать гипервизор с набором осей, где и то и то — затратные действия, а если гипервизор с домами есть, достаточно обновить лишь проблемый дом. Если вы подозреваете взлом системы, что можно сделать, если система одна? Полностью переустанавливать, затрагивая вообще всё и все данные, останавливая всю работу со всем. Если же у вас подозрения по поводу конкретных жильцов конкретного дома, вы решаете эту проблему только с ним, а остальное продолжает работать, как работало даже без перезагрузки. Ну разве не удобно? Хостинги бы давно померли, если б все работали в одной ОС.
Так и я о том же: один раз помучаться с настройками для установки гипервизора и базовых домов, после чего можно менять системы, вносить обновления, и всё это не будет так накладно. То, что я предлагаю, не противоречит тому, что хотите вы. Вам никто не запрещает, если есть недостаток времени, держать временно один дом U с SELinux'ом и той его внутренней инфраструктурой, к которой вы привыкли. Но если вы хотите что-то поменять, какие-то программы или задачи переселить в другой дом, гипервизор у вас уже есть. Если же его нету, устанавливать его и настраивать (да ещё и с пробросом PCI-устройств) — занятие не для слабонервных.
Можно посмотреть в сторону не самых слабых ноутов. Мне наоборот кажется, что современные ноутбуки в несколько раз мощнее чем то, что реально необходимо. Конечно, они нашпигованы потенциальными или не совсем зловредами, с этим ничего не поделать.
В наш век место дешевеет быстрее, чем растут реальные потребности в нём. Терабайтный HDD лёгок и умещается в полладони. Куда вам больше? Для лишних домов можно использовать внешние диски.
Запрет доступа к программам хорош, когда те суидны. Если же не суидны, то вопрос надо ставить не о доступе к готовым программам, а о доступе к определённым библиотечным вызовам. Например, dmesg не суиден. Кто такому пользователю запретит написать собственный dmesg, скомпилить его сорсы и запустить? Конечно, все запреты должны быть фичами ядра, а не правами доступа к исполнимым несуидным файлам (к слову, так же можно обойти и запрет просмотра списков процессов, если какой-то умный админ убрал права с ps).
Насколько я понимаю, ограничения пользовательских привилегий в SELinux основаны на фильтрации системных вызовов.
Ядро.
Верно. Свои программы написать можно, но они также не будут работать, поскольку SELinux им не выдаст соответствующих capabilities. В этом, кстати, существенное отличие SELinux от AppArmor и других ACL-решений.
Согласен с обоими ораторами. Коммент про права к файлам и про «у таких пользователей не работает» был сделан только для большей ясности, чтобы публика не обольщалась таким закручиванием гаек, если что.
Ранее сообщали, что ядро не получается пересобрать полностью компилятором clang-llvm, из-ка кода по большей части связанного с криптографией(SELinux, IPSec, eCrypt). Потом появилась инфа, что пересобранное ядро удалось запустить. SELinux переписали или ядро запустили обходными путями?
SELinux не связан с криптографией, как и часть ещё чего-то, что мешало собрать ядро на clang. Но собирались рабочие ядра без этих фич, если они кому-то не нужны. Как там с этим сейчас — не в курсе.
http://www.nsa.gov/research/selinux/contrib.shtml
Network Associates Laboratories (NAI Labs) – это та компания, где Ф.Циммерманн был Senior Fellow и она специализировалась на криптографии?
Всё не так: NAI (ныне McAfee) не специализировалась на криптографии, Циммерманн не был акционером. Учите историю[link56].
А кто утверждал, что он был акционером? Вы о чем-то о своём…
А при чём тут senior fellow в Вашем посте?
Учите историю ;)
http://en.wikipedia.org/wiki/Phil_Zimmermann
Похоже, ссылка старая. SELinux уже давно разрабатывает преимущественно компания Tresys Technology[link57].
Вообще, к чему я веду, вопрос в том, имеет ли SElinux недокументированные возможности(backdoor, проще говоря). Их наличие без криптографии выглядело бы непрофессионально. Я далек от мысли, что руководство АНБ построило разработчиков и зачитало приказ – писать шпионскую программу. Такой код мог появиться на любой стадии разработки, но, вероятнее всего, когда она находилась под полным контролем АНБ. Само АНБ указало ключевого внедренца как NAI Labs (не McAfee или ещё как-то), история покупок/продаж/перепродаж которой какая-то мутная – по одним wiki-страницам, с ещё как-то проверяемой информацией, лично мне ничего не понятно. Очень походит на фирмы-однодневки в экономике, но это мое субъективное впечатление.
Если учитывать менталитет спецслужб, доверять их программным продуктам категорически нельзя. Их сознание отформатировано так, чтобы использовать абсолютно любую лазейку для сбора информации и вторжения в частную жизнь. Это для нас подобные действия преступны, а для них это – спецоперация, которая рассматривается как ступень в карьерной лестнице. Скорее всего сделаны оценки – сложность кода такова, что ни у кого без таких ресурсов как у АНБ не будет возможности в нём до конца разобраться. Экплойты можно замаскировать в виде багов, и случае их маловероятного обнаружения репутация selinuxa не пострадает. Все риски и возможные издержки подсчитаны, нужные люди находятся под влиянием. Возможно что selinux в редакции gnu (не для внутреннего использования АНБ) – это проект для компрометации свободного ПО, внедрение глобального трояна в неподконтрольные средства коммуникации. Лучше отдать предпочтение другим продуктам типа grsecurity, которые к тому же проще в настройке.
Он по умолчанию почти везде отключен и реально крайне мало где используется. Стоило тратить столько сил на попытки с помощью него что-то протроянить или скомпрометировать. Выбрали бы что-нибудь более популярное.
Microsoft, Google, IBM, Intel[link58] написали куда больше кода в Linux-ядро, чем подрядчики АНБ. А типа никому неподконтрольные энтузиасты-одиночки[link59], на которых якобы держится Open Source — аж 16% кода. Linux — это больше продукт крупных коммерческих, подконтрольных корпораций.
Red Hat – крупная корпорация. Кстати(не кстати), тоже подрядчик АНБ, получается. Fedora давно использует SElinux по умолчанию. Когда долгое время вкладываешься в изучение и применение дистра, то перейти на другой продукт не легкая психологическая задача. Даже если на том же дистре с другой системой безопасности. Весь дистрибутив скомпрометирован.
тестерТьюринга, ставь
ФСБBSD.Во первых, всегда можно выключить. И оно не сработает.
Во вторых, эксплойт или закладка в SELinux должна сделать минимум три вещи:
Технически, если первые два пункта решаются обычным набором эксплойтов, то третий пункт означает просто такую же ситуацию, как и отсутствие SELinux. Если включенный SELinux даёт возможность осуществить все три пункта так, что при выключенном такой возможности нет, то это очень заметно и злонамеренно выглядит. Наконец, с третьим пунктом и всеми его тремя подпунктами тоже довольно сложно и ограниченно. Явный переход confined → unconfined нигде не предусмотрен, ухитриться сделать безобидно выглядящую ошибку для него, да ещё связанную со всеми тремя пунктами — сложно.
Понятно, что злонамеренность АНБ может помножить всё на бесконечность, но хотелось бы технические соображения по этому поводу. Иначе, из таких же соображений можно всё отпараноить: GnuPG финансируется немецкими властями, Tor (и значительная часть исследований в области Crypto) — американскими. А шифрпанки и энтузиасты, когда дело касается безопасности, часто пишут такой код, что никаких троянов не надо. Реально, только если есть продукт смешанного открытого коммунити.
Для данной темы, это оффтоп, поэтому вкратце.
Компании под одним названием с энтузиастом-одиночкой Ф.Циммерманном и без него – две разные компании. Становиться ли энтузиасту-одиночке юридическим лицом – это вообще формальность.
Многодесятилетнего ресурса железячных компаний, как IBM, хватает, чтобы успешно вести патентные войны. Их достижения на софтверном рынке сомнительны. Зачем поддерживать опенсорсный Linux, когда есть своя OC(?)
Пока заинтересовали исследовательские операционки. Такие, как http://www.coyotos.org/history/index.html
Конкурс http://underhanded.xcott.com/
Да :)
Вполне вероятно, что для решения таких задач создана научная база. А сложно или нет – понятие относительное, зависит от возможностей.
Размеры этих проектов несопоставимы с selinux, а разработчики не связаны обязательствами неразглашения. Т.е. код намного проще для проверки, а риск утечки компрометирующей информации значительно выше. Да и понятие "власть" в данном случае расплывчато, какой-нибудь фонд раздающий гранты из бюджета – это тоже власть что ли?
Стр. 13 зде[link60] упомянутой pdf'ки:
АНБ формально почти устранилось от разработки SELinux, передав его разным компаниям. Рассылки и исходники больше не хостятся у него на серверах, а лежат у Трезиса. На странице агентства только историческая справка о начале разработки и нет никаких актуальных материалов.
Это, разумеется, никак не успокаивает паранойю, т.к. несколько официальных разработчиков от АНБ остались в проекте, да и формальная смена вывески ничего не значит в плане возможного контроля. Другой вопрос, что альтернативные "независимые" проекты также могут разрабатываться подконтрольными компаниями.
Microsoft в своих подпроектах Singularity внедряет формальную систему для доказательства корректности программ на уровне языка.
http://research.microsoft.com/apps/pubs/?id=122884
Это устраняет широкий круг уязвимостей, но, понятно, что проблема не перестает быть сложной.
Вспоминается странная история становления Microsoft, которую на начальных этапах IBM почему-то поддерживала в ущерб себе. Есть мнение, что об этом её очень попросили...
Да, ксати о M$: http://www.heise.de/tp/artikel/5/5263/1.html
Wine – самая надежная Винда? :D
Описание в английской статье какое-то сумбурное. Непонятно, о чем конкретно идёт речь. IMHO, это обычные спекуляции, "жареные новости".
NSA backdoor в криптографии если и был, то ровно один раз — в стандарте DUAL_EC_DBRG[link61], который впервые применен в Windows 7. Это стандарт на ГПСЧ, принятый NIST. Там случайные числа генерируются хитрой эллиптикой, и доказано, что теоретически может существовать секретная эллиптическая кривая, позволяющая полностью скомпрометировать этот генератор (есть ли такая кривая в их константах — вопрос, но опасения имеются). Стандарт пропихнули с подачи NSA без обсуждения, в win7 он есть в числе прочих стандартных алгоритмов. Вероятность, что всё случайно так вышло, и никакой секретной кривой у них в загашниках нет,
стремится к нулюне велика. IMHO, сама идея генерировать случайные числа, используя ассиммитричное крипто, порочна на корню и должна вызывать подозрение.Да ну? BBS[link62] вполне себе классичен.
В меру своих познаний в этом вопросе тоже пытался его провентилировать. Узнал только то, что инженер по имени Nicko van Someren сейчас работает на good.com. До этого был сооснователем nCipher. Одно ли это лицо – мне не известно. В любом случае есть первоисточники, которые могут что-то прокомментировать. (если не боятся оказаться в транзитной зоне аэропорта, разумеется)
p.s. странное дело, страницы в истории браузера за пару дней перестали открываться в полном объеме. Брал: _http://www.nigma.ru/index.php?startpos=10&s=Thales+Someren&srt=1&gl=1&yh=1&ms=1&rm=1&av=1&nm=1&k=ISjT&rg=t%3D%D0%95%D0%BA%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%BD%D0%B1%D1%83%D1%80%D0%B3_c%3D%D0%A0%D0%BE%D1%81%D1%81%D0%B8%D1%8F_&rg_view=%D0%95%D0%BA%D0%B0%D1%82%D0%B5%D1%80%D0%B8%D0%BD%D0%B1%D1%83%D1%80%D0%B3%D0%B5 (14.)
Искать криптографические примитивы?
3.0 COVERT CHANNEL IDENTIFICATION[link63]
Какое отношение имеет код SELinux к криптографическим примитивам? В статье речь идёт о TCB PRIMITIVE.
Сложно сказать. Фактов нету. Возможно, никакого. На данный момент отсутствие информации о недокументированных возможностях, связанных с криптографией, SElinux и отсутствие таковых вообще – для меня равнозначно. Мало вероятно, что в реализованном тайном канале данные будут гонять в открытом виде, а количество кода, предназначенных для таких целей, ограничено(?) SElinux-ом. Не?
Код SELinux открыт. Использование крипто по умолчанию не предусмотрено. Если оно есть в неположенном месте, его наличие выявляется элементарно. Необязательно даже разбираться в коде, достаточно его просканировать на предмет наличия крипто и вызовы всех внешних функций. Любая криптография будет торчать, как заячьи уши.
Другое дело, что есть экспериментальные наработки по скрещиванию SELinux с IPSEC (которые у пользователя в большинстве случаев будут отключены, а механизм какого-нибудь троянского включения и отправки будет заметен в коде), но опять же, если какая-то функция, которая не требует использования крипто, будет в коде лезть за криптофункциями, то это будет заметно элементарно. Закладки так тупо не делаются. Можно поспекулировать как их предположительно могут внедрить, один вариант я уже привёл. Могут буть и другие, но не столь примитивные.
Ок. Техническая часть обнадеживает мои скромные познания…
Будем считать, что SElinux не имеет недокументированных возможностей. Т.к. АНБ, являясь государственной конторой, может себе позволить реализовать и использовать "законный" тайный канал. SElinux как система безопасности не будет иметь возможностей для его отключения. Теперь вопрос в том, как реализован этот "законный тайный канал", чтобы подобрать альтернативную систему защиты для его надежного отключения.
Да всё проще и сложнее одновременно.
SELinux, как и любая система — несовершенна. А любое несовершенство можно скрывать, тайно усиливать вместо исправления и использовать по своему назначению.
Во-первых, тайный канал могут создавать сами клиентские приложения — уязвимые браузеры, демоны могут модулироваться трафиком извне, запустить комманды, которые будут модулировать или трафик, или потребление ресурсов, или время исполнения, что может создать побочный канал, сливающий информацию наружу или другому процессу, который не так хорошо изолирован (в сложной системе это неизбежно). От этого не защитит ни SELinux, ни виртуалка. Таким путём слить можно немного, но какой-нибудь ключ шифрования, или параметры состояния шифра, по которым можно раскрыть ключ.
Во-вторых, несовершенство приводит к тому, что не все правила и принципы их построения охватывают все векторы атак. О чём могут преднамеренно умалчивать разработчики, если они знают больше и хотят это скрыть.
В-третьих, какое-нибудь элементарное переполнение, ошибка, опечатка в пару строчек или переменных, которая даёт возможность выполнить запрещённое действие.
Основной принцип — различить злонамеренную разработку от качественной м.б. невозможно. Можно поручить разработку "честным, но неопытным", даже независимым программерам, а анализ "более квалифицированным".
Команда экспертов, сосредоточенная на поиске эксплойтов под Tor, GnuPG, OpnSSL, что-угодно, да ещё имеющая своих инсайдеров в этих открытых проектах (чтобы лучше разбираться в теме и знать, какие вопросы и как решаются в проекте изнутри) может даже не размещать туда никаких закладок, а просто более грамотно анализировать код, чем рядовые исследователи, которые иногда этим занимаются лишь от случая к случаю и поверхностно.
Т.е. достаточно быть на шаг впереди, как по затратам на выявление, объёму проделанной работы, количеству привлечённых экспертов, так и по уровню квалификации чтобы пополнять арсенал эксплойтов и опережать открытое сообщество практически в любом сложном софтовом проекте.
Его может и не быть. Есть просто гонка интеллектуальных усилий в поиске эксплойтов, использование инсайдерской информации и наличие инсайдеров в проекте, которые сами находят баги, консультируясь с экспертами, но не закрывают их, пока кто-то не заметит со стороны.
unknown уже написал, но тоже выскажусь. Зачем добавлять в selinux криптографию, когда она уже есть практически в любой системе. Достаточно осуществить взлом системы через любое сетевое приложение (пользуясь припрятанным "багом"), а потом воспользоваться например ssh.
Да и вообще какой смысл анб делиться мощным средством безопасности с открытым сообществом, которое у него как кость в горле? Те, чья профессия – красть информацию, вдруг озаботились её сохранностью. Это противоречит здравому смыслу – как вор озаботился вашим благосостоянием.
«О том, почему конкуренция исследовательских программ (по взлому и по защите) является выигрышной стратегией. Разные части одного ведомства могут плодотворно работать друг против друга».[link64]
Потому что "любая криптография будет торчать, как заячьи уши" :) Их трепыхание будет привлекать с себе внимание. Криптографические функции, реализованные внутри большого проекта не так заметны. Это в плане дискуссии.
Я же пока остаюсь при том мнении, что АНБ нет необходимости *шифроваться*. Если почитать цветные книги, это становится очевиднее.
В ядре есть cryptoAPI.
За формулировками теряется что-то важное. Не пойму что…
http://ru.wikipedia.org/wiki/Скрытый_канал
Стеганографию мы относим к криптографии? Если да, тогда она(стеганография) в скрытых каналах реализуема через cryptoAPI ядра?
Можно подумать, что там уже всё встроено именно так, как вы пытаетесь себе представить, хотя такие вещи скорее всего делаются совсем по другому. Почему сокрытие бэкдоров и уязвимостей должно быть завязаны именно на криптографию и стеганографию, там где её конструктивно не должно быть? с чего такое убеждение? Потому что это такие особо страшные и непонятные штуки что-ли?
В открытом коде такую закладку найти наоборот гораздо проще, какой бы ни был его объём. Принципа заячьих ушей объём кода здесь никак не отменяет.
Следует разделять организацию утечек в чёрном ящике и открытом, хотя и большом и малопонятном коде.
Немного кривая метафорическая аналогия.
Если в городе можно спрятать что-то в доме иди дереве, то если в городе растут деревья, возможен вариант тайника и в них. А если в лесу нет домов, то какой бы большой он ни был, но его можно обойти и наткнуться на дом, который сразу заметен, как посторонний объект, то где лучше спрятать тайник — в доме или дереве?
Из интервью Рутковской:
http://www.thg.ru/software/joa.....ka_interview-01.html[link65]
Т.е. в Xen была лишь одна уязвимость и она создана анб. И тоже в расширении безопасности (аналогия с selinux). Как вообще можно всерьёз рассматривать в качестве средства безопасности ПО написанное в спецслужбе? unknown тут как-то писал, что для любого серьёзного проекта необходима репутация, одного лишь открытого кода мало, и от анонимов добавления не принимаются. Репутация анб как профессиональных жуликов хорошо известна, но тем не менее их продукты и стандарты почему-то широко используются и пропагандируются.
На другой странице[link66] там же:
А дальше идёт фейспалм:
Основной разрботчик ОС перешёл на использование этой ОС. Давно так не ржал. :)
Ужас. Я даже не знаю, что из этих трёх вещей хуже и более зловредно: Sony Vaio, MacBook или iPad. Они все друг друга стоят.
Имеем случай ещё
одного разработчикаодной разработчицы, которой «нечего скрывать».Это был непростой для меня квест, всё-таки уже 4 года прошло, но я с ним справился. Вот оригинал[link67]:
Но там речь шла немного о другом — об «анонимы vs известные разработчики». АНБ как раз известный разработчик, это не аноним в изначальном смысле этого слова. И если у анонимов репутация условно нулевая, то у АНБ она отрицательная.
Правда жизни в том, что если АНБ захочет вставить бэкдор в код, она продвинет своих людей в коммитеры и разработчики, которые не будут афишировать свою принадлежность АНБ (фактически это работа под прикрытием). Поскольку те разработчики будут хоть и злонамеренными, но грамотными, посторонняя публика вычислит их далеко не сразу. И в разных программных проектах АНБ может использовать разных своих виртуалов, чтобы не палить контору. Обладая госресурсом, такому разработчику могут написать даже правдоподобное CV, чтобы не было вопросов, откуда он вдруг с неба такой взялся. Другой вариант — вербовка известных в коммунити людей с репутацией и именем по аналогии с тем, как они пролезли в коммерческие зарубежные фирмы.
Извиняюсь, если новость уже обсуждалась в другой ветке — не нашел куда приткнуть.
Torvalds shoots down call to yank 'backdoored' Intel RdRand in Linux crypto[link68]
Новость — нет, но сам RdRand — да [1][link69], [2][link70]. Высказаные ранее опасения точь-в-точь те же, что и по вашей ссылке.
Если не бойкотировать Intel, то тогда уж можно было бы и вовсе сделать поддержку отдельным модулем, который все могли бы просто не загружать по желанию. Так, например, SELinux по умолчанию отключен в большинстве дистров.
Учитывая, что система носит экспериментальных характер, ирония не совсем оправдана.
Вероятно даже сам железо печатает в гараже.
Linus скорее всего тоже не сразу перешёл на свою разработку, сидел в досе каком нибудь ковырял её....
аплодисменты зала!
Недавно[link71] SElinux появился на Android 4.3 Пока тоже *отключен* в режиме Permissive.
http://lib.ru/LINUXGUIDE/torvalds_jast_for_fun.txt
По-моему, проще не бывает :)
Подразумевается тэг [ирония]? Permissive mode — это значит, что фактически он включен, только работает вхолостую.
Степень анального огораживания у Sony такова, что лучше вам об этом не знать. Электронщики про неё рассказывают такое, что потом не уснёшь, поэтому ирония ни к чему.
тестерТьюринга, откуда у вас такие тексты?!
Язык неплох, в своей нише до сих пор используется, и до сих пор его изучают те, кому они нужен.
Гость (13/09/2013 05:59) Справедливо для любых проектов. и что с этим делать?
Когда SElinux в режиме Enforcing мешает новичку что-то сделать, то после команды setenforce 0 они обычно пишут: "всё, я его вырубил".
Это не у меня. Это у либру.
Вопрос риторический? Тогда риторический же и ответ: ничему и никому не доверять, всё перепроверять.
Всё самостоятельно проверить невозможно даже "топовым специалистам". Какие-то оптимизации и упрощения в выборе стратегии построения доверия будут неизбежны.
По поводу "что делать". Распространять идеи и создавать сообщество. Своё "ванильное" ядро из которого вычистить selinix, intel и прочий вредоносный софт от жуликов. Репозиторий открытого кода с цифровыми подписями. Каждый кто замечен в обмане должен быть изгнан из мира свободного ПО. Нужен сайт с базой данных по вредителям и описанием их злодеяний. Понятно что Торвальдс уже скурвился и находится под влиянием "органов", раз считает нормальным включение в ядро закладок от интела, пусть даже нейтрализованных. Должна быть принципиальная позиция – свободное ПО и закладки, даже отключаемые, несовместимы. Тогда спецслужбам будет труднее вербовать коллаборационистов, а Сноуденов станет больше.
Жулики — первые, кто легко меняет вывеску.
Самые критичные уязвимости выглядят случайными ошибками. Чем больше разработчик делает, тем больше у него шансов фатально накосячить при прочих равных. Получится, что изгонять надо всех.
Тролли, провокаторы, любители ложных доносов и профессиональные чёрные пиарщики найдут, чем его наполнить, чтобы развалить сообщество.
Идеи отчасти верные и отчасти не так в худшую сторону от этого всё и ушло, но не так просто построить мир во всём мире. Популизм иногда бывает подозрительнее и разрушительнее, чем уши корпораций, спецслужб и прочих якобы очевидных злодеев.
Речь не о мире во всём мире, а о войне (информационной) с невидимым фронтом. Враг не идентифицирован большинством, и в этом его сила. Нужна тенденция, которая удорожит реализацию его планов и значит снизит эффектиность деятельности. Смена вывески потребует денег, которых в результате не хватит на очередной проект или "спецоперацию". Часть сексотов не получится вербовать по идейным соображениям, а это дополнительные расходы на подкуп безидейных. Раскрытие шпиона внедряющего закладки – это тоже убытки, т.к. нужно будет выращивать нового. Для предотвращения утечек от новых Сноуденов, нужно усиливать секретность, что приведит к снижению производительности "работы". И так далее. Если вы не согласы с этими доводами, напишите что лично вы предлагаете.
Можно предложить для начала не ставить технологии на какую-либо сторону в информационных войнах идеологий. Идеологии соблюдать только нейтрально-технократические — свобода доступа к информации, для развития софта и пр. Каким там внешним целям это служит — разработчикам это оставить в стороне и не ввязываться.
Понятно, вы хотите оставить всё как есть.
Гость, сами начните хоть что-нибудь делать. Глядишь, и другие подтянутся.
Пара примеров давно закрытых багов из ./security/selinux/hooks.c[link72], fs/cifs/cifsencrypt.c[link73] Смотрю на них с точки зрения того, какова вероятность не случайного их появления. Правильно ли я понял cifsencrypt, что через HMACMD5Context[link74] была возможность атаки на HMAC-MD5?
Это вроде просто утечка памяти со значениями соответствующих HMAC.
Если знать адрес переменной pctxt в памяти, то будет доступ к остаточной информации на месте заполняемой struct HMACMD5Context. А вот достаточно ли этой информации для атаки – вопрос.
Это – элемент идеологии :)
А это к тому же и дискриминация!
Такое потакание технократической безответственности и безнравственности быть может и было допустимо лет сто назад, но при современном уровне научно-техническоно развития вероятно ведёт уже к глобальной кастрофе. И, вероятно, объясняет уже случавшиеся.
В науке все что можно сделать, будет сделано. Не теми, так другими. Кто занимается излишним морализаторством и политизацией, упускает возможности и неизбежно оказывается в отстающих.
Не можешь победить – возглавь, кое где это поняли, поэтому США сейчас сверхдержава, у них делаются все технологии изменяющие мир и мир вынужден их бесконечно догонять. А высокоморальный и идеологичный СССР не существует.
[Батя разрешил разок офтопнуть]
В лженауке все что можно сделать, будет сделано. Не другими, так теми, кто занимается лишним, упускает возможности и неизбежно оказывается в отстающих*.
Не можешь возглавить – победи, кое где это не поняли, поэтому сейчас двигаются в тупик, у них делаются все бусы и бутафории изменяющие мир и мир вынужден их бесконечно потреблять. А высокоаморальный и идеологически циничный СССР не существует теперь даже на бумаге.
*У Кэти Топурии есть замечательная пестня, там такие строки: красота — среди бегущих первых нет и отстающих, бег на месте общепримеряющий!
[/Батя сказал на сегодня харош]
(facepalm.jpg)
?? это шутка такая?
На Cryptome когда-то был репорт, который уже не сохранился(что странно). Но отыскался в вэб-архиве[link75]. Там же есть ссылка на любопытный ReplaceNsaKey.zip
Пока не знаю, с какого бока к етому подступиться. Ну и происхождение етого не известно. :)
Об этом сервисе, призванном защищать систему от утечек (и возможно, нападений) ходит много мнений – от сложности настройки до мнения как о троянском коне, заботливо всунутом АНБ в Linux в сладкой обертке.
Вот, сегодня опят наткнулся на очередной возглас недовольного параноика:
http://guruadmin.ru/page/4-met.....-selinux#comment-966[link76]
У меня этот SELinux на десктопе включен по той простой причине, что GEdit, как ни странно, начинает вести себя неадекватно по отношении к обрабатываемым файлам.
А вы, уважаемые эксперты, как считаете – стоит ли использовать SElinux, или ну ее нафиг, это троянскую лошадку? (если действительно она такой и есть).
It was written on the internet, it must be true.
Ответы по этому поводу уже давно озвучены[link77].
Вообщем, получается, что по сути все дистрибутивы скомпрометированы.
Неужели среди всего этого громадья не осталось действительно что-то стоящее?
https://www.pgpru.com/comment38599
Увидел мнение в сети:
Это правда? Tails полагается на apparmor[link78]
Основная проблема SELinux – совершенно адовая сложность написания политик.
Да, базовая идея там относительно проста.
Но поскольку работает это на очень низком уровне – по сути, как фильтр системных вызовов в ядре,
то политика селинукса должа описывать каждое телодвижение защищаемого сервиса в каждой возможной позе.
Получается такая ситуация:
* Если у вас федора и на ней стоит стандартный демон типа бинда, апача или мускула,
и при этом все файлы лежат на своих исходных местах, используются только стандартные порты,
то можно поставить Enforcing-режим без проблем – всё будет работать как и раньше.
Небольшие отклонения – типа использования нестандартных портов или размещения файлов
в другой части ФС решаются относительно просто через semanage.
* Для программ пользовательского окружения эта задача красиво не решена до сих пор -
число взаимосвязей между приложениями огромно, и хотя в той же федоре можно заметить в метках
селинука в /home первые шаги в этом направлении, до полноценной изоляции каждого приложения далеко.
* Промежуточный вариант – SELinux Sandbox – периодически ломается.
В частности, в Fedora 21 сломали звук внутри selinux sandbox.
Также я не нашел красивого способа, позволяющего внутрь строго заданной песочницы прокинуть
ровно одно заданное устройство из /dev
И чем сложнее защищаемый сервис, тем более объемной требуется описывающая его рамки политика.
У нас есть специалисты и по этим вопросам © [1][link79], [2][link80].
Не ставьте принудительные переводы строк внутри абзацев. Это ужасно выглядит, потому что ширина окна браузера у всех разная. Движок сам делает переводы строк там, где это нужно.