Skip to content
Vol. 1 · Ed. 2026
CyberGlossary
Entry № 061

AppArmor

ПроверилCybersecurity entrepreneur & security researcher

Что такое AppArmor?

AppArmorСистема обязательного контроля доступа для Linux на основе путей; в Ubuntu и SUSE применяется как более простая альтернатива SELinux для ограничения отдельных программ.


AppArmor — это Linux Security Module (LSM), реализующий обязательный контроль доступа через профили на каждую программу, описанные в терминах путей к файлам, capability и сетевых примитивов, а не меток inode, как в SELinux. AppArmor возник из Immunix, сопровождается SUSE и Canonical, с конца 2000-х годов является стандартным MAC-фреймворком в Ubuntu и openSUSE, а с версии ядра 2.6.36 входит в основное ядро. Профили располагаются в /etc/apparmor.d и загружаются в режиме enforce или complain (только журналирование), при этом доступны вспомогательные утилиты, такие как aa-genprof, aa-logprof и aa-easyprof. Подход на основе путей обычно проще писать и аудировать, чем политики SELinux, ценой более слабой семантики при переименованиях, bind-монтированиях и chroot.

В контейнерах Docker генерирует и загружает в tmpfs профиль docker-default для каждого контейнера в режиме enforce, если он не переопределён через --security-opt apparmor=; этот профиль блокирует запись в чувствительные пути, такие как /proc/sysrq-trigger и /sys, и действует вместе с seccomp и отброшенными capability как эшелонированная защита. AppArmor также используется в snapd, libvirt, LXD и Firefox. Его ограничения вполне реальны: поскольку правила сопоставляются с путями, а не с самим объектом, жёсткие ссылки и трюки с монтированием иногда позволяют обойти профиль, а профиль хорош ровно настолько, насколько хороши его правила — слишком широкие шаблоны (например, разрешение /** rwk) сводят весь смысл на нет. CVE-2019-5736 (перезапись хостового бинарника runc) показала, что побеги из контейнера могут происходить в областях, не покрытых профилем по умолчанию, поэтому AppArmor сочетают с seccomp, пространствами имён пользователей и монтированиями только для чтения, а не полагаются на него в одиночку.

flowchart TB
  P[Запуск процесса] --> K[Хук LSM ядра]
  K --> Q{Профиль загружен?}
  Q -- No --> U[Без ограничений: обычный DAC]
  Q -- Yes --> M{Действие в профиле?}
  M -- Режим enforce --> R{Разрешено?}
  R -- Yes --> A[Разрешить]
  R -- No --> D[Запретить + журнал аудита]
  M -- Режим complain --> L[Разрешить + записать нарушение]

Типичный рабочий процесс запускает новый профиль в режиме complain, прогоняет приложение в обычной работе, а затем с помощью aa-logprof превращает зафиксированные обращения в правила перед переключением в режим enforce.

Примеры

  1. 01

    Ubuntu по умолчанию поставляет профили AppArmor для Firefox, MySQL и Evince.

  2. 02

    snapd использует AppArmor (вместе с seccomp) для изоляции каждого установленного snap-пакета.

Частые вопросы

Что такое AppArmor?

Система обязательного контроля доступа для Linux на основе путей; в Ubuntu и SUSE применяется как более простая альтернатива SELinux для ограничения отдельных программ. Относится к категории Криптография в кибербезопасности.

Что означает AppArmor?

Система обязательного контроля доступа для Linux на основе путей; в Ubuntu и SUSE применяется как более простая альтернатива SELinux для ограничения отдельных программ.

Как защититься от AppArmor?

Защита от AppArmor обычно сочетает технические меры и операционные практики, как описано в определении выше.

Какие есть другие названия AppArmor?

Распространённые альтернативные названия: AA.

Связанные термины

См. также