Эта утилита сканирует журналы в поиске сообщений, появляющихся когда система не дает разрешения на операцию. Далее утилита генерирует ряд правил, которые, будучи загруженными в политику, могли бы разрешить эти операции. Однако, данная утилита генерирует только разрешающие правила Type Enforcement (TE). Некоторые отказы в использовании разрешений могут потребовать других изменений политики. Например, добавление атрибута в определение типа, для разрешения существующего ограничения (constraint), добавления разрешающего правила для роли или модификации ограничения (constraint). В случае сомнений для диагностики можно попробовать использовать утилиту audit2why(8).
Следует с осторожностью работать с выводом данной утилиты, убедившись, что разрешаемые операции не представляют угрозы безопасности. Обычно бывает лучше определить новый домен и/или тип или произвести другие структурные изменения. Лучше избирательно разрешить оптимальный набор операций вместо того, чтобы вслепую применить иногда слишком широкие разрешения, рекомендованные этой утилитой. Некоторые запреты на использование разрешений бывают не принципиальны для приложения. В таких случаях вместо использования разрешительного правила ('allow' rule) лучше просто подавить журналирование этих запретов при помощи правила 'dontaudit'.
ЗАМЕЧАНИЕ: Этот пример подходит для системы, использующей пакет audit. Если вы не используете пакет audit, сообщения AVC будут появляться в /var/log/messages. В этом случае замените /var/log/audit/audit.log, используемый в примере, на /var/log/messages. Использование audit2allow для генерации монолитной (не модульной) политики $ cd /etc/selinux/$SELINUXTYPE/src/policy $ cat /var/log/audit/audit.log | audit2allow >> domains/misc/local.te $ cat domains/misc/local.te allow cupsd_config_t unconfined_t:fifo_file { getattr ioctl }; <просмотрите domains/misc/local.te и при желании измените> $ make load Использование audit2allow для генерации модульной политики $ cat /var/log/audit/audit.log | audit2allow -m local > local.te $ cat local.te module local 1.0; require { role system_r; class fifo_file { getattr ioctl }; type cupsd_config_t; type unconfined_t; }; allow cupsd_config_t unconfined_t:fifo_file { getattr ioctl }; <просмотрите local.te и при желании измените> Создание модуля политики вручную # Скомпилируйте модуль $ checkmodule -M -m -o local.mod local.te # Создайте пакет $ semodule_package -o local.pp -m local.mod # Загрузите модуль в ядро $ semodule -i local.pp Использование audit2allow для генерации и создания модуля политики $ cat /var/log/audit/audit.log | audit2allow -M local Создается новый type enforcment файл: local.te Компиляция политики: checkmodule -M -m -o local.mod local.te Создание пакета: semodule_package -o local.pp -m local.mod ******************** В А Ж Н О *********************** Для того, чтобы загрузить только что созданный пакет политики в ядро, вам необходимо выполнить команду semodule -i local.pp
Перевод руководства - Andrey Markelov <andrey@markelov.net>, 2007г.
Разработчиками утилиты audit2allow являются несколько человек, включая Justin R. Smith , Yuichi Nakamura и Dan Walsh
Закладки на сайте Проследить за страницей |
Created 1996-2024 by Maxim Chirkov Добавить, Поддержать, Вебмастеру |