Использование утилиты SELinux Troubleshooting Tool
Автор: Administrator
5.1.2. Использование утилиты SELinux Troubleshooting Tool
По умолчанию система SELinux посылает служебные сообщения в файл /var/log/messages если не используется система аудита событий. Если используется система аудита событий, то данные события записываются в файл /var/Iog/audit/audit.log. События SELinux помечаются меткой AVC, поэтому их легко определить среди других событий. Для анализа данных событий в ОС Linux используется утилита SELinux Troubleshooting Tool, для использования которой необходимо установить пакет setroubleshoot. Демон setroubleshootd, входящий в состав данного пакета используется для запуска процесса анализа. Все данные анализа журналируются в файл /var/log/setroubleshootd.log. Для просмотра результатов работы анализа необходимо запустить утилиут SELinux Troubleshooting Tool из меню Administration -> SELinux Troubleshooting.
Работа с контекстами безопасности
Когда механизм SELinux активизирован в системе, все объекты файловой системы имеют контекст безопасности. Ядро разрешает доступ процесса к объекту только если данный тип доступа разрешен политикой SELinux. Политика SELinux в свою очередь, для управления доступом к объектам файловой системы, помечает каждый файл при помощи контекста безопасности. Алгоритм работы механизма SELinux заключается в следующем. Если приложение выполняет попытку доступа к объекту, например, файлу или сокету, то механизм SELinux проверяет в ядре кэш вектора доступа (Access Vector Cache (AVC)), в котором находятся кэшированные данные о правах доступа к объекту. Если решение по контролю доступа не может быть сделано на основе данных кэша AVC, то проверяется контекст безопасности приложения и самого объекта. На основании контента безопасности приложения и самого объекта решается вопрос о предоставлении или запрете прав доступа приложения к данному объекту. В результате данной проверки в журнале /var/log/messages, в случае запрета доступа к объекту, будет выведено сообщение, содержащее строку avc: denied. Контекст безопасности для процессов, например, таких как httpd имеет вид httpdt. Контекст безопасности для файлов называется файловым контекстом и записывается в расширенных атрибутах файла. Файловый контекст имеет четыре поля, разделенных символом двоеточия:
user:role:type:mis
В поле user указывается пользователь, который создал данный файл. Поле role определяет роль объекта или файла. Поле type определяет правило, ассоциированное с данным объектом. До тех пор пока не будет использована политика MLS, четвертое поле не используется. Пример файлового контекста в случае использования политики targeted имеет следующий вид:
system_u:object_r:etc_r
В данном примере файл идентифицируется в поле system_u. Данный файл является объектом, помеченным меткой object_r, и подчиняется правилу etc_r, так как данный файл содержится в каталоге /etc. Для просмотра файлового контекста объектов файловой системы используется команда Is -Z. Для просмотра контекста безопасности процессов используется команда ps -Z.
Листинг 5.1. Файловые контексты при просмотре содержимого каталога /etc/sysconfig
В процессе копирования файлов для указания их контекста безопасности используется следующая команда:
ср -Z <context> file <путь_к_файлу>
Если ключ -z указан не будет, то для копируемого файла создастся новый контекст безопасности на основе процесса, который его создал и каталога, в котором находится созданный файл. При использовании команды mv контекст безопасности файла сохраняется. Если необходимо изменить контекст безопасности для перемещенного файла, то следует использовать следующую команду:
chcon <контекст> <имя_файла>
После того, как контекст безопасности для файла будет изменен, необходимо в этом убедиться, используя команду secon -f <имя_файла>.