AppArmor. Как ограничивать приложения в Linux простыми словами
Когда мы запускаем приложение в 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 описывает доступ через пути файлов, что делает его более понятным.
Типичный сценарий внедрения
- Запустить приложение в режиме complain
- Посмотреть логи
- Сгенерировать профиль
- Переключить в enforce
Это позволяет избежать случайных блокировок.
Ограничения
- требует настройки профилей
- может ломать приложение при неправильной конфигурации
- не защищает от всех типов атак
Но как дополнительный слой защиты — очень эффективен.
Итог
AppArmor — это простой способ ограничить поведение приложений в Linux.
- задаёт чёткие правила доступа
- уменьшает поверхность атаки
- защищает систему даже при наличии уязвимостей
Если упрощать:
- приложение может делать только то, что вы разрешили
- всё остальное запрещено
Это делает AppArmor важным инструментом для повышения безопасности продакшен-систем.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний