Гид по технологиям

Создать профиль AppArmor и защитить приложение

5 min read Безопасность Linux Обновлено 22 Nov 2025
Создать профиль AppArmor и защитить приложение
Создать профиль AppArmor и защитить приложение

Как создать профили AppArmor для изоляции программ в Ubuntu

Кратко: пошаговое руководство по созданию, настройке и включению профилей AppArmor в Ubuntu. Рассмотрены тестовый план, режимы complain и enforce, ручная доработка профиля, чек-листы и обратный откат.

Важно: профиль AppArmor — это текстовый файл, который ограничивает доступ программы к файлам, сетям и ресурсам. AppArmor включён в Ubuntu по умолчанию.

Быстрые ссылки

  • Создание и запуск тест-плана
  • Включение режима complain и доработка профиля
  • Переход в режим enforce для жёсткой изоляции

Что такое AppArmor (одно предложение)

AppArmor — это подсистема безопасности ядра Linux, которая применяет профили с разрешениями для отдельных программ.

Введение

AppArmor помогает ограничивать программы в системе Ubuntu. Оно даёт приложению только те права, которые ему нужны при обычной работе. Это особенно полезно для серверных сервисов, которые могут быть скомпрометированы. В комплекте с Ubuntu идут утилиты, которые помогают сгенерировать и доработать профиль.

Прежде чем писать профиль с нуля, проверьте пакет apparmor-profiles в репозиториях Ubuntu — возможно профиль для вашей программы уже существует.

Создание и запуск тест-плана

Для корректного профиля нужно запустить приложение под наблюдением AppArmor и пройти все его обычные сценарии работы. Составьте тест-план: запуск, остановка, перезагрузка, основные функции и типичные рабочие сценарии.

Откройте терминал и установите утилиты, затем запустите генератор профиля:

sudo apt-get install apparmor-utils
sudo aa-genprof /path/to/binary

Оставьте aa-genprof запущенным в терминале. Запустите приложение и пройдите тест-план. Чем полнее тесты, тем меньше ручной доработки потребуется позже.

Запуск aa-genprof в терминале для мониторинга приложения

После завершения тест-плана вернитесь в терминал и нажмите клавишу S, чтобы просканировать системный журнал на события AppArmor.

aa-genprof поочерёдно покажет события и предложит варианты действий. Например, если /usr/bin/man, который вы профилировали, запустил /usr/bin/tbl, вам предложат выбрать: наследовать профиль родителя, назначить новый профиль для дочернего бинарника или разрешить его запуск без ограничения.

Подсказка aa-genprof: выбор наследования профиля для /usr/bin/tbl

Для других событий вы увидите иные подсказки. Здесь, например, мы разрешаем доступ к специальному устройству терминала /dev/tty:

Подсказка aa-genprof: разрешение доступа к /dev/tty

В конце процесса aa-genprof предложит сохранить созданный профиль.

Сохранение нового профиля AppArmor с помощью aa-genprof

Полезные команды для проверки

  • Проверить статус AppArmor:
sudo aa-status
  • Просмотреть активные профили и их состояние

  • Отключить профиль (откат):

sudo aa-disable /path/to/binary

Используйте откат осторожно и только для быстрого возврата в случае ошибок.

Включение режима complain и доработка профиля

После первоначального создания переведите профиль в режим complain. В этом режиме AppArmor не блокирует действия приложения, а записывает возможные нарушения в логи. Это безопасный способ собрать реальные ошибки и дополнить профиль разрешениями.

sudo aa-complain /path/to/binary

Работайте с приложением в течение некоторого времени. Затем просканируйте логи и примените рекомендуемые изменения:

sudo aa-logprof

aa-logprof: обзор предложенных изменений профиля из логов

aa-logprof покажет список предложений. Читайте подсказки внимательно. Отказывайтесь от изменений, которые раскрывают избыточные права.

Советы при работе в режиме complain:

  • Тестируйте в условиях, приближённых к продакшену.
  • Собирайте логи в течение нескольких рабочих циклов.
  • Фиксируйте изменения в системе контроля версий (git) для профилей.

Переход в режим enforce для жёсткой изоляции

Когда вы уверены в профиле, включите режим enforce — AppArmor начнёт блокировать действия, которые не разрешены профилем.

sudo aa-enforce /path/to/binary

После включения режима следите за логами. При необходимости повторите цикл: перевести в complain, собрать логи, доработать профиль, снова включить enforce.

Ручная правка профиля

Профили AppArmor — обычные текстовые файлы. Их можно править в любом редакторе. Файлы обычно лежат в /etc/apparmor.d/.

Простейший пример структуры профиля:

/usr/bin/example {
  #include 
  /usr/bin/example ix,
  /etc/example/ r,
  /var/log/example/ rw,
  /tmp/** rw,
  deny /etc/shadow r,
}

Ключевые элементы:

  • include — подключаемые общие правила
  • права доступа: r (read), w (write), x (execute), ix (inherit execute)
  • шаблоны путей: /*, /path/

После ручных правок примените профиль:

sudo apparmor_parser -r /etc/apparmor.d/your.profile

(Команда пересоберёт профиль и загрузит изменения в ядро.)

Когда AppArmor не подходит

  • Приложения с очень динамическими правами, которые постоянно генерируют новые пути, сложнее профилировать.
  • Если вам нужна политика на основе ролей и атрибутов (RBAC на уровне объектов), может подойти SELinux.
  • AppArmor ориентирован на файлы и пути; для сетевой сегментации нужны другие решения (firewall, network namespaces).

Альтернативы и дополнения

  • SELinux — более гибкая и мощная, но сложнее в настройке и аудите.
  • Контейнерные технологии (Docker, Podman) дают изоляцию процесса и файловой системы.
  • seccomp — ограничивает системные вызовы процесса.

Выбор зависит от требований к безопасности и операционной сложности.

Мини-методология (SOP) для внедрения профиля

  1. Оцените приложение и найдите существующие профили в apparmor-profiles.
  2. Составьте тест-план с основными сценариями.
  3. Запустите aa-genprof и выполните тест-план.
  4. Сохраните и переведите профиль в режим complain.
  5. Соберите логи с помощью aa-logprof и доработайте профиль.
  6. Протестируйте в complain ещё один цикл.
  7. Включите режим enforce и наблюдайте за логами.
  8. Храните версионируемые копии профилей и документируйте изменения.

Ролевые чек-листы

Администратор:

  • Проверить наличие профиля в репозитории.
  • Запустить aa-genprof и контролировать тест-план.
  • Применить профиль и следить за журналами.

Разработчик:

  • Предоставить список файлов и сетевых ресурсов, которые нужны приложению.
  • Помочь воспроизвести редкие кейсы в тест-плане.

Инженер по безопасности:

  • Оценить изменения, предлагаемые aa-logprof.
  • Проверить на предмет избыточных разрешений.

Критерии приёмки

  • Приложение выполняет все функции в режиме enforce без блокировок.
  • В логах нет критичных отказов, связанных с профилем.
  • Профиль задокументирован и версионирован.

Примеры неприятностей и их устранение (runbook)

  1. Симптом: приложение перестало запускаться после перехода в enforce. Действие: временно перевести профиль в complain и проанализировать логи, затем доработать правило.
sudo aa-complain /path/to/binary
sudo journalctl -u appname --no-pager | tail -n 200
sudo aa-logprof
  1. Симптом: профиль дал слишком много прав. Действие: отменить предложенные изменения, провести ревью и убрать явно лишние разрешения.

  2. Откат полного профиля:

sudo aa-disable /path/to/binary

Безопасность и конфиденциальность логов

AppArmor логирует события доступа. Убедитесь, что туда не попадают чувствительные данные. Настройте ротацию логов и права доступа к журналам, чтобы логи не раскрывали секреты пользователей.

Глоссарий (1 строка на термин)

  • AppArmor — система ограничений доступа для программ в Linux.
  • Профиль — текстовый набор правил для конкретной программы.
  • complain — режим, где нарушения логируются, но не блокируются.
  • enforce — режим, где нарушения блокируются.
  • aa-genprof — утилита для интерактивного создания профилей.
  • aa-logprof — утилита для анализа логов и предложения изменений.

Краткое резюме

AppArmor даёт управляемую и понятную модель изоляции процессов. Сочетание aa-genprof, режима complain и aa-logprof позволяет минимизировать ручную работу. Всегда тестируйте профиль в условиях, близких к реальным, и документируйте изменения.


Ключевые шаги: 1) сгенерировать профиль через aa-genprof; 2) работать в режиме complain и править через aa-logprof; 3) включить enforce и мониторить логи.

Поделиться: X/Twitter Facebook LinkedIn Telegram
Автор
Редакция

Похожие материалы

Доступ к Android с разбитым экраном
Android.

Доступ к Android с разбитым экраном

Сброс Samsung при заблокированном телефоне
Мобильные устройства

Сброс Samsung при заблокированном телефоне

Как разогнать монитор через NVIDIA Control Panel
Гайды

Как разогнать монитор через NVIDIA Control Panel

APC_INDEX_MISMATCH: как исправить BSOD в Windows
Инструкции

APC_INDEX_MISMATCH: как исправить BSOD в Windows

Как исправить ошибку Blink 1011
Техническая поддержка

Как исправить ошибку Blink 1011

Восстановление удалённых SMS на Samsung
Мобильные

Восстановление удалённых SMS на Samsung