SELinux vs AppArmor: порівняння для серверів Linux

15 хв читання - 21 травня 2026 р.

hero section cover
Зміст
  • SELinux проти AppArmor: яка система MAC підходить для вашого сервера?
  • Як працює SELinux
  • Як працює AppArmor
  • Порівняння
  • Базова конфігурація
  • Що слід використовувати?
Поділитися

Порівняння SELinux та AppArmor для захисту серверів Linux: Дізнайтеся, як працює кожна з систем MAC, які ключові відмінності та яку з них обрати для вашого хостингу.

SELinux проти AppArmor: яка система MAC підходить для вашого сервера?

SELinux та AppArmor забезпечують обов’язковий контроль доступу (MAC) у Linux, обмежуючи можливості процесів навіть у разі отримання ними прав root. Різниця полягає у тому, як вони це роблять. SELinux присвоює постійні мітки кожному файлу та процесу. Натомість AppArmor використовує правила шляхів до файлів. Цей єдиний вибір у дизайні визначає все інше: складність, рівень безпеки та те, який дистрибутив постачає який інструмент за замовчуванням.


 

Як працює SELinux

SELinux спочатку був розроблений Агентством національної безпеки США (NSA) і поставляється за замовчуванням у RHEL, CentOS, Fedora та Rocky Linux. Він позначає кожен об’єкт у системі, включаючи файли, процеси, порти та сокети, контекстом безпеки у форматі user:role:type:level. Поле type виконує основну роботу за допомогою механізму, який називається Type Enforcement (TE).

Наприклад, веб-сервер Apache працює як httpd_t. Файли веб-вмісту мають інший тип. Якщо жодне правило політики явно не дозволяє httpd_t доступ до цього типу вмісту, запит відхиляється. Це модель «заборона за замовчуванням». Ніщо не дозволяється, якщо правило не вказує інше.

SELinux також підтримує багаторівневу безпеку (MLS) та багатокатегорійну безпеку (MCS), які класифікують дані за рівнем конфіденційності та відповідно обмежують доступ. Саме MCS забезпечує SELinux потужну ізоляцію контейнерів, утримуючи їх відокремленими один від одного та від хоста. Це має значення в середовищах Kubernetes та OpenShift, де подів (pods) спільно використовують один вузол.

Компромісом є складність. SELinux має круту криву навчання. Усунення несправностей у разі відмови в доступі означає читання журналів аудиту, розуміння контекстів безпеки, а іноді й створення власних модулів політики з audit2allow. Для команд, які не мають спеціалізованого персоналу з безпеки, ці накладні витрати є реальними.

Як працює AppArmor

AppArmor використовує інший підхід. Замість позначення об’єктів, він прив’язує профілі безпеки до додатків на основі їхніх шляхів до файлів. Профіль для /usr/sbin/nginx визначає, які каталоги Nginx може читати, до яких портів він може підключатися та які можливості йому потрібні. Профілі — це текстові файли, що зберігаються в /etc/apparmor.d/.

AppArmor є стандартною платформою MAC в Ubuntu, Debian та SUSE. Він є частиною ядра Linux з версії 2.6.36. Додатки без профілю використовують стандартні дозволи DAC Linux.

AppArmor працює у двох режимах для кожного профілю: Enforce (блокує та реєструє порушення) та Complain (реєструє порушення без блокування). Це дозволяє поступово впроваджувати нові профілі. Почніть у режимі Complain, перегляньте журнали, посильте профіль, а потім перейдіть до режиму Enforce.

Такі інструменти, як aa-genprof та aa-logprof допомагають створювати профілі інтерактивно, спостерігаючи за діями програми та генеруючи правила на основі її поведінки. У порівнянні з модулями політики SELinux, синтаксис набагато простіший для читання та редагування вручну.

Недоліком є те, що правила на основі шляхів не слідують за файлами, коли ті переміщуються. Жорстке посилання або монтування bind теоретично можуть обійти обмеження на основі шляху. AppArmor також не має вбудованої підтримки MLS/MCS, тому він може ізолювати контейнери від хоста, але не один від одного, як це робить SELinux.

Порівняння

ФункціяSELinuxAppArmor
Модель контролю доступуНа основі міток (контексти безпеки)На основі шляху (розташування у файловій системі)
Стандартна політикаВідмовити у всьомуДозволити все (обмеження за профілем)
Переміщення файлівМітки слідують за файломБезпека прив'язана до шляху
Підтримка MLS/MCSТакНі
Ізоляція контейнерівМіж контейнерами та між контейнером і хостомТільки між контейнером і хостом
Формат політикиСкомпільовані бінарні модуліТекстові файли, зрозумілі для людини
Стандартні дистрибутивиRHEL, Fedora, CentOS, Rocky LinuxUbuntu, Debian, SUSE
Крива навчанняСтрімкаПомірна

Базова конфігурація

SELinux

Перевірте поточний стан:

sestatus
getenforce

Запустіть у режимі Permissive, щоб реєструвати порушення, не блокуючи нічого:

setenforce 0

Використовуйте політику «targeted» для більшості серверів. Вона обмежує послуги з високим рівнем ризику, такі як веб-сервери та бази даних, залишаючи все інше без обмежень. Зробіть це постійним у /etc/selinux/config:

SELINUX=enforcing
SELINUXTYPE=targeted

Перевірте контексти безпеки файлів та процесів:

ls -Z /var/www/html
ps -eZ | grep httpd

Якщо служба використовує нестандартний порт, оновіть політику:

semanage port -a -t ssh_port_t -p tcp 9999

Для власних програм, що генерують відмови у доступі, створіть модуль політики на основі журналу аудиту:

ausearch -m avc -ts recent | audit2allow -M my_custom_policy
semodule -i my_custom_policy.pp

AppArmor

Перевірте, які профілі завантажено:

sudo aa-status

Встановіть пакет утиліт, якщо вам потрібні інструменти для управління профілями:

sudo apt install apparmor-utils

Створіть профіль в інтерактивному режимі під час роботи програми:

sudo aa-genprof /path/to/binary

Удоскональте профіль, скануючи журнали на наявність порушень:

sudo aa-logprof

Перемикайте профіль між режимами:

sudo aa-enforce /etc/apparmor.d/usr.sbin.nginx
sudo aa-complain /etc/apparmor.d/usr.sbin.nginx

Що слід використовувати?

Практична порада для більшості адміністраторів: використовуйте те, що постачається з вашим дистрибутивом. RHEL, CentOS, Fedora та Rocky Linux постачаються з SELinux. Ubuntu, Debian та SUSE постачаються з AppArmor. Обидві платформи мають зрілі інструменти та політики для своїх рідних платформ. Перехід на нестандартну опцію в будь-якому дистрибутиві додає роботи та зменшує підтримку спільноти.

Крім того, вирішуйте, виходячи зі своїх вимог:

  • Виберіть SELinux, якщо вам потрібна відповідність стандартам PCI DSS, HIPAA або DISA-STIG. Якщо ви виконуєте багатокористувацькі контейнерні робочі навантаження на Kubernetes або OpenShift. Якщо вам потрібна ізоляція між контейнерами на спільних хостах. Якщо ваше середовище обробляє секретні дані або дані з різним рівнем конфіденційності.
  • Виберіть AppArmor, якщо ви використовуєте Ubuntu або Debian і хочете отримати захист MAC без значних витрат на впровадження. Якщо ваша конфігурація — це один сервер або невеликий кластер, що виконує стандартні веб-сервіси. Якщо швидке розгортання важливіше, ніж детальний контроль на рівні міток.

Обидві платформи додають мінімальні накладні витрати під час виконання. SELinux кешує рішення щодо доступу у своєму кеші векторів доступу (Access Vector Cache). Завантаження політики AppArmor може додати невелику затримку під час завантаження, але має незначний вплив під час виконання. Для більшості робочих навантажень хостингу жодна з них не буде вузьким місцем.

Якщо вам потрібна надійна хостингова платформа з повним доступом до root для налаштування будь-якої з цих платформ, виділені сервери або VPS від FDC надають вам контроль для налаштування SELinux або AppArmor відповідно до вимог вашого середовища.

Блог

На цьому тижні

Більше статей
Зомбі-процеси в Linux: Знайти, видалити, запобігти

Зомбі-процеси в Linux: Знайти, видалити, запобігти

Дізнайтеся, як ідентифікувати, видаляти та запобігати зомбі-процесам у Linux. Команди, виправлення коду та поради щодо моніторингу для адміністраторів серверів.

15 хв читання - 19 травня 2026 р.

Контрольний список для зміцнення сервера Linux

15 хв читання - 8 травня 2026 р.

Більше статей
background image

Маєте запитання або потребуєте індивідуального рішення?

icon

Гнучкі варіанти

icon

Глобальне охоплення

icon

Миттєве розгортання

icon

Гнучкі варіанти

icon

Глобальне охоплення

icon

Миттєве розгортання