Gymterview
middle

Что такое SELinux и AppArmor?

SELinux и AppArmor — системы мандатного контроля доступа (MAC — Mandatory Access Control), обеспечивающие дополнительный уровень безопасности поверх стандартных прав доступа Linux (DAC).

Аналогия из жизни: стандартные права (rwx) — это замок на двери офиса. MAC-система — это пропускная система на входе в здание, которая контролирует, какие сотрудники в какие помещения могут заходить, даже если у них есть ключ от двери.

Зачем нужны

Стандартные права (rwx) защищают файлы от других пользователей, но если приложение запущено от root и скомпрометировано, злоумышленник получает полный доступ. MAC-системы ограничивают даже root.

Сравнение SELinux и AppArmor

Характеристика SELinux AppArmor
Разработчик NSA и Red Hat Canonical (Novell/SUSE)
Подход Метки (контексты безопасности) Профили на основе путей
Сложность Высокая Средняя
Гибкость Очень высокая Достаточная для большинства задач
Дистрибутивы RHEL, CentOS, Fedora Ubuntu, SUSE
Изучение Сложное Относительно простое

SELinux (Security-Enhanced Linux)

Режимы работы:

  • Enforcing — правила применяются, нарушения блокируются и логируются
  • Permissive — правила не применяются, но нарушения логируются (для отладки)
  • Disabled — SELinux выключен
Пример
# Проверить статус (на RHEL/CentOS)
getenforce
sestatus

AppArmor (в Ubuntu 24.04)

Работает на основе профилей, привязанных к путям файлов:

  • Enforce — правила применяются
  • Complain — нарушения логируются, но не блокируются
Пример
sudo aa-status                        # Проверить статус
sudo aa-complain /usr/sbin/nginx      # Режим complain (для отладки)
sudo aa-enforce /usr/sbin/nginx       # Режим enforce
ls /etc/apparmor.d/                   # Профили хранятся здесь

Для Java-разработчика

Если приложение на сервере не может открыть файл или порт, и стандартные права в порядке — проверьте AppArmor (Ubuntu) или SELinux (RHEL). Это частая причина ошибок «Permission denied» при развёртывании.

На собеседовании: достаточно знать, что MAC-системы существуют и зачем нужны. Интервьюер оценит, если вы упомянете AppArmor/SELinux как одну из причин «Permission denied» при деплое. Частая ошибка — отключать SELinux/AppArmor вместо правильной настройки профилей.