Различия
Здесь показаны различия между двумя версиями данной страницы.
| Предыдущая версия справа и слева Предыдущая версия Следующая версия | Предыдущая версия | ||
| 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. | + | |
| ---- | ---- | ||
 
			 
	