SELinux vs AppArmor: порівняння для серверів Linux
15 хв читання - 21 травня 2026 р.

Порівняння 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.
Порівняння
| Функція | SELinux | AppArmor |
|---|---|---|
| Модель контролю доступу | На основі міток (контексти безпеки) | На основі шляху (розташування у файловій системі) |
| Стандартна політика | Відмовити у всьому | Дозволити все (обмеження за профілем) |
| Переміщення файлів | Мітки слідують за файлом | Безпека прив'язана до шляху |
| Підтримка MLS/MCS | Так | Ні |
| Ізоляція контейнерів | Між контейнерами та між контейнером і хостом | Тільки між контейнером і хостом |
| Формат політики | Скомпільовані бінарні модулі | Текстові файли, зрозумілі для людини |
| Стандартні дистрибутиви | RHEL, Fedora, CentOS, Rocky Linux | Ubuntu, 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.ppAppArmor
Перевірте, які профілі завантажено:
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. Команди, виправлення коду та поради щодо моніторингу для адміністраторів серверів.
15 хв читання - 19 травня 2026 р.
Контрольний список для зміцнення сервера Linux
15 хв читання - 8 травня 2026 р.

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