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 <[email protected]> для
системы Debian GNU/Linux.
Она была
обновлена Dan
Walsh <
[email protected]>.
В
разработке
утилиты
audit2allow
участвовало
несколько
человек, в
том числе
Justin R.
Smith, Yuichi Nakamura и
Dan Walsh.
Перевод на
русский
язык
выполнила
Герасименко
Олеся
<[email protected]>.