Файл /etc/audit/audit.rules#
audit.rules - это файл, содержащий набор правил аудита, которые загружаются сценарием инициализации демона аудита при каждом его запуске с использованием auditctl. Подробная информация содержится в разделе «Аудит в Platform V SberLinux OS Server» → «Утилита auditctl».
Синтаксис правил аналогичен синтаксису команд auditctl. Правила аудита разделяются на три вида: control, file, syscall.
control- управляющие команды, обычно включающие в себя настройку системы аудита, а не указание ей, на что обращать внимание. Эти команды обычно включают удаление всех правил, настройку размера очереди backlog ядра, настройку режима сбоев, ограничение частоты событий или указаниеauditctlигнорировать синтаксические ошибки в правилах и продолжать загрузку.file- правила файловой системы (правила отслеживания), используемые для проверки доступа к определенным файлам/каталогам. Если указанный путь является каталогом, то используемое правило является рекурсивным в нижней части дерева каталогов, исключая любые каталоги, которые могут быть точками подключения. Синтаксис данных правил обычно соответствует формату:-a always,exit -F arch=b64 -F path=path-to-file -F perm=permissions -F key=keynameГде разрешения могут быть:
r- чтение файла;w- запись в файл;x- выполнение файла;a- изменение атрибута файла.
Поле
archзаполняется для повышения производительности. Индивидуальные разрешения приведут к выбору конкретных системных вызовов, которые используют данный тип доступа. Неуказаниеarchприведет к выбору всех системных вызовов, что негативно повлияет на производительность, поскольку будут оцениваться все системные вызовы.Записи также могут быть созданы с использованием формата
-w, который обеспечивает обратную совместимость за счет снижения производительности системы, аналогичного описанному выше. Используяsyscall, можно выбрать междуpathиdir, которые соответствуют определенному индексному узлу или дереву каталогов соответственно. Рекурсивный просмотр каталогов будет остановлен, если точка монтирования находится ниже родительского каталога. Существует возможность сделать подключенный подкаталог эквивалентным, используя правилоa -q.syscall- правила системных вызовов загружаются в соответствующий модуль, который перехватывает каждый системный вызов, выполняемый всеми программами в системе; влияют на производительность. Чем больше правил, тем ниже производительность. Для минимизации влияния на производительность можно объединить системные вызовы в одно правило, когда это возможно.В ядре есть 6 списков соответствия правил (фильтров):
task,exit,user,exclude,filesystemиio_uring:Фильтр
taskпроверяется только во время системных вызововforkилиclone; на практике используется редко.exit- место, где обрабатываются все системные вызовы и запросы на аудит файловой системы.user- используется для фильтрации (удаления) некоторых событий, происходящих в пользовательском пространстве. По умолчанию разрешено любое событие.exclude- исключение отправки определенных событий. Атрибутmsgtypeи ряд полейsubjectмогут использоваться для указания ядру, какие типы сообщений не нужно записывать. Данный фильтр может удалять событие в целом и не является избирательным в отношении каких-либо других атрибутов. Для выборочного аудита событий больше подходят фильтрыuserиexit. Для фильтраexcludeдействие игнорируется, по умолчанию установлено значениеnever.filesystem- исключение событий для конкретной файловой системы.io_uring- отслеживание базовых системных вызовов, выполняемых с помощью операцийio_uring(интерфейс системного вызова).Формат правил системных вызовов:
-a action,list -S syscall -F field=value -k keynameОпция
-aсообщает механизму сопоставления правил ядра о необходимости добавить правило в конец списка. Также необходимо указать, в какой список правил оно добавляется и какие действия следует предпринять при его срабатывании. Допустимыми действиями являются:always- всегда создавать событие;never- никогда не создавать событие.
Действие и список разделяются запятой, без пробела. Допустимыми списками являются:
task,exit,user,exclude,filesystemиio_uring(см. выше).-S- имя/номер системного вызова. При отправке в ядро все поля системного вызова помещаются в маску, чтобы при сравнении можно было определить, представляет ли системный вызов интерес. На машинах с би-архитектурой 32- и 64-разрядные номера системных вызовов иногда совпадают, поэтому необходимо разбивать правило на 2 части, в одной из которых указать-F arch=b32, а в другой --F arch=b64- перед опцией-S, чтобыauditctlпросматривал правильную таблицу поиска при возврате номера.-F- позволяет точно настроить соответствие.-k- ключевое поле, представляющее собой текстовую строку произвольной формы, которую можно вставить в событие, чтобы помочь определить его значение.
Пример записей#
-D
-b 8192
-f 1
--backlog_wait_time 60000
Где:
-D- удаление правил аудита;-b- максимальное количество доступных буферов аудита;-f- режим реакции ядра на критические ошибки;--backlog_wait_time- время ожидания, после которого ядро попытается отправить новые события службе аудита по достижении лимита backlog.