Содержание
AppArmor
AppArmor - это реализация Модуля безопасности линукс по управлению доступом на основе имен. AppArmor ограничивает отдельные программы набором перечисленных файлов и возможностями в соответствии с правилами Posix 1003.1e.
AppArmor устанавливается и загружается по умолчанию. Он использует профили приложений для определения какие файлы и права доступа требуются приложению. Некоторые пакеты устанавливают свои собственные профили, а дополнительные профили можно найти в пакете apparmor-profiles.
Для установки пакета apparmor-profiles наберите в терминале:
sudo apt-get install apparmor-profiles
Профили AppArmor имеют два режима выполнения:
Фиксации/Обучения: нарушения профиля разрешаются и сохраняются в журнале. Полезно для тестирования и разработки новых профилей
Предписаний/Ограничений: принуждает следовать политике профиля, при этом также записывает нарушения в журнал.
Использование AppArmor
Пакет apparmor-utils содержит утилиты командной строки, которые можно использовать для изменения режима выполнения AppArmor, поиска статуса профиля, создания новых профилей и т.п.
1. apparmor_status используется для просмотра текущего статуса профиля AppArmor.
sudo apparmor_status
2. aa-complain переводит профиль в режим обучения (complain).
sudo aa-complain /path/to/bin
3. aa-enforce переводит профиль в режим ограничений (enforce).
sudo aa-enforce /path/to/bin
4. Профили AppArmor расположены в каталоге /etc/apparmor.d. Его можно использовать для управления режимом всех профилей. Введите следующую команду для перевода всех профилей в режим обучения:
sudo aa-complain /etc/apparmor.d/*
Перевод всех профилей в режим ограничений:
sudo aa-enforce /etc/apparmor.d/*
5. Команда apparmor_parser используется для загрузки профиля в ядро. Она также может использоваться для повторной загрузки загруженного профиля при использовании опции '-r'. Для загрузки введите:
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
Для перезагрузки:
cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r
6. /etc/init.d/apparmor служит для перезагрузки всех профилей:
sudo /etc/init.d/apparmor reload
7. Директория /etc/apparmor.d/disable может использоваться совместно с опцией apparmor_parser -R для отключения профиля.
sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/ sudo apparmor_parser -R /etc/apparmor.d/profile.name
Для активации отключенного профиля удалите символическую ссылку на профиль в /etc/apparmor.d/disable/. Затем загрузите профиль используя опцию '-a'.
sudo rm /etc/apparmor.d/disable/profile.name cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a
8. AppArmor можно отключить, а модуль ядра выгрузить следующей командой:
sudo /etc/init.d/apparmor stop sudo update-rc.d -f apparmor remove
9. Для повторной активации AppArmor введите:
sudo /etc/init.d/apparmor start sudo update-rc.d apparmor defaults
Профили
Профили AppArmor - это простые текстовые файлы, которые расположены в /etc/apparmor.d/. Файлы профиля называются соответственно полному пути до исполняемого файла, которым они управляют, с заменой символа «/» на «.». Например /etc/apparmor.d/bin.ping - это профиль AppArmor для команды /bin/ping.
Существует два основных типа правил, используемых в профиле:
1. Записи путей (Path entries): которые описывают к каким файлам приложение имеет доступ в файловой системе. 2. Записи разрешений (Capability entries): определяют какие права ограничиваемый процесс имеет право использовать.
В качестве примера посмотрим /etc/apparmor.d/bin.ping:
#include <tunables/global> /bin/ping flags=(complain) { #include <abstractions/base> #include <abstractions/consoles> #include <abstractions/nameservice> capability net_raw, capability setuid, network inet raw, /bin/ping mixr, /etc/modules.conf r, }
#include <tunables/global>: включает операторы из других файлов. Это позволяет операторам, относящимся к нескольким приложениям находится в одном общем файле.
/bin/ping flags=(complain): путь к программе, управляемой профилем, также устанавливающий режим обучения.
capability net_raw,: разрешает приложению доступ к возможностям CAP_NET_RAW Posix.1e.
/bin/ping mixr,: разрешает приложению доступ на чтение и выполнение файла.
Создание профиля
1. Разработка плана тестирования: Попробуйте подумать о том как приложение будет выполняться. План тестирования стоит разделить на маленькие тестовые блоки. Каждый тестовый блок должен иметь краткое описание и перечень шагов выполнения. Некоторые стандартные тестовые блоки:
Запуск программы.
Остановка программы.
Перезагрузка программы.
Тестирование всех команд, поддерживаемых сценарием инициализации.
2. Создание нового профиля: Используйте aa-genprof для создания нового профиля. Команда в терминале:
sudo aa-genprof executable
Например:
sudo aa-genprof slapd
3. Чтобы получить ваш новый профиль в составе пакета apparmor-profiles, зарегистрируйте проблему в Launchpad для пакета AppArmor:
Включите ваш план тестирования и тестовые блоки.
Присоедините ваш новый профиль к зарегистрированной проблеме.
Обновление профилей
Когда программа ведет себя неправильно, проанализируйте сообщения отправленные в файлы журналов. Программа aa-logprof может быть использована для сканирования файлов журнала AppArmor для проверки сообщений, их рассмотрения (анализа) и обновления профилей. Команда в терминале:
sudo aa-logprof
Ссылки
Смотрите AppArmor Administration Guide для дополнительных опций настройки.
Для уточнения использования AppArmor с другими выпусками Ubuntu смотрите страницу AppArmor Community Wiki.
Страница OpenSUSE AppArmor - еще одно знакомство с AppArmor.
Хорошее место для вопросов поддержки AppArmor и вовлечения в сообщество Ubuntu Server - IRC канал #ubuntu-server на freenode.