Що таке апмармор?


93

Я чую багато розмов про 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 - Unconstrained Execute - очистити середовище
  • px - Виконання дискретного профілю
  • Px - Виконання дискретного профілю - очищення середовища
  • ix - Успадкову страту
  • m - дозволяти PROT_EXECз mmap(2)дзвінками
  • l - посилання

Джерела


Так це схоже на програму, яка діє як користувач, і не має дозволу змінювати більшість файлів у системі?
Ізката

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

Так, профілі схожі на групи користувачів для програм;)
Ізката

Так багато;)
Сет

Як ви думаєте, apparmor можна використовувати для блокування кожного підключення до Інтернету та сказати, хто намагається отримати доступ до нього? і на основі цього журналу ми створюємо дозволи для кожної програми? ідея полягає в тому, щоб він працював як Zonalarm у вікні $, і як старі "брандмауэры на додаток" на Linux, як LeopardFlower і ProgramGuard (такі, здається, вже не можна компілювати), а також є новий під назвою Douane і він використовує модуль ядра, щоб змусити роботу працювати.
Сила Водолія

6

AppArmor - це система обов'язкового контролю доступу (MAC), яка є розширенням ядра (LSM) для обмеження програм обмеженим набором ресурсів. Модель безпеки AppArmor полягає в прив'язуванні атрибутів управління доступом до програм, а не до користувачів. Приміщення AppArmor надається через профілі, завантажені в ядро, як правило, під час завантаження. Профілі AppArmor можуть бути в одному з двох режимів: примусовому виконанні та поданні скарги. Профілі, завантажені в режимі примусового виконання, призведуть до виконання політики, визначеної у профілі, а також до повідомлення про спроби порушення політики (або через syslog, або через аудит). Профілі в режимі скарги не застосовуватимуть політику, а натомість повідомляють про спроби порушення політики.

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

AppArmor - це усталена технологія, спочатку помічена в Immunix, а згодом інтегрована в Ubuntu, Novell / SUSE та Mandriva. Функція Core 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.