Подробный обзор настройки AppArmor в ALT Linux
AppArmor (Application Armor) — это модуль безопасности ядра Linux, реализующий механизм принудительного контроля доступа (Mandatory Access Control, MAC) на основе Linux Security Module (LSM). В отличие от классической модели DAC (Discretionary Access Control), AppArmor ограничивает возможности программ с помощью профилей безопасности, привязанных к путям исполняемых файлов, а не к пользователям.
Важно для ALT Linux:
- AppArmor доступен в репозитории Sisyphus в версии 4.1.7-alt1 (актуально на март 2026).
Установка компонентов AppArmor в ALT Linux
Установка базовых пакетов
# Обновление репозиториев
sudo apt-get update
# Установка ядра модуля и утилит управления
sudo apt-get install apparmor apparmor-utils apparmor-profiles
Пакеты, доступные в ALT Linux:
| Пакет |
Описание |
apparmor |
Ядро модуля безопасности |
apparmor-utils |
Утилиты управления профилями (aa-*) |
libapparmor1 |
Библиотеки для работы с AppArmor |
libapparmor-devel |
Файлы разработки |
pam0_apparmor |
Модуль PAM для интеграции |
python3-module-apparmor |
Python-биндинги |
Проверка статуса AppArmor
# Проверка загрузки модуля и профилей
sudo aa-status
# Пример вывода:
apparmor module is loaded.
31 profiles are loaded.
31 profiles are in enforce mode.
0 profiles are in complain mode.
3. Активация AppArmor при загрузке
# Включение сервиса AppArmor
sudo systemctl enable apparmor
sudo systemctl start apparmor
# Проверка состояния сервиса
sudo systemctl status apparmor
Режимы работы профилей
AppArmor поддерживает три основных режима:
| Режим |
Описание |
Использование |
| enforce |
Блокирует нарушения политик, записывает в лог |
Продакшн |
| complain |
Только логирует нарушения, не блокирует |
Тестирование, отладка |
| disabled |
Профиль не загружается |
Отключение |
Переключение режимов
# Перевод профиля в режим принуждения
sudo aa-enforce /usr/bin/myapp
# Перевод профиля в режим жалоб (логирование)
sudo aa-complain /usr/bin/myapp
# Применение режима ко всем профилям в директории
sudo aa-enforce /etc/apparmor.d/*
Создание и управление профилями
Утилиты управления (префикс aa-)
| Утилита |
Назначение |
aa-status |
Показать статус загрузки модуля и профилей |
aa-genprof |
Интерактивное создание профиля на основе аудита |
aa-logprof |
Обновление профиля по данным логов |
aa-autodep |
Автогенерация базового шаблона профиля |
aa-enforce / aa-complain |
Переключение режимов |
aa-disable |
Отключение профиля |
aa-parse |
Проверка синтаксиса профиля |
Метод 1: Автоматическое создание профиля (рекомендуется)
# 1. Создание базового шаблона
sudo aa-autodep /usr/bin/myapp
# 2. Запуск интерактивного генератора профиля
sudo aa-genprof /usr/bin/myapp
# 3. В новом терминале используйте приложение как обычно
# В окне aa-genprof подтверждайте или отклоняйте запросы доступа
# 4. После завершения — профиль готов к использованию
Метод 2: Ручное создание профиля
Создайте файл профиля в /etc/apparmor.d/:
sudo nano /etc/apparmor.d/usr.bin.myapp
Пример базового профиля:
#include <tunables/global>
profile /usr/bin/myapp flags=(complain) {
#include <abstractions/base>
# Разрешения на чтение/запись
/etc/myapp.conf r,
/var/log/myapp.log rw,
# Сетевые разрешения
network inet tcp,
# Capabilities ядра
capability net_bind_service,
# Динамически подключаемые библиотеки
/lib/** rm,
/usr/lib/** rm,
}
Загрузка профиля:
# Проверка синтаксиса
sudo apparmor_parser -r /etc/apparmor.d/usr.bin.myapp
# Или перезагрузка всех профилей
sudo systemctl reload apparmor
Структура профиля: ключевые директивы
Флаги доступа к файлам
| Флаг |
Значение |
r |
Чтение |
w |
Запись |
a |
Добавление в конец файла (append) |
k |
Блокировка файла |
l |
Создание символических ссылок |
m |
Отображение файла в память (mmap) |
x |
Выполнение |
Модификаторы выполнения
| Директива |
Описание |
ix |
Наследование текущего профиля |
px |
Требует отдельный профиль для исполняемого файла |
Px |
Как px, но с очисткой переменных окружения |
ux |
Выполнение без ограничений (не рекомендуется) |
Ux |
Как ux, но с очисткой окружения |
Абстракции (abstractions)
ALT Linux поддерживает стандартные абстракции из /etc/apparmor.d/abstractions/:
#include <abstractions/base> # Базовые системные вызовы
#include <abstractions/nameservice> # DNS/имена хостов
#include <abstractions/ssl> # SSL/TLS библиотеки
#include <abstractions/dbus> # D-Bus коммуникация
Мониторинг и отладка
Просмотр логов нарушений
# Просмотр логов AppArmor
sudo journalctl -k | grep apparmor
# Или через специализированную утилиту
sudo aa-logprof
Проверка активных профилей
# Детальная информация о профилях
sudo aa-status --verbose
# Проверка конкретного процесса
sudo aa-status | grep myapp
Тестирование профиля в режиме complain
Перед переводом в enforce всегда тестируйте в complain:
# 1. Установите режим жалоб
sudo aa-complain /usr/bin/myapp
# 2. Протестируйте все сценарии использования приложения
# 3. Проанализируйте логи и обновите профиль
sudo aa-logprof
# 4. Только после успешного тестирования — включите enforce
sudo aa-enforce /usr/bin/myapp
Практические примеры для ALT Linux
Пример 1: Защита веб-сервера Nginx
# 1. Создание профиля
sudo aa-autodep /usr/sbin/nginx
# 2. Генерация правил через использование
sudo aa-genprof /usr/sbin/nginx
# 3. В процессе: запустите nginx, выполните запросы,
# в aa-genprof подтверждайте доступ к:
# - /etc/nginx/**
# - /var/www/**
# - /var/log/nginx/**
# - сетевым портам 80/443
# 4. Активация
sudo aa-enforce /usr/sbin/nginx
Пример 2: Ограничение доступа для пользовательского скрипта
# /etc/apparmor.d/usr.local.bin.myscript
#include <tunables/global>
profile /usr/local/bin/myscript flags=(enforce) {
#include <abstractions/base>
# Только чтение конфигурации
/etc/myscript.conf r,
# Запись логов только в свой каталог
/var/log/myscript/** rw,
# Запрет доступа к домашним директориям других пользователей
deny /home/*/**,
# Ограничение сети
network inet tcp,
deny network raw,
}
Частые проблемы и решения в ALT Linux
| Проблема |
Решение |
Can't create cache location |
Проверьте права на /var/cache/apparmor/, выполните sudo mkdir -p /var/cache/apparmor && sudo chmod 755 /var/cache/apparmor |
| Профиль не загружается |
Проверьте синтаксис: sudo apparmor_parser -r /etc/apparmor.d/profile_name |
| Приложение не запускается в режиме enforce |
Временно переключите в complain, проанализируйте логи через aa-logprof, добавьте недостающие правила |
| Конфликт с SELinux |
ALT Linux обычно использует один MAC-модуль. Проверьте: getenforce (SELinux) и aa-status (AppArmor). Отключите один из них в /etc/selinux/config или через ядро |
Рекомендация:
- Перед внедрением AppArmor в продакшн обязательно протестируйте все критические приложения в режиме
complain в течение 1-2 недель, чтобы выявить и добавить необходимые правила доступа.
Данный обзор охватывает базовые и продвинутые аспекты настройки AppArmor в ALT Linux. Для корпоративных развертываний рекомендуется дополнительно изучить политики централизованного управления профилями и интеграцию с системами аудита.