Это старая версия документа.
Содержание
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 переводит профиль в режим сравнения.
sudo aa-complain /path/to/bin
3. aa-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 может использоваться совместно с опцией '-r' apparmor_parser для отключения профиля.
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. Путь записи: описывает какие файлы приложения имеют доступ к файловой системе.
2. Возможность записи: описывает права на ограничение процессов и разрешение на их использование.
Для примера посмотрим на /etc/apparmor.d/bin.ping:
<note>#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,
}<note>
1. #include <tunables/global>: включает утверждения из других файлов. Это позволяет утверждениям, относящимся к нескольким приложениям находится в одном общем файле.
2. /bin/ping flags=(complain): путь к профилю программы, также устанавливающий режим сравнения.
3. capability net_raw,: allows the application access to the CAP_NET_RAW Posix.1e capability.
4. /bin/ping mixr,: allows the application read and execute access to the file.
После редактирования файла профиля он должен быть перезагружен. Для детальной инрмации обратитесь к разделу Использование AppArmor
Создание профиля
Design a test plan: Try to think about how the application should be exercised. The test plan should be divided into small test cases. Each test case should have a small description and list the steps to follow.
Some standard test cases are:
Starting the program.
Stopping the program.
Reloading the program.
Testing all the commands supported by the init script.
Generate the new profile: Use aa-genprof to generate a new profile. From a terminal:
sudo aa-genprof executable
For example:
sudo aa-genprof slapd
To get your new profile included in the apparmor-profiles package, file a bug in Launchpad against the AppArmor package:
Include your test plan and test cases.
Attach your new profile to the bug.
Обновление профилей
When the program is misbehaving, audit messages are sent to the log files. The program aa-logprof can be used to scan log files for AppArmor audit messages, review them and update the profiles. From a terminal:
sudo aa-logprof
Ссылки
See the AppArmor Administration Guide for advanced configuration options.
For details using AppArmor with other Ubuntu releases see the AppArmor Community Wiki page.
The OpenSUSE AppArmor page is another introduction to AppArmor.
A great place to ask for AppArmor assistance, and get involved with the Ubuntu Server community, is the #ubuntu-server IRC channel on freenode.