Налаштування apparmor в ubuntu 16.04

AppArmor - це система управління доступом до файлів на основі імен (Mandatory Access Control). Нещодавно ми розглядали ще одну реалізацію такої системи - SELinux. Apparmor працює подібним способом, на основі модуля ядра Linux Security (LSM). Але він сильно відрізняється від SELinux і в першу чергу своєю простотою. Тут немає ніяких ролей і маркерів. Є тільки програми та список файлів, до яких вони можуть мати доступ. Якщо SELinux використовується за умовчанням в Red Hat, від Apparmor, встановлений і активований за замовчуванням в Ubuntu.

У цій статті ми розглянемо як виконується настройка Apparmor в Ubuntu 16.04, як контролювати доступ додатків до файлів, а також як створювати свої файли профілів для нових додатків.

трохи теорії

Контроль доступу для програми здійснюється на основі файлу профілю. Причому вам необов`язково повністю включати або відключати Apparmor, ви можете контролювати доступ тільки для окремих додатків.

Профілі можуть працювати в двох режимах:

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

Таким чином, для кожної програми, яку потрібно контролювати створюється файл профілю, якщо його немає або він відключений, програма виконується без обмежень. Це гарантує, стабільну роботу системи і дозволяє контролювати роботу програм.

Установка Apparmor в Ubuntu 16.04

Я вже сказав, що Apparmor в системі встановлений. Але встановлені тільки базові компоненти, якщо нам потрібні додаткові профілі і інструменти управління, потрібно їх встановлювати окремо:

$ apparmor_status

apparmor1

apparrmor

З знімка видно, що зараз завантажено 57 профілів, 20 з яких знаходяться в примусовому режимі (enforce), а 37 в режимі навчання.

Якщо вивчити список далі, то ми можемо побачити, скільки процесів підпадають під наші профілі. У моєму випадку профілі були знайдені тільки для одного запущеного процесу, і він працює в режимі блокування і не може отримати доступ до недозволеним ресурсів. Також можуть бути не налаштовані процеси, це відбувається тому, що вони були запущені до запуску AppArmor, щоб і над ними виконувалося управління просто запустіть їх. Більшість профілів тільки для серверних утиліт і для браузерів, якщо ж ми захочемо контролювати інші програми, то потрібно буде додавати профілі вручну.

Як бачите, профілів не так вже й багато, але насправді їх є більше. Ми встановили додаткові профілі в пакеті apparmor-profiles, всі вони знаходяться в папці / usr / share / doc / apparmor-profiles / extras /. Подивіться її вміст:

$ Sudo cp /usr/share/doc/apparmor-profiles/extras/usr.bin.man /etc/apparmor.d/

Дивимося стан і бачимо, що тепер у нас є такий профіль.




apparmor4

Як змінити спосіб для профілю використовуються дві команди aa-enforce і aa-complain. Давайте включимо примусове виконання для нашого профілю:

$ Sudo aa-comlain man

Але перевірити як це працює зараз ми не можемо, man просто так не стане порушувати правила. Давайте скопіюємо утиліту cp замість man і перевіримо, чи буде вона копіювати файли в кореневому каталозі:


$ Sudo cp / usr / bin / man / usr / bin / man1
$ Sudo cp / bin / cp / usr / bin / man
$ Sudo man / test / test1

apparmor5

Відео: Первинна настройка Ubuntu 16 04 LTS

Немає доступу, але як таке може бути, адже ми виконували команду від суперкористувача? Для Apparmor неважливо root це чи ні, сказано немає доступу до файлів, значить немає, і все. Повертаємо нашу man на місце:

$ Sudo cp / usr / bin / man1 / usr / bin / man
$ Rm / test

Тепер дивимося лог Apparmor, і бачимо в кінці два записи, про відмову в доступі:

#include


/ Usr / bin / man {
#include
#include

capability setgid,
capability setuid,

/ Usr / bin / man r,
/ Usr / lib / man-db / man Px,

}

Основу профілю складають адреси файлів, до яких програма може мати доступ, а також дозволу для цих файлів. Синтаксис такий:

/ Адреса / файлу права

Доступні такі права:

Відео: Мій варіант Ubuntu 16.04 під Mac OS і чому пішов з Gnome Shell?

  • r - дозволити читання
  • w - дозволити запис
  • a - дозволити запис в кінець файлу
  • px - дозволити запуск нових процесів якщо для них є профіль
  • Px - дозволити запуск нових процесів, якщо для них є профіль і стерти змінні оточення
  • ix - дозволити запуск нового процесу під профілем поточного
  • m - дозволити завантажувати виконувані файли в пам`ять і запускати
  • l - дозволити створювати символічні посилання на виконувані файли
  • k - дозволити блокувати файли
  • ux - не контролювати нові процеси
  • Ux - не контролювати нові процеси і очистити змінні оточення.

Цих повноважень цілком достатньо, для управління правами, але крім списку файлів і їх повноважень, файл профілю містить ще директиви include і capability.

include дозволяє включати інші файли з дозволами, вони знаходяться в папці /etc/apparmor.d/abstractions/. Це такі ж частини профілю, зі списком файлів і правами доступу. Вони полегшують створення нових профілів.

З capability все трохи складніше. Програма може звертатися до ядра за допомогою системних викликів, ці виклики Apparmor теж контролює. Подивитися всі доступні виклики ви можете командою man capabilities. У нашому випадку ми дозволяємо процесу задати своє uid і gid, тобто змінити користувача і групу, від якого він запущений.

Відео: Налаштування Ubuntu 16.04 після установки

Є ще папка /etc/apparrmor.d/thunables зі змінними, які можуть використовуватися в кожному профілі. Але з ними розберемося по ходу. Тепер ви готові до того, щоб створити профіль apparmor. Для прикладу будемо створювати новий профіль для утиліти free. Нагадаю, що ця утиліта показує доступну оперативну пам`ять.

Спочатку виконайте таку команду, щоб форматувати шаблон профілю:

$ Sudo aa-genprof free

apparmor8

Програма каже, що потрібно запустити програму в окремому вікні терміналу, і виконати всі дії, які вона може робити, потім натиснути S. Так і чинимо:

$ Sudo aa-enforce free

І перевіряємо працездатність утиліти:

$ Sudo aa-parser імя_профіля -a

Перезавантажити всі профілі можна командою:

$ Sudo service apparmor stop

Але ця команда не зупинить роботу вже виконуються профілів, щоб їх вивантажити виконайте:

Поділися в соціальних мережах:

Схожі
Помилка 403 forbidden nginx 1.4 6 ubuntuПомилка 403 forbidden nginx 1.4 6 ubuntu
Огляд snap vs flatpack vs appimageОгляд snap vs flatpack vs appimage
5 Міфів про контейнерах linux5 Міфів про контейнерах linux
Великий огляд red hat linuxВеликий огляд red hat linux
Установка telegram ubuntu 16.04Установка telegram ubuntu 16.04
Налаштування selinuxНалаштування selinux
Як подивитися логи в linuxЯк подивитися логи в linux
Налаштування samba в ubuntu 16.04Налаштування samba в ubuntu 16.04
Оновлення драйверів ubuntuОновлення драйверів ubuntu
Установка mysql ubuntu 16.04Установка mysql ubuntu 16.04
» » Налаштування apparmor в ubuntu 16.04