Подробный обзор настройки AppArmor в ALT Linux

Настройка AppArmor в ALT Linux: установка, профили, режимы enforce/complain. Защита приложений через MAC. Утилиты aa-status, aa-genprof. Повышение безопасности.

2026.03.31                  


Подробный обзор настройки AppArmor в ALT LinuxПодробный обзор настройки 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. Для корпоративных развертываний рекомендуется дополнительно изучить политики централизованного управления профилями и интеграцию с системами аудита.