Provided by: policycoreutils-python-utils_3.5-1_all
ИМЯ
audit2allow - создаёт правила политики SELinux allow/dontaudit из журналов отклонённых операций audit2why - преобразовывает сообщения аудита SELinux в описание причины отказа в доступе (audit2allow -w)
ОБЗОР
audit2allow [options]
ПАРАМЕТРЫ
-a | --all Прочитать ввод из журнала аудита и сообщений, конфликтует с -i -b | --boot Прочитать ввод из сообщений аудита с момента последней загрузки, конфликтует с -i -d | --dmesg Прочитать ввод из вывода /bin/dmesg. Обратите внимание, что с помощью dmesg будут доступны не все сообщения аудита, когда выполняется auditd; в этом случае используйте "ausearch -m avc | audit2allow" или "-a". -D | --dontaudit Создать правила dontaudit (по умолчанию: allow) -h | --help Вывести краткое сообщение об использовании -i <inputfile> | --input <inputfile> Прочитать ввод из <inputfile> -l | --lastreload Прочитать ввод только после последней перезагрузки политики -m <modulename> | --module <modulename> Создать модуль / запросить вывод <modulename> -M <modulename> Создать загружаемый пакет модуля, конфликтует с -o -p <policyfile> | --policy <policyfile> Файл политики, который следует использовать для анализа -o <outputfile> | --output <outputfile> Добавить вывод в конец <outputfile> -r | --requires Создать вывод в синтаксисе загружаемого модуля -N | --noreference Не создавать эталонную политику, традиционные разрешительные правила. Это поведение по умолчанию. -R | --reference Создать эталонную политику с помощью установленных макросов. Будет предпринята попытка сопоставить отказы в доступе с интерфейсами, это сопоставление может быть неправильным. -x | --xperms Создать расширенные правила вектора доступа для разрешения -w | --why Преобразовать сообщения аудита SELinux в описание причин отказа в доступе -v | --verbose Включить подробный вывод
ОПИСАНИЕ
Эта утилита ищет в журналах сообщения, которые появляются, когда система не даёт разрешения на операции, и создаёт фрагмент кода правил политики, который (если бы был загружен в политику) мог бы позволить этим операциям успешно завершиться. Однако эта утилита создаёт только разрешительные (allow) правила принудительного присвоения типов. При работе с некоторыми отказами в разрешениях может потребоваться изменить политику как-то иначе, например, добавить атрибут в объявление типа для удовлетворения существующему ограничению, добавить разрешительное правило для роли или изменить ограничение. Утилиту audit2why(8) можно использовать для диагностики неясных причин отказов в разрешениях. Использовать вывод этой утилиты необходимо с осторожностью; убедитесь, что разрешаемые операции не представляют угрозы безопасности. Часто лучше определить новые домены и/или типы или выполнить другие структурные изменения, чтобы разрешить успешное выполнение только оптимальному набору операций, а не вслепую применять иногда слишком обширные изменения, которые рекомендуются утилитой. Некоторые запреты на использование разрешений не вызывают критических ошибок в приложении; в этом случае предпочтительным может быть простое подавление журналирования отказов с помощью правила 'dontaudit', а не использование разрешительного правила 'allow'.
ПРИМЕР
ПРИМЕЧАНИЕ: эти примеры относятся к системам, использующим пакет аудита. Если вы не используете пакет аудита, сообщения кэша вектора доступа (AVC) будут находиться в каталоге /var/log/messages. Замените в примерах /var/log/messages на /var/log/audit/audit.log Использование audit2allow для создания модульной политики $ cat /var/log/audit/audit.log | audit2allow -m local > local.te $ cat local.te module local 1.0; require { class file { getattr open read }; type myapp_t; type etc_t; }; allow myapp_t etc_t:file { getattr open read }; <просмотреть local.te и настроить требуемым образом> Использование audit2allow для создания модульной политики с помощью эталонной политики $ cat /var/log/audit/audit.log | audit2allow -R -m local > local.te $ cat local.te policy_module(local, 1.0) gen_require(` type myapp_t; type etc_t; }; files_read_etc_files(myapp_t) <просмотреть local.te и настроить требуемым образом> Сборка модульной политики с помощью Makefile # SELinux предоставляет среду разработки политики в # /usr/share/selinux/devel, включая все поставляемые # файлы интерфейса. # Можно создать файл .te и скомпилировать его, выполнив $ make -f /usr/share/selinux/devel/Makefile local.pp # Эта команда make скомпилирует файл local.te в текущем # каталоге. Если не был указан файл "pp", будут скомпилированы # все файлы "te" в текущем каталоге. После компиляции файла # .te в файл "pp" его потребуется установить с помощью # команды semodule. $ semodule -i local.pp Сборка модульной политики вручную # Скомпилировать модуль $ 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 Создание файла принудительного присвоения типов: local.te Компиляция политики: checkmodule -M -m -o local.mod local.te Сборка пакета: semodule_package -o local.pp -m local.mod ******************** ВАЖНО *********************** Чтобы загрузить созданный пакет политики в ядро, необходимо выполнить semodule -i local.pp Использование 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
АВТОРЫ
Эта страница руководства была написана Manoj Srivastava <srivasta@debian.org> для системы Debian GNU/Linux. Она была обновлена Dan Walsh <dwalsh@redhat.com>. В разработке утилиты audit2allow участвовало несколько человек, в том числе Justin R. Smith, Yuichi Nakamura и Dan Walsh. Перевод на русский язык выполнила Герасименко Олеся <gammaray@basealt.ru>.