AppArmor - внутренняя безопасность Linux-системы
AppArmor - внутренняя безопасность Linux-системы
Основная беда безопасности приложений – невозможно сказать, как поведет себя ваше приложение в нестандартных условиях: число состояний и вариантов ввода слишком велико, чтобы исчерпывающе протестировать даже небольшую программу. Когда это выливается в проблему? Когда некто обнаруживает, что определённый набор входных данных приводит к некорректному поведению программы, позволяющему выполнять произвольный код в системе, и разрабатывает приложение, эксплуатирующее найденную уязвимость (подобные приложения так и называют – эксплойты, exploits).
Для решения проблемы эксплойтов и разработан AppArmor. AppArmor – это реализация мандатного контроля доступа для Linux-систем. Мандатный контроль доступа позволяет достичь уровня безопасности, принципиально невозможного для традиционного (дискреционного) контроля доступа, используемого в подавляющем большинстве современных операционных систем. В частности, системы мандатного контроля доступа используют правительственные и военные организации для строгого разграничения доступа к секретной информации.
Общая схема работы AppArmor представлена ниже:

- Ядро Linux 2.6 имеет новый интерфейс модулей безопасности Linux (Linux Security Modules), допускающий подключаемые модули безопасности. Процессы пользователя обращаются к ядру, которое при помощи всех загруженных LSM-модулей проверяет корректность доступа.
- Модуль ядра AppArmor Обеспечивает реальную политику безопасности, сверяя обращение программы с профилем и запрещая либо разрешая действие.
- Профили приложений. Содержат вашу политику безопасности и описывают, что позволено делать каждому приложению.
- AppArmor интерфейс - набор программ уровня пользователя для отображения и управления профилями AppArmor. Наиболее важным из них является синтаксический анализатор (parser), который читает профили, преобразует их в структуры данных, понятные ядру, и переправляет их модулю AppArmor.
- Отчеты и предупреждения Предоставляет отчеты о конфигурации AppArmor и предупреждает о попытках вторжения.
- Yast-интерфейс. В системах без Yast, AppArmor может управляться посредством его родного интерфейса командной строки.
AppArmor обеспечивает безопасность приложений, заставляя их делать только то, что они обязаны делать и не более того. Он контролирует файлы и функции POSIX.1e, к которым приложение имеет доступ, поскольку контроль над этими ресурсами и привилегиями на вашей машине и есть мечта злоумышленника. В данной статье я покажу, как использовать AppArmor для защиты ваших программ и системы от атак. Для примера возьмем какое-нибудь клиентское приложение. Мой выбор пал на популярный ICQ-мессенджер qutIM. Итак, запускаем Yast и в разделе Novell AppArmor запускаем мастер добавления профиля.

Теперь необходимо указать полный путь к приложению (/usr/bin/qutIM)

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

На следующем шаге необходимо запустить qutIM не закрывая мастер, подключиться и поотправлять сообщения, т.е. поработать с программой

Это необходимо для того чтобы мастер настройки мог отловить все библиотеки, конфигурационные файлы, команды и порты, необходимых для нормальной работы программы

Теперь мастер настройки будет мучить Вас вопросами, по каждому файлу, действительно ли он нужен для работы приложения?

После окончания настройки мастер покажет сгенерированный файл профиля для данного приложения

Настройка профиля завершена, теперь можно зайти в Yast->Novell AppArmor->Панель управления AppArmor и посмотреть активные профили в системе.

Каждый профиль можно подключать как в щадящем режиме (complain) так и в режиме усиленной безопасности (enforce). У AppArmor есть свой демон rcapparmor, который позволяет выполнять большинство типовых операций.

Как видите, в работе с AppArmor нет никаких сложностей (в отличие от SELinux), к тому же интеграция с Yast делает весь процесс быстрым и удобным. На настройку профиля для qutIM у меня ушло меньше 5 минут.
Ниже даны советы по настройке профилей в AppArmor:
- При обучении AppArmor, всегда оставляйте окно терминала открытым, выполнив команду tail -f /var/log/audit/audit.log, чтобы видеть в реальном времени, чем занимается AppArmor.
- Если вам показалось, что AppArmor где-то навредил, grep'ните файл /var/log/audit/audit.log. Если в нём ничего нет, то причина проблемы – не AppArmor. Если есть, то AppArmor объяснит, почему он что-то заблокировал. Еще лучше запустить logprof, чтобы AppArmor нашел блокирующее событие и спросил, хотите ли вы добавить его в список разрешенных для данного профиля.
- Команда complain /etc/apparmor.d/* быстро переведет всё в complain-режим, разрешающий все действия, так что AppArmor вообще ничего не будет блокировать. И обратно – enforce /etc/apparmor.d/* блокирует всё.
- Прежде чем создавать новый профиль, загляните в /etc/apparmor/profiles/extras/ – нет ли готового профиля, чтобы взять его в качестве исходного: это значительно сократит работу. AppArmor прекрасно улучшает существующие профили.
Обновлено (31.12.2010 22:58)



