LINUX.ORG.RU
 
skai-falkorr

Canonical повторила попытку интегрировать AppArmor в основную ветку ядра Linux


0

0

Компания Canonical, продвигающая AppArmor в Ubuntu в роли более простого в настройке аналога системы определения политик безопасности SELinux, предприняла повторную попытку инициировать процесс интеграции AppArmor в основную ветку Linux. Прошлая попытка была осуществлена в 2007 году компанией Novell, но привела лишь к критике со стороны некоторых авторитетных разработчиков ядра.

Основные претензии сводились к недостаточной совместимости с интерфейсом LSM (Linux Security Modules) и привязке к именам файлов вместо реализации через ассоциированные с объектом метки (как в SELinux). Разработчики из проекта Ubuntu учли высказанные ранее замечания и подготовили улучшенный вариант AppArmor, переработанный в плане использования стандартных хуков LSM (задействовали security_path вместо vfs), что повышает привлекательность патча для включения в основное ядро.

Изначально AppArmor представлял собой проприетарный продукт компании Immunix, которая была поглощена компанией Novell в 2005 году. Год спустя исходные тексты AppArmor были открыты компанией Novell под лицензией GPL и интегрированы в дистрибутив openSUSE. В 2007 году основатель проекта и команда разработчиков AppArmor покинула компанию Novell и развитие технологии почти остановилось. Novell сохранила в своих продуктах поддержку AppArmor, но интегрировала в дистрибутив и поддержку SELinux, позиционируя данную технологию как более перспективную. Отказался от AppArmor и дистрибутив Mandriva, перешедший на использование интегрированного в Linux 2.6.30 фреймворка TOMOYO. Единственным оплотом AppArmor остался проект Ubuntu, разработчики которого продолжают развивать технологию и, например, недавно добавили в парсер AppArmor поддержку кэширования правил, что позволило значительно ускорить процесс инициализации во время загрузки.

>>> Взято с OpenNet


[#]  

не нужно.

* ()
[#] Ответ на: комментарий от anonymous 20.02.2010 16:20:39  
troll_them_all

>ну как бы selinux вот я не осилил, а apparmor у меня работает. но таки tomoyo выглядит по документации лучше аппармора...

Только по документации или функционалу?

()
[#] Ответ на: комментарий от sjinks 20.02.2010 19:50:41  
annulen

>А в чем проблема тем же AppArmor'ом не разрешать создание жестких ссылок?

недавно столкнуля со случаем, когда для работы программы нужна была именно жесткая ссылка

** ()
[#] Ответ на: комментарий от nnz 20.02.2010 19:22:12  
demmsnt

>Мое утверждение было доказано вами как минимум в двух случаях: 1. Когда вы спросили, как сделать хардлинк без шелла. Любой начинающий саппорт, имея лишь FTP и HTTP-доступ в обычному хостинговому серверу с пыхом, прекрасно сделает на нем хардлинк без использования шелла. Предлагаю вам подумать, как :)

Да ну - это подмена понятий, ну и что, что в PHP нет букв SH? файлы писать может? может. а там хоть в /proc заглядывай.

Я вот только не пойму разве в AppArmor только пути указаны? Там нельзя поставить ограничения на системные вызовы и блокировать их?

* ()
[#] Ответ на: комментарий от demmsnt 20.02.2010 21:47:41  

не нужен

АппАрмор в убунте ненужен

anonymous ()
[#]  
real_maverick

ну зачем такое на главную то? в толксах обсудить пытались уже

а по теме - да армор настраивать сильно сильно проще и гуЁвней, но блин обходится ведь, если правильно помню на хардлинках (это вроде самое тривиальное). в selinux, как только напишешь какой либо сервис и положишь его еще в нестандартное место, долго будешь матерясь выравнивать контексты от SE, но эффект зато поражающий моск хомячка :)))

и зачем вставлять в основную ветку? только для пузомерки какой нибудь. кому надо, осилят патчи наложить, нормальная Ъ практика (хотя не, наверное у убунтоидов сие не Ъ ;))

p.s. не годуэ по поводу копипасты один в один с opennet, можно было бы хоть слов добавить от себя

*** ()
[#]  

Где есть нормальный cookbook по selinux?
Ну к примеру как запретить всем кроме pidgin читать файлы из .purple?

Да, я неосилятор,но не знаю за что даже взяться подступаясь к selinux

* ()
[#] Ответ на: комментарий от nnz 20.02.2010 17:55:20  
oguretz

>Пруф на то, что apparmor сейчас работает на механизме, независимом от путей, либо признание вами того факта, что вы идиот.

Чересчур толсто.

* ()
[#] Ответ на: комментарий от APM 21.02.2010 0:10:53  
real_maverick
[#] Ответ на: комментарий от nnz 20.02.2010 17:21:41  
vsemprivet

убунтовод, превым делом прописал параметр загрузки ядра без этого г, вторым снес его через эптитьюд, третьим пересобрал ядро без него.

* ()
[#] Ответ на: комментарий от demmsnt 20.02.2010 21:47:41  
nnz

>Да ну - это подмена понятий, ну и что, что в PHP нет букв SH? файлы писать может? может. а там хоть в /proc заглядывай.

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

>Я вот только не пойму разве в AppArmor только пути указаны? Там нельзя поставить ограничения на системные вызовы и блокировать их?


Нет, возможности apparmor не ограничиваются только разрешениями на доступ к файлам. Еще он может разрешать/запрещать определенные режимы работы с сетью (например, network inet tcp разрешает TCP), а также кастовать POSIX capabilities (ну, мало ли, кто-то libcap-bin не осилил). Но привязывается это все к конкретным бинарникам... правильно, через те же пути :)

**** ()
[#]  
xintrea

Если сейчас AppArmor нормально работает в юзерспейсе, объясните, нафига его пихать в ядро??

* ()
[#] Ответ на: комментарий от oguretz 21.02.2010 1:05:47  
nnz

>Чересчур толсто.

Чего толстого-то? Люди спокойно себе обсуждают, взвешивают, понимаете ли, плюсы и минусы, а тут приходит этот бледный (в красную крапинку) юноша и начинает хамить.
А также делать необоснованные утверждения. Всю жизнь apparmor на путях работал, у него вся архитектура на них завязана (попробуйте переписать его конфиги так, чтобы они не зависели от путей). Если бы сие из него убрали, об этом на каждом углу кричали бы.

**** ()
[#] Ответ на: комментарий от xintrea 21.02.2010 3:07:06  
nnz

>Если сейчас AppArmor нормально работает в юзерспейсе, объясните, нафига его пихать в ядро??

:D

Нормальные системы MAC не могут работать в юзерспейсе по определению, иначе их можно было бы обойти на раз-два.

В настоящее время apparmor существует только ядрах дистрибутивов-«энтузиастов» (SuSE и ubuntu, причем суся как основной механизм все равно использует SELinux). Эти ядра собираются со специальными патчами.

**** ()
[#] Ответ на: комментарий от troll_them_all 20.02.2010 21:20:49  

>Только по документации или функционалу?

я имел в виду, что по тому, как оно в документации описано, ибо tomoyo даже не тестировал :-)

anonymous ()
[#] Ответ на: комментарий от nnz 20.02.2010 19:22:12  

>любой начинающий саппорт, имея лишь FTP и HTTP-доступ в обычному хостинговому серверу с пыхом, прекрасно сделает на нем хардлинк без использования шелла. Предлагаю вам подумать, как :)

ну раз Вы намека не поняли, что понты квалификации не добавляют, поясняю- вот это как раз таки аппармором и ограничивается. подумайте как :-)

anonymous ()
[#] Ответ на: комментарий от nnz 21.02.2010 3:03:32  

>Тот анонимус наивно полагал, что если не давать пользователю доступ по SSH, то пользователь не сможет создать жесткую ссылку. Я привел простой пример, показывающий неправильность такой точки зрения.

типичный пример так называемого вранья :-) или, точнее говоря, того как понты пересиливают разум ;-)

anonymous ()
[#] Ответ на: комментарий от annulen 20.02.2010 21:41:21  

> недавно столкнуля со случаем, когда для работы программы нужна была именно жесткая ссылка

В AppArmor можно задать правило, что программа может создавать жесткие ссылки на конкретные файлы.

man 5 apparmor.d

** ()
[#] Ответ на: комментарий от demmsnt 20.02.2010 21:47:41  

> Там нельзя поставить ограничения на системные вызовы и блокировать их?

Там можно забирать у процессов лишние capabilities

** ()
[#] Ответ на: комментарий от nnz 20.02.2010 19:22:12  
DELIRIUM

> Когда вы спросили, как сделать хардлинк без шелла. Любой начинающий саппорт, имея лишь FTP и HTTP-доступ в обычному хостинговому серверу с пыхом, прекрасно сделает на нем хардлинк без использования шелла. Предлагаю вам подумать, как :)

Я не начинающий саппорт, но не знаю, как сделать хардлинк через http+ftp. Можно поподробнее?

"пыхом" не владею.

*** ()
[#] Ответ на: комментарий от legolegs 20.02.2010 17:49:49  
linux4ever

>В какой программе дырка? В апаче? Так и без селинукса хомяк в безопасности. Или дырка в sshd? и что тут сделает селинукс? libastral в поставку входит?

Браузер, торрент-клиенты, быдло-IM, локальные повышения привелегий.

()
[#] Ответ на: комментарий от anonymous 20.02.2010 18:01:24  

>еще раз- selinux я не смог осилить >apparmor у меня работает в продуктиве если Вы что-то не осилили - это не проблемы продукта :) Если программист не способен осилить метапрограммирование на с++ это разве проблема с++ и разве из-за этого нужно писаль вИлосипед ?

()
[#] Ответ на: комментарий от DELIRIUM 21.02.2010 9:07:14  

> Я не начинающий саппорт, но не знаю, как сделать хардлинк через http+ftp. Можно поподробнее?

Очень просто.

Залить такой вот php-файл:

<?php link('/bin/bash', '/some/path/my-bash'); ?>

и открыть его через браузер.

** ()
[#] Ответ на: комментарий от sjinks 21.02.2010 10:03:00  

Только тут, скорее всего, будет большой облом: клиентские домашние каталоги обычно живут на отдельном разделе (смонтированном с nodev,noexec,nosuid), а жесткая ссылка не может ссылаться на файл на другом разделе.

Так что при грамотной настройке такой сценарий не сработает.

** ()
[#]  

А можно заодно попросить убрать из Ubuntu PolicyKit, PAM, dbus, hald, upstart и Gnome? Волшебная система получилась бы. Почти Slackware...

** ()
[#] Ответ на: комментарий от sjinks 21.02.2010 10:03:00  

> <?php link('/bin/bash', '/some/path/my-bash'); ?>

disable_functions = link в php.ini и никаких selinux не надо. Говорят же, закапывайте!

** ()
[#] Ответ на: комментарий от annonymous 21.02.2010 10:26:43  

> disable_functions = link в php.ini и никаких selinux не надо.

К слову, disable_functions обходится на ура через interruped execution (детали у Стефана Эссера, а объяснять слишком долго).

Если по-хорошему, то запрещать функции нужно либо через Suhosin, либо ставить хук на zend_execute_internal, проверять ((zend_internal_function*)execute_data_ptr->function_state.function)->function_name и делать zend_bailout(), если функция запрещена.

** ()
[#] Ответ на: комментарий от annonymous 21.02.2010 10:22:40  

>А можно заодно попросить убрать из Ubuntu PolicyKit, PAM, dbus, hald, upstart и Gnome? Волшебная система получилась бы. Почти Slackware...

И Python.

()
[#] Ответ на: комментарий от real_maverick 21.02.2010 1:47:55  

спасибо.
сложновато да

* ()
[#] Ответ на: комментарий от sjinks 21.02.2010 11:15:46  

> К слову, disable_functions обходится на ура через interruped execution (детали у Стефана Эссера

Болтают. Эксплойта нет.

** ()
[#] Ответ на: комментарий от annonymous 21.02.2010 11:41:11  

> Эксплойта нет.

Который обходит disable_functions? В паблике может и нет. Я проверял на Core Globals (которые CG()) в 5.2.10, работало (правда, я заранее знал адрес, поэтому мне было проще). Хотя цели очистить disabled_functions у меня не было.

В любом случае я бы рисковать не стал.

** ()
[#] Ответ на: комментарий от anonymous 21.02.2010 7:31:59  
nnz

>типичный пример так называемого вранья :-) или, точнее говоря, того как понты пересиливают разум ;-)

Ну вот, сначала ляпнем не подумавши, а потом отпираемся, и других во вранье обвиняем.

Вы, мой юный лживый друг, прямо и недвусмысленно заявили «ага, ну создайте хард-линк, если шелла нет :-)». Пожалуйста, идите давить прыщи дальше и не лезьте в разговоры взрослых дядек.

**** ()
[#] Ответ на: комментарий от gh0stwizard 20.02.2010 17:17:01  
x0r

ясно, т.е. paranoid mode...

** ()
[#] Ответ на: комментарий от nu11 20.02.2010 18:35:46  

> так я их не знаю заранее. Сегодня мне надо картинку отправить, завтра
> - кусок скрипта или патч. Один фиг придется разрешать всё.


И эти люди еще намекают что они уберкуладмины :):):) Палимся на тему профнепригодности :):):)

Секурити в таких случаях делается разнесением ролей / разнесением идентити. Если внутри одного юзера то, например, делаем несколько профайлов броузера(это если у вас есть скрипт который разным профалам связанным с разными PID прописывает разные секурити контексты). Или несколько инсталляций броузера - тогда можно просто метки(например SE Linux) вешать на разные инсталляции. Если можно завести разных пользователей это тоже вариант, но не факт что более удобный - кому как. Соответственно в зависимости от желаний можно этот момент разделения углубить - завести разные емейлы, jabber ID ну и тп. При желании конечно.

Ну и соотвественно админим и читаем доки в одном броузере, бумажки заполняем по работе(и общаемся с коллегами-соратниками) в другом, общаемся с друзьями вконтакте, бугога, в еще одном, смотрим порево в третьем еще что-то делаем в четвертом. Для повышенной безопасности обмениваемся информацией между контекстами секурными способами - хоть емейлом пересылаем. Или еще как.
Соотвественно для повышения уровня безопасности нужно правильно разбить логику работы на сегменты, которые штатно не должны быть связаны.

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

** ()
[#] Ответ на: комментарий от x0r 20.02.2010 16:30:17  

>Не влане что он делает,

Влане читает лор

* ()
[#] Ответ на: комментарий от kernel 21.02.2010 17:26:00  

Остается только один вопрос: нафиг в этой схеме SE Linux, если хватит просто нескольких UID.

// капча rather includes явно на что-то намекает

anonymous ()
[#] Ответ на: комментарий от kernel 21.02.2010 17:26:00  
nu11

>И эти люди еще намекают что они уберкуладмины
молодой человек, запишитесь к дохтору на прием, проверьте зрение

***** ()
[#] Ответ на: комментарий от sjinks 21.02.2010 10:03:00  

> Залить такой вот php-файл:
> <?php link('/bin/bash', '/some/path/my-bash'); ?>
> и открыть его через браузер.
И откроется он, как обычный текстовый файл?
Или вы его сможете по ftp (который, к слову,
делает chroot анонимусам), подсунуть в
каталог скриптов?

anonymous ()
[#] Ответ на: комментарий от anonymous 21.02.2010 23:06:48  

> И откроется он, как обычный текстовый файл?
Хотя слишком много чести ему текстом
открываться - небось, binary/octet-stream
какой-нить будет, и всё. :)

anonymous ()
[#]  
vi0

Privilege separation

Я один использую несколько учётных записей для разных приложений?

vi@vi-notebook:~$ ls /home/vi/home/
firefox icedove java konqueror    mathematica6 noinet opera    psi soffice wine xchat
flex    itransition k3b mathematica mplayer nonet packettracer qemu vil    wireshark

Capabilities + ACL => более менее удобная работа (редко когда нужно из root'а поправить права).
Плюс можно легко запустить программу в режиме "без сети вообще" или "без доступа в интернет".
Управляет хозяйством специальный вело-sudo-костыль, который первым делом проверяет, что он запущен пользователем "vi".

P.S. Не судите строго за набор программ.

()
[#] Ответ на: комментарий от leg0las 20.02.2010 16:13:56  

> скажите необразованому, зачем нужен этот лисапед? не проще ли прикрутить как надстройку над SELinux (с карточными играми и девушками легкого поведения?)

Значит нужен...

** ()
[#] Ответ на: комментарий от anonymous 21.02.2010 23:06:48  

> И откроется он, как обычный текстовый файл?

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

** ()
[#]  

AppArmor няшка и нужен :3

Приятно лишний раз в security рассылке прочитать "xxx даёт в очко^W^W записать в память, но AppArmor нас бережёт".

И, да, SELinux УГ.

anonymous ()
[#] Ответ на: комментарий от nu11 21.02.2010 22:11:30  

> молодой человек, запишитесь к дохтору на прием, проверьте зрение

Вы выше постом долго разглагольствовали про взрослых дядь обсуждающих серьезные вопросы ;) А потом палитесь как не знающий таких элементарных вещей, то есть сами нек подпадаете под категорию взрослых дядь :)

** ()
[#] Ответ на: комментарий от anonymous 21.02.2010 19:10:35  

> Остается только один вопрос: нафиг в этой схеме SE Linux, если хватит
> просто нескольких UID.


SELinux это ОДИН ИЗ возможных механизмов обеспечения этого. Но я так понимаю вы из тех многочисленных анонимов которые чуть что кричат "не нужен" :):):)

Можно настроить гораздо гибче и секурней с SELinux чем без. И тем более что может сложится ситуация когда selinux (точнее спецсофт на его базе) будет, а возможности делать много логинов - нет. Логины это разделение разных физических людей, а профайлы разных виртуальных, не путайте мух с котлетами.

** ()
[#] Ответ на: комментарий от kernel 24.02.2010 3:05:50  
nu11

>Вы выше постом долго разглагольствовали про взрослых дядь обсуждающих серьезные вопросы
у тебя точно проблемы со зрением. Ничего подобного я тоже не писал.

>А потом палитесь как не знающий таких элементарных вещей

да я как бы и не скрываю, что не особо разбираюсь в selinux и подобных технологиях. Поэтому и задаю вопросы по теме.

>то есть сами нек подпадаете под категорию взрослых дядь

у тебя комплекс школоты и везде тролли мерещатся? Я не админ, с секретными данными не работаю. И нигде ничего подобного я не писал.

***** ()
[#] Ответ на: комментарий от nu11 24.02.2010 10:55:33  

А сорри. Спутал с nnz. nu11 и nnz при непристальном взгляде похожи.

** ()
[#] Ответ на: комментарий от kernel 24.02.2010 13:53:57  
nu11

значит я верно диагностировал проблемы со зрением :)

***** ()