Что такое apparmor?


93

Я слышу много разговоров о apparmor, я хочу знать следующее:

  • Что такое apparmor?
  • Как работает apparmor?

Ответы:


92

Что это

Apparmor - это система обязательного контроля доступа (или MAC). Он использует улучшения ядра LSM, чтобы ограничить программы определенными ресурсами. AppArmor делает это с профилями, загруженными в ядро ​​при запуске системы. Apparmor имеет два типа режимов профиля: принудительное применение и жалоба. Профили в принудительном режиме обеспечивают соблюдение правил этого профиля и сообщают о попытках нарушения в syslogили auditd. Профили в режиме жалоб не применяют никакие правила профиля, только регистрируют попытки нарушения.

В Ubuntu Apparmor устанавливается по умолчанию. Он ограничивает приложения профилями, чтобы определить, к каким файлам и разрешениям программа должна иметь доступ. Некоторые приложения будут иметь свои собственные свойства, и в apparmor-profilesпакете можно найти другие приложения .

Вы можете установить apparmor-profiles, запустив sudo apt-get install apparmor-profiles.

Я нашел хороший пример Apparmor на форумах Ubuntu, который я переписал для этого поста.

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

Как это устроено

apparmor-utilsПакет содержит инструменты командной строки для настройки AppArmor. С его помощью вы можете изменить режим выполнения Apparmor, узнать статус профиля, создать новые профили и т. Д.

Это наиболее распространенные команды:

Примечание. Профили хранятся в/etc/apparmor.d/

  • Вы можете проверить статус Apparmor с sudo apparmor_status. Вы получите список всех загруженных профилей *, все профили в принудительном режиме, все профили в режиме жалоб, какие процессы определены в принудительном / жалобе и т. Д.
  • Чтобы перевести профиль в режим жалобы, который вы используете sudo aa-complain /path/to/bin, где /path/to/binнаходится binпапка программ . Например, запуск: sudo aa-complain /usr/bin/firefoxпереведет Firefox в режим жалоб.
  • Вы используете sudo aa-enforce /path/to/binдля обеспечения профиля программы.
  • Вы можете загрузить все профили в режимы подачи жалоб / принуждения с помощью sudo aa-complain /etc/apparmor.d/*и sudo aa-enforce.d/*соответственно.

Для загрузки профиля в ядро ​​вы бы использовали apparmor_parser. Вы можете перезагрузить профили, используя -rпараметр.

  • Для загрузки профиля используйте:, cat /etc/apparmor.d/profile.name | sudo apparmor_parser -aкоторый эффективно печатает содержимое profile.nameв парсер Apparmor.
  • Для перезагрузки профиля вы используете -rпараметр, например, так:cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
  • Для перезагрузки всех профилей Apparmor используйте: sudo service apparmor reload

Чтобы отключить профиль, связать его с /etc/apparmor.d/disable/помощью lnтак: sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/запустите: sudo apparmor_parser -R /etc/apparmor.d/profile.name.

Примечание: не путайтеapparmor_parser -rсapparmor_parser -R ОНИ НЕ ОДНОВРЕМЕННАЯ!

  • Чтобы снова включить профиль, удалите символическую ссылку на него, /etc/apparmor.d/disable/затем загрузите его с помощью -aпараметра.sudo rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
  • Вы можете отключить Apparmor с помощью sudo service apparmor stopи удалить модуль ядра, используяsudo update-rc.d -f apparmor defaults
  • Запустите Apparmor sudo service apparmor startи загрузите модули ядра с помощьюsudo update-rc.d apparmor defaults

профили

Профили хранятся в /etc/apparmor.d/и именуются по полному пути к исполняемому ими профилю, заменяя «/» на «.». Например, /etc/apparmor.d/bin.pingпрофиль для pingв /bin.

В профилях используются два основных типа записей:

  1. Записи пути определяют, к каким файлам может обращаться приложение.

  2. Записи возможностей определяют, какие привилегии может использовать процесс.

Давайте посмотрим на профиль ping, расположенный в etc/apparmor.d/bin.ping, в качестве примера.

#include <tunables/global>
/bin/ping flags=(complain) {
  #include <abstractions/base>
  #include <abstractions/consoles>
  #include <abstractions/nameservice>

  capability net_raw,
  capability setuid,
  network inet raw,

  /bin/ping mixr,
  /etc/modules.conf r,
}  

#include <tunables/global>Включает файл globalв каталог tunables, это позволяет помещать в общий файл операторы, относящиеся к нескольким приложениям.

/bin/ping flags=(complain)устанавливает путь к профилируемой программе и устанавливает режим подачи жалоб.

capability net_rawпозволяет приложению доступ к CAP_NET_RAW Posix.1eвозможности.

/bin/ping mixr позволяет приложению читать и выполнять доступ к файлу.

/etc/modules.conf r,Это rдает приложению права на чтение для/etc/modules.conf

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

Вот список разрешений, которые вы можете использовать:

  • r - читать
  • w - записывать
  • ux - Неограниченное выполнение
  • Ux - Неограниченное выполнение - очистка среды
  • px - Дискретный профиль выполнения
  • Px - Дискретный профиль выполнить - очистить окружающую среду
  • ix - унаследовать выполнение
  • m - разрешать PROT_EXECпри mmap(2)звонках
  • l - ссылка

источники


Таким образом, это что-то вроде программы, действующей как пользователь и не имеющей прав на изменение большинства файлов в системе?
Изката

И да и нет. Вы устанавливаете профиль, который определяет, что могут делать определенные приложения. Затем вы добавляете программы в этот профиль, и это ограничивает то, что программам в этом профиле разрешено делать. Так что это как пользователь, потому что они могут получить доступ только к тому, что администратор (вы) говорит, что они могут в профиле.
Сет

Ах, так что профили похожи на группы пользователей для программ;)
Izkata

Да так много;)
Сет

Как вы думаете, apparmor может быть использован для блокировки любого интернет-соединения и сказать, кто пытается получить к нему доступ? и на основании этого журнала мы создаем разрешения для каждого приложения? Идея состоит в том, чтобы заставить его работать как Zonalarm в окне $, и как старые «брандмауэры на приложение» в linux, такие как LeopardFlower и ProgramGuard (я думаю, они больше не компилируются), а также есть новый, который называется Douane, и он использует модуль ядра, чтобы заставить вещи работать.
Водолей Сила

6

AppArmor - это система обязательного контроля доступа (MAC), которая является усовершенствованием ядра (LSM) для ограничения программ ограниченным набором ресурсов. Модель безопасности AppArmor заключается в привязке атрибутов контроля доступа к программам, а не к пользователям. Ограничение AppArmor обеспечивается через профили, загруженные в ядро, обычно при загрузке. Профили AppArmor могут работать в одном из двух режимов: принудительное исполнение и жалоба. Профили, загруженные в режиме принудительного применения, приведут к принудительному выполнению политики, определенной в профиле, а также к сообщениям о попытках нарушения политики (с помощью syslog или auditd). Профили в режиме жалоб не будут применять политику, а сообщать о попытках нарушения политики.

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

AppArmor - признанная технология, впервые появившаяся в Immunix, а затем интегрированная в Ubuntu, Novell / SUSE и Mandriva. Основные функциональные возможности AppArmor находятся в основном ядре Linux начиная с версии 2.6.36; AppArmor, Ubuntu и другие разработчики продолжают работу по слиянию дополнительных функций AppArmor с основным ядром.

У меня есть несколько более полезных ссылок на вас: Wiki.Ubuntu.com Ubuntuforums.org

Руководства по Apparmor для Ubuntu 12.04 и Ubuntu 12.10

Надеюсь, что это поможет вам.


3

Вот цитата из Apparmor вики :

AppArmor - эффективная и простая в использовании система безопасности приложений Linux. AppArmor активно защищает операционную систему и приложения от внешних или внутренних угроз, даже атак нулевого дня, путем обеспечения хорошего поведения и предотвращения использования даже неизвестных недостатков приложений. Политики безопасности AppArmor полностью определяют, к каким системным ресурсам могут обращаться отдельные приложения и с какими привилегиями. Ряд политик по умолчанию включен в AppArmor, и, используя комбинацию усовершенствованного статического анализа и инструментов, основанных на обучении, политики AppArmor для даже очень сложных приложений могут быть успешно развернуты за считанные часы.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.