hostprofi.ru
Подобрать хостинг
Термин·буква A

AppArmor

краткое определение

AppArmor — система мандатного контроля доступа (MAC) для Linux, встроенная в ядро. Ограничивает действия программ через профили: какие файлы читать, какие сетевые операции разрешены, какие системные вызовы допустимы.

AppArmor (Application Armor) — LSM-модуль (Linux Security Module) ядра Linux, реализующий мандатный контроль доступа. В отличие от DAC (дискреционный контроль — владелец файла) AppArmor ограничивает программу независимо от прав пользователя, запустившего её.

Как работает

Каждая программа получает профиль — текстовый файл в /etc/apparmor.d/. Профиль перечисляет разрешённые операции: пути к файлам с флагами (r — read, w — write, x — execute), сетевые протоколы, capabilities ядра.

Два режима: enforce — операции вне профиля блокируются и логируются; complain — только логируются без блокировки (для отладки профилей). Переключение: aa-complain /usr/sbin/nginx.

Пример фрагмента профиля для nginx: разрешить чтение конфигов в /etc/nginx/**, запись логов в /var/log/nginx/**, запрет записи в /etc/passwd. Даже если nginx взломан, атакующий не получит доступ к файлам за пределами профиля.

История

AppArmor разработан компанией Immunix (1998), в 2005 году куплен Novell, затем перешёл в Canonical. С Ubuntu 7.10 (2007) AppArmor включён по умолчанию. В Debian и Ubuntu — основная MAC-система. В RHEL/CentOS — SELinux (более мощный, но сложнее в настройке).

Сравнение MAC-систем

  • AppArmor: пути к файлам, проще в настройке, Ubuntu/Debian.
  • SELinux: контекст безопасности на каждый файл, более детальный контроль, RHEL.
  • seccomp: фильтрация системных вызовов, используется в Docker/Kubernetes.

Связь с хостингом

На VPS с Ubuntu AppArmor активен по умолчанию для ряда демонов (mysqld, apache2). На выделенных серверах профили AppArmor для nginx и PHP-FPM ограничивают ущерб при компрометации веб-приложения. Docker по умолчанию применяет AppArmor-профиль для контейнеров на Ubuntu.

Ключевые отличия от похожих терминов

SELinux работает с контекстами безопасности, AppArmor — с путями к файлам. AppArmor проще писать и отлаживать; SELinux более мощный. Фаервол ограничивает сетевой трафик; AppArmor ограничивает действия программы на уровне ОС.

Принцип работы AppArmor

AppArmor (Application Armor) — LSM (Linux Security Module) с профильной моделью. Профиль описывает, что конкретной программе разрешено: читать файлы, подключаться по сети, использовать system calls. Режимы: enforce (блокировать) и complain (логировать). По умолчанию в Ubuntu.

Профили AppArmor

Предустановленные профили: /usr/share/apparmor/extra-profiles. aa-status — список активных профилей. aa-complain /usr/sbin/nginx — режим обучения. aa-enforce /usr/sbin/nginx — включение защиты. Для Docker-контейнеров: профиль docker-default применяется автоматически.

AppArmor vs SELinux

AppArmor — профили по пути к файлу, проще в настройке. SELinux — метки на объектах (файлы, процессы, сокеты), мощнее, но сложнее. AppArmor — стандарт Ubuntu и Debian. SELinux — стандарт RHEL/CentOS/Fedora. Оба снижают поверхность атаки при компрометации сервиса.

AppArmor и Docker

Docker автоматически применяет профиль docker-default к контейнерам. Кастомный профиль: docker run --security-opt apparmor=my-profile nginx. Просмотр применённых профилей: cat /proc/PID/attr/current. Для Kubernetes: PodSecurityContext.appArmorProfile в Pod spec.

AppArmor защищает сервисы на Ubuntu и Debian. Профили ограничивают Nginx, MySQL, Docker. Работает в паре с фаерволом. Аналог SELinux для RHEL-систем. Kubernetes применяет профили через Pod Security.

Другие термины