AppArmor
Что такое 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.
● Примеры
- 01
Ubuntu по умолчанию поставляет профили AppArmor для Firefox, MySQL и Evince.
- 02
snapd использует AppArmor (вместе с seccomp) для изоляции каждого установленного snap-пакета.
● Частые вопросы
Что такое AppArmor?
Система обязательного контроля доступа для Linux на основе путей; в Ubuntu и SUSE применяется как более простая альтернатива SELinux для ограничения отдельных программ. Относится к категории Криптография в кибербезопасности.
Что означает AppArmor?
Система обязательного контроля доступа для Linux на основе путей; в Ubuntu и SUSE применяется как более простая альтернатива SELinux для ограничения отдельных программ.
Как защититься от AppArmor?
Защита от AppArmor обычно сочетает технические меры и операционные практики, как описано в определении выше.
Какие есть другие названия AppArmor?
Распространённые альтернативные названия: AA.