AppArmor. Как ограничивать приложения в Linux простыми словами

6 минут чтения
Средний рейтинг статьи — 4.8

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

AppArmor — это механизм безопасности, который ограничивает поведение приложений. Он отвечает на простой вопрос: что этому процессу вообще разрешено делать?

Идея AppArmor

AppArmor работает по принципу «разрешено только то, что явно указано».

Для каждого приложения создаётся профиль — набор правил:

  • какие файлы можно читать
  • куда можно писать
  • какие системные вызовы допустимы
  • можно ли открывать сеть

Если действие не разрешено — оно блокируется.

Как это выглядит на практике

Допустим, у вас есть веб-сервер.

Без ограничений он может:

  • читать любые файлы в системе
  • писать куда угодно
  • запускать команды

С AppArmor вы можете задать:

  • читать только /var/www
  • писать только в /var/log
  • запретить запуск других процессов

Даже если сервер взломают — злоумышленник упрётся в эти ограничения.

Режимы работы

AppArmor работает в двух основных режимах.

1. Enforce

  • правила применяются
  • запрещённые действия блокируются

Это боевой режим.

2. Complain

  • действия не блокируются
  • но записываются в лог

Это удобно для настройки:

  • сначала смотрим, что делает приложение
  • потом формируем правила

Профили

Профиль — это файл с правилами.

Пример (упрощённо):

/usr/bin/myapp {
  /var/www/** r,
  /var/log/** rw,
  network inet stream,
}

Это означает:

  • читать /var/www
  • читать и писать в /var/log
  • использовать TCP

Почему это важно

AppArmor — это дополнительный слой защиты.

Даже если:

  • есть уязвимость в приложении
  • кто-то получил доступ

он не сможет:

  • читать системные файлы
  • получить root-доступ через простые методы

Это сильно снижает последствия взлома.

Где используется

AppArmor часто включён по умолчанию в:

  • Ubuntu
  • Debian

Также используется в:

  • Docker (через профили контейнеров)
  • Kubernetes (через security policies)

AppArmor vs SELinux

Оба решают одну задачу, но:

  • AppArmor проще в настройке
  • SELinux более гибкий, но сложнее

AppArmor описывает доступ через пути файлов, что делает его более понятным.

Типичный сценарий внедрения

  1. Запустить приложение в режиме complain
  2. Посмотреть логи
  3. Сгенерировать профиль
  4. Переключить в enforce

Это позволяет избежать случайных блокировок.

Ограничения

  • требует настройки профилей
  • может ломать приложение при неправильной конфигурации
  • не защищает от всех типов атак

Но как дополнительный слой защиты — очень эффективен.

Итог

AppArmor — это простой способ ограничить поведение приложений в Linux.

  • задаёт чёткие правила доступа
  • уменьшает поверхность атаки
  • защищает систему даже при наличии уязвимостей

Если упрощать:

  • приложение может делать только то, что вы разрешили
  • всё остальное запрещено

Это делает AppArmor важным инструментом для повышения безопасности продакшен-систем.

6 минут чтения
Средний рейтинг статьи — 4.8

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний