Различия
Здесь показаны различия между двумя версиями данной страницы.
Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
wiki:руководство_по_ubuntu_server:безопасность:apparmor [2012/06/22 16:22] |
wiki:руководство_по_ubuntu_server:безопасность:apparmor [2012/06/22 21:07] (текущий) [Ссылки] |
||
---|---|---|---|
Строка 21: | Строка 21: | ||
====Использование AppArmor==== | ====Использование AppArmor==== | ||
- | Пакет apparmor-utils содержит утилиты командной строки, которые можно использовать для изменения режима выполнения AppArmor, поиска статуса профиля, создания новых профилей и т.д. | + | Пакет apparmor-utils содержит утилиты командной строки, которые можно использовать для изменения режима выполнения AppArmor, поиска статуса профиля, создания новых профилей и т.п. |
- | 1. apparmor_status используется для просмотра текущего статуса профиля AppArmor. | + | 1. **apparmor_status** используется для просмотра текущего статуса профиля AppArmor. |
<code>sudo apparmor_status</code> | <code>sudo apparmor_status</code> | ||
- | + | 2. **aa-complain** переводит профиль в режим обучения (complain). | |
- | 2. aa-complain переводит профиль в режим сравнения. | + | |
<code>sudo aa-complain /path/to/bin</code> | <code>sudo aa-complain /path/to/bin</code> | ||
- | + | 3. **aa-enforce** переводит профиль в режим ограничений (enforce). | |
- | 3. aa-enforce переводит профиль в принудительный режим работы. | + | |
<code>sudo aa-enforce /path/to/bin</code> | <code>sudo aa-enforce /path/to/bin</code> | ||
- | + | 4. Профили AppArmor расположены в каталоге /etc/apparmor.d. Его можно использовать для управления режимом всех профилей. | |
- | 4. Профили AppArmor по умолчанию расположены в директории /etc/apparmor.d. Эту директорию можно использовать для настройки режимов всех профилей. | + | Введите следующую команду для перевода всех профилей в режим обучения: |
- | + | ||
- | Введите следующую команду для перевода всех профилей в режим сравнения: | + | |
<code>sudo aa-complain /etc/apparmor.d/*</code> | <code>sudo aa-complain /etc/apparmor.d/*</code> | ||
- | + | Перевод всех профилей в режим ограничений: | |
- | Перевод всех профилей в принудительный режим работы: | + | |
<code>sudo aa-enforce /etc/apparmor.d/*</code> | <code>sudo aa-enforce /etc/apparmor.d/*</code> | ||
- | + | 5. Команда **apparmor_parser** используется для загрузки профиля в ядро. Она также может использоваться для повторной загрузки загруженного профиля при использовании опции '-r'. Для загрузки введите: | |
- | 5. Команда apparmor_parser используется для загрузки профиля в ядро. Она также может использоватся для перезагрузки недавно загруженного профиля при использовании опции '-r'. Для загрузки введите: | + | |
<code>cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a</code> | <code>cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a</code> | ||
- | |||
Для перезагрузки: | Для перезагрузки: | ||
<code>cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r</code> | <code>cat /etc/apparmor.d/profile.name | sudo apparmor_parser -r</code> | ||
- | + | 6. /etc/init.d/apparmor служит для перезагрузки всех профилей: | |
- | 6. /etc/init.d/apparmor служит для перезагрузки всех профилей: | + | |
<code>sudo /etc/init.d/apparmor reload</code> | <code>sudo /etc/init.d/apparmor reload</code> | ||
- | + | 7. Директория /etc/apparmor.d/disable может использоваться совместно с опцией **apparmor_parser -R** для отключения профиля. | |
- | 7. Директория /etc/apparmor.d/disable может использоваться совместно с опцией '-r' apparmor_parser для отключения профиля. | + | <code> |
- | <code>sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/ | + | sudo ln -s /etc/apparmor.d/profile.name /etc/apparmor.d/disable/ |
- | sudo apparmor_parser -R /etc/apparmor.d/profile.name</code> | + | sudo apparmor_parser -R /etc/apparmor.d/profile.name |
+ | </code> | ||
Для активации отключенного профиля удалите символическую ссылку на профиль в /etc/apparmor.d/disable/. Затем загрузите профиль используя опцию '-a'. | Для активации отключенного профиля удалите символическую ссылку на профиль в /etc/apparmor.d/disable/. Затем загрузите профиль используя опцию '-a'. | ||
- | <code>sudo rm /etc/apparmor.d/disable/profile.name | + | <code> |
- | cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a</code> | + | sudo rm /etc/apparmor.d/disable/profile.name |
+ | cat /etc/apparmor.d/profile.name | sudo apparmor_parser -a | ||
+ | </code> | ||
+ | 8. AppArmor можно отключить, а модуль ядра выгрузить следующей командой: | ||
+ | <code> | ||
+ | sudo /etc/init.d/apparmor stop | ||
+ | sudo update-rc.d -f apparmor remove | ||
+ | </code> | ||
+ | 9. Для повторной активации AppArmor введите: | ||
+ | <code> | ||
+ | sudo /etc/init.d/apparmor start | ||
+ | sudo update-rc.d apparmor defaults | ||
+ | </code> | ||
- | 8. AppArmor можно отключить, а модуль ядра выгрузить следующей командой: | + | <note>Замените **profile.name** на имя вашего профиля, которым вы хотите управлять. Также необходимо заменить /path/to/bin/ на реальный путь выполненяемого файла. Например, для команды ping используйте /bin/ping</note> |
- | <code>sudo /etc/init.d/apparmor stop | + | |
- | sudo update-rc.d -f apparmor remove</code> | + | |
- | + | ||
- | 9. Для активации AppArmor введите: | + | |
- | <code>sudo /etc/init.d/apparmor start | + | |
- | sudo update-rc.d apparmor defaults</code> | + | |
- | + | ||
- | <note>Замените profile.name на имя вашего профиля, который вы хотите настроить. Также необходимо заменить /path/to/bin/ на реальный путь выполнения файла. Например, для команды ping используйте /bin/ping</note> | + | |
====Профили==== | ====Профили==== | ||
- | Профили AppArmor - это простые текстовые файлы, которые расположены в /etc/apparmor.d/. Файлы названы соответственно полному пути исполнения их профиля и замещенной чертой "/" на ".". Например /etc/apparmor.d/bin.ping - это профиль AppArmor для команды /bin/ping. | + | Профили **AppArmor** - это простые текстовые файлы, которые расположены в /etc/apparmor.d/. Файлы профиля называются соответственно полному пути до исполняемого файла, которым они управляют, с заменой символа "/" на ".". Например /etc/apparmor.d/bin.ping - это профиль AppArmor для команды /bin/ping. |
- | Существует два главных правила используемых в профиле: | + | Существует два основных типа правил, используемых в профиле: |
- | 1. Путь записи: описывает какие файлы приложения имеют доступ к файловой системе. | + | 1. **Записи путей** (Path entries): которые описывают к каким файлам приложение имеет доступ в файловой системе. |
+ | 2. **Записи разрешений** (Capability entries): определяют какие права ограничиваемый процесс имеет право использовать. | ||
- | 2. Возможность записи: описывает права на ограничение процессов и разрешение на их использование. | + | В качестве примера посмотрим /etc/apparmor.d/bin.ping: |
- | + | <code> | |
- | Для примера посмотрим на /etc/apparmor.d/bin.ping: | + | #include <tunables/global> |
- | + | ||
- | <note>#include <tunables/global> | + | |
/bin/ping flags=(complain) { | /bin/ping flags=(complain) { | ||
#include <abstractions/base> | #include <abstractions/base> | ||
Строка 91: | Строка 86: | ||
/bin/ping mixr, | /bin/ping mixr, | ||
/etc/modules.conf r, | /etc/modules.conf r, | ||
- | }<note> | + | } |
+ | </code> | ||
- | 1. #include <tunables/global>: включает утверждения из других файлов. Это позволяет утверждениям, относящимся к нескольким приложениям находится в одном общем файле. | + | -- **#include <tunables/global>**: включает операторы из других файлов. Это позволяет операторам, относящимся к нескольким приложениям находится в одном общем файле. |
+ | -- **/bin/ping flags=(complain)**: путь к программе, управляемой профилем, также устанавливающий режим обучения. | ||
+ | -- **capability net_raw,**: разрешает приложению доступ к возможностям CAP_NET_RAW Posix.1e. | ||
+ | -- **/bin/ping mixr,**: разрешает приложению доступ на чтение и выполнение файла. | ||
- | 2. /bin/ping flags=(complain): путь к профилю программы, также устанавливающий режим сравнения. | + | <note>После редактирования файла профиля, он должен быть перезагружен. Для детальной информации обратитесь к разделу [[wiki:руководство_по_ubuntu_server:безопасность:apparmor#использование_apparmor|Использование AppArmor]]</note> |
- | + | ||
- | 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. | + | |
- | + | ||
- | После редактирования файла профиля он должен быть перезагружен. Для детальной инрмации обратитесь к разделу [[wiki:руководство_по_ubuntu_server:безопасность:apparmor#использование_apparmor|Использование 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. | + | 1. **Разработка плана тестирования**: Попробуйте подумать о том как приложение будет выполняться. План тестирования стоит разделить на маленькие тестовые блоки. Каждый тестовый блок должен иметь краткое описание и перечень шагов выполнения. |
+ | Некоторые стандартные тестовые блоки: | ||
+ | -- Запуск программы. | ||
+ | -- Остановка программы. | ||
+ | -- Перезагрузка программы. | ||
+ | -- Тестирование всех команд, поддерживаемых сценарием инициализации. | ||
- | Some standard test cases are: | + | 2. **Создание нового профиля**: Используйте **aa-genprof** для создания нового профиля. Команда в терминале: |
+ | <code>sudo aa-genprof executable</code> | ||
+ | Например: | ||
+ | <code>sudo aa-genprof slapd</code> | ||
- | Starting the program. | + | 3. Чтобы получить ваш новый профиль в составе пакета **apparmor-profiles**, зарегистрируйте проблему в Launchpad для пакета [[https://bugs.launchpad.net/ubuntu/+source/apparmor/+filebug|AppArmor]]: |
- | + | -- Включите ваш план тестирования и тестовые блоки. | |
- | 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: | + | Когда программа ведет себя неправильно, проанализируйте сообщения отправленные в файлы журналов. Программа **aa-logprof** может быть использована для сканирования файлов журнала **AppArmor** для проверки сообщений, их рассмотрения (анализа) и обновления профилей. Команда в терминале: |
- | + | <code>sudo aa-logprof</code> | |
- | sudo aa-logprof | + | |
====Ссылки==== | ====Ссылки==== | ||
- | See the AppArmor Administration Guide for advanced configuration options. | + | -- Смотрите [[http://www.novell.com/documentation/apparmor/apparmor201_sp10_admin/index.html?page=/documentation/apparmor/apparmor201_sp10_admin/data/book_apparmor_admin.html|AppArmor Administration Guide]] для дополнительных опций настройки. |
- | + | -- Для уточнения использования AppArmor с другими выпусками Ubuntu смотрите страницу [[https://help.ubuntu.com/community/AppArmor|AppArmor Community Wiki]]. | |
- | For details using AppArmor with other Ubuntu releases see the AppArmor Community Wiki page. | + | -- Страница [[http://en.opensuse.org/SDB:AppArmor_geeks|OpenSUSE AppArmor]] - еще одно знакомство с AppArmor. |
- | + | -- Хорошее место для вопросов поддержки AppArmor и вовлечения в сообщество Ubuntu Server - IRC канал **#ubuntu-server** на [[http://freenode.net/|freenode]]. | |
- | 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. | + | |
---- | ---- |