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

Сравнение SELinux и AppArmor для обеспечения безопасности Linux-серверов: Узнайте, как работает каждый MAC-фреймворк, основные различия и что выбрать для своей хостинг-установки.
SELinux против AppArmor: какая структура MAC подходит для вашего сервера?
SELinux и AppArmor обеспечивают обязательный контроль доступа (MAC) в Linux, ограничивая возможности процессов даже в случае получения ими прав root. Разница заключается в том, как они это делают. SELinux присваивает постоянные метки каждому файлу и процессу. AppArmor вместо этого использует правила путей к файлам. Этот единственный выбор дизайна определяет все остальное: сложность, уровень безопасности и то, какой дистрибутив по умолчанию поставляется с каким инструментом.
Как работает SELinux
SELinux изначально был разработан АНБ и по умолчанию поставляется в составе 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, где поды используют один узел.
Компромисс заключается в сложности. 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, синтаксис гораздо проще читать и редактировать вручную.
Недостатком является то, что правила, основанные на путях, не следуют за файлами при их перемещении. Жесткая ссылка или привязка, теоретически, могут обойти ограничение, основанное на пути. 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 г.

У вас есть вопросы или вам нужно индивидуальное решение?
Гибкие варианты
Глобальный охват
Мгновенное развертывание
Гибкие варианты
Глобальный охват
Мгновенное развертывание