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>.