Product SiteDocumentation Site

73.3. Команда auditctl

Команда auditctl используется для настройки параметров ядра, связанных с аудитом, получения состояния и добавления/удаления правил аудита.
Синтаксис команды:
auditctl [опции]

Таблица 73.2. Опции конфигурации команды auditctl

Опция
Описание
-b <количество>
Установить максимальное количество доступных для аудита буферов, ожидающих обработки (значение в ядре по умолчанию — 64). В случае если все буферы заняты, то ядром будет выставлен флаг сбоя.
--backlog_wait_time <время_ожидания>
Установить время ожидания для ядра достижения значения backlog_limit (значение в ядре по умолчанию — 60*HZ), прежде, чем ставить в очередь дополнительные события аудита для их передачи аудиту. Число должно быть больше или равно нулю, но меньше, чем десятикратное значение по умолчанию.
--reset_backlog_wait_time_actual
Сбросить счетчик фактического времени ожидания невыполненной работы, показанный командой состояния.
Продолжать загружать правила, несмотря на ошибку. Суммирует результат загрузки правил. Код завершения будет ошибочным, если какое-либо правило не будет загружено.
-D
Удалить все правила и точки наблюдения. Может также принимать параметр -k.
-e [0..2]
Установить флаг блокировки: 0 — отключить аудит, 1 — включить аудит, 2 — защитить конфигурацию аудита от изменений. Для использования данной возможности необходимо внести данную команду последней строкой в файл audit.rules. После её выполнения все попытки изменить конфигурацию будут отвергнуты с уведомлением в журналах аудита (чтобы задействовать новую конфигурацию аудита, необходимо перезагрузить систему).
-f [0..2]
Установить способ обработки для флага сбоя: 0=silent, 1=printk, 2=panic. Позволяет определить, каким образом ядро будет обрабатывать критические ошибки. Например, флаг сбоя выставляется при следующих условиях: ошибки передачи в пространство службы аудита, превышение лимита буферов, ожидающих обработки, выход за пределы памяти ядра, превышение лимита скорости выдачи сообщений (значение, установленное по умолчанию — 1, для систем с повышенными требованиями к безопасности, значение 2 может быть более предпочтительно).
-h
Краткая помощь по аргументам командной строки.
-i
Игнорировать ошибки при чтении правил из файла.
--loginuid-immutable
Сделать login UID неизменяемым сразу после его установки. Для изменения login UID требуется CAP_AUDIT_CONTROL, поэтому непривилегированный пользователь не может его изменить. Установка этого параметра может вызвать проблемы в некоторых контейнерах.
-q точка-<монтирования,поддерево>
При наличии точки наблюдения за каталогом и объединении или перемещении монтирования другого поддерева в наблюдаемое поддерево, необходимо указать ядру, сделать монтируемое поддерево эквивалентным просматриваемому каталогу. Если поддерево уже смонтировано во время создания точки наблюдения за каталогом, поддерево автоматически помечается для просмотра. Эти два значения разделяет запятая, отсутствие запятой приведет к ошибке.
-r <частота>
Установить ограничение скорости выдачи сообщений в секунду (0 — нет ограничения). В случае если эта частота не нулевая, и она превышается в ходе аудита, флаг сбоя выставляется ядром для выполнения соответствующего действия. Значение, установленное по умолчанию — 0.
--reset-lost
Сбросить счетчик потерянных записей, отображаемых командой статуса.
-R <файл>
Читать правила из файла. Правила должны быть организованы следующим образом: располагаться по одному в строке и в том порядке, в каком должны исполняться. Накладываются следующие ограничения: владельцем файла должен быть root, и доступ на чтение должен быть только у него. Файл может содержать комментарии, начинающиеся с символа «#». Правила, расположенные в файле, идентичны тем, что набираются в командной строке, без указания слова auditctl.
-t
Обрезать поддеревья после команды монтирования.

Таблица 73.3. Опции состояния команды auditctl

Опция
Описание
-l
Вывести список всех правил по одному правилу в строке. Этой команде могут быть предоставлены две опции: ключ фильтрации (-k), чтобы вывести список правил, соответствующих ключу, либо опция (-i) интерпретирующая значения полей от a0 до a3, для корректного определения значений аргументов системных вызовов.
-m <текст>
Послать в систему аудита пользовательское сообщение. Команда может быть выполнена только из-под учетной записи root.
-s
Получить статус аудита. Будут показаны значения, которые можно установить с помощью опций -e, -f, -r и -b. Значение pid — это номер процесса службы аудита. Значение pid 0 указывает, что служба аудита не работает. Поле lost сообщает, сколько записей событий аудита было отброшено из-за переполнения буфера аудита. Поле backlog сообщает, сколько записей событий аудита находится в очереди, ожидая, когда auditd прочитает их. С этим параметром можно использовать опцию -i для интерпретации значений некоторых полей.
-v
Вывести версию auditctl.

Таблица 73.4. Опции правил команды auditctl

Опция
Описание
-a <список,действие| действие,список>
Добавить правило с указанным действием к концу списка. Необходимо учитывать, что значения «список» и «действия» разделены запятой, и её отсутствие вызовет ошибку. Поля могут быть указаны в любом порядке.
-A <список,действие>
Добавить правило с указанным действием в начало списка.
-C <f=f | f!=f>
Создать правило сравнения между полями. Можно передавать несколько сравнений в одной командной строке. Каждое из них должно начинаться с -C. Каждое правило сравнения добавляется друг к другу, а также к правилам, начинающимся с -F для инициирования записи аудита. Поддерживаются два оператора — равно и не равно. Допустимые поля: auid, uid, euid, suid, fsuid, obj_uid; и gid, egid, sgid, fsgid, obj_gid. Две группы uid и gid не могут быть смешаны. Внутри группы может быть сделано любое сравнение.
-d <список,действие>
Удалить правило с указанным действием из списка. Правило удаляется только в том случае, если полностью совпали и имя системного вызова и поля сравнения.
-D
Удалить все правила и точки наблюдения. Может также принимать параметр -k.
-F <n=v | n!=v | n<v | n>v | n<=v | n>=v | n&v | n&=v>
Задать поле сравнения для правила. Атрибуты поля следующие: объект, операция, значение. В одной команде допускается задавать до шестидесяти четырех полей сравнения. Каждое новое поле должно начинаться с -F. Аудит будет генерировать запись, если произошло совпадение по всем полям сравнения. Допустимо использование одного из следующих восьми операторов: равно, не равно, меньше, больше, меньше либо равно, больше либо равно, битовая маска (n&v) и битовая проверка (n&=v). Битовая проверка выполняет операцию «and» над значениями и проверяет, равны ли они. Битовая маска просто выполняет операцию «and». Поля, оперирующие с идентификатором пользователя, могут также работать с именем пользователя — программа автоматически получит идентификатор пользователя из его имени. То же самое можно сказать и про имя группы.
-k <ключ>
Установить на правило ключ фильтрации. Ключ фильтрации — это произвольная текстовая строка длиной не больше 31 символа. Ключ помогает уникально идентифицировать записи, генерируемые в ходе аудита за точкой наблюдения. Поиск значения ключа можно выполнить с помощью команды ausearch. Ключ также можно использовать для удаления всех правил (-D), или правил с определенным ключом (-l). В правиле можно использовать несколько ключей.
-p <r|w|x|a>
Установить фильтр прав доступа для точки наблюдения: r=чтение, w=запись, x=исполнение, a=изменение атрибута. Эти разрешения не являются стандартными разрешениями для файлов, а представляют собой своего рода системный вызов, который может делать подобные вещи (системные вызовы «read» и «write» не включены в этот набор, поскольку логи аудита были бы перегружены информацией о работе этих вызовов).
-S <имя или номер системного вызова|all>
В случае если какой-либо процесс выполняет указанный системный вызов, то аудит генерирует соответствующую запись. В случае если значения полей сравнения заданы, а системный вызов не указан, правило будет применяться ко всем системным вызовам. В одном правиле может быть задано несколько системных вызовов — это положительно сказывается на производительности, поскольку заменяет обработку нескольких правил. Следует указывать по два правила: одно для 32-битной архитектуры, другое для 64-битной, чтобы убедиться, что ядро находит все ожидаемые события.
-w <путь>
Добавить точку наблюдения за файловым объектом, находящимся по указанному пути. Добавление точки наблюдения к каталогу верхнего уровня запрещено ядром. Групповые символы (wildcards) также не могут быть использованы, попытки их использования будут генерировать предупреждающее сообщение. Внутренне точки наблюдения реализованы как слежение за inode. Установка точки наблюдения за файлом аналогична использованию параметра path в правиле системного вызова -F. Установка точки наблюдения за каталогом аналогична использованию параметра dir в правиле системного вызова -F. Единственными допустимыми параметрами при использовании точек наблюдения являются -p и -k.
-W <путь>
Удалить точку наблюдения за файловым объектом.

Таблица 73.5. Объекты поля сравнения

Объект
Описание
a0, a1, a2, a3
Четыре первых аргумента, переданных системному вызову. Строковые аргументы не поддерживаются. Это связано с тем, что ядро должно получать указатель на строку, а проверка поля по значению адреса указателя не желательна. Таким образом, необходимо использовать только цифровые значения.
arch
Архитектура процессора, на котором выполняется системный вызов. Для определения архитектуры необходимо использовать команду uname -m. Можно написать правила, которые в некоторой степени не зависят от архитектуры, потому что тип будет определяться автоматически. Однако системные вызовы могут зависеть от архитектуры, и то, что доступно на x86_64, может быть недоступно на PPC. Опция arch должна предшествовать опции -S, чтобы auditctl знал, какую внутреннюю таблицу использовать для поиска номеров системных вызовов.
auid
Идентификатор пользователя, использованный для входа в систему. Можно использовать либо имя пользователя, либо идентификатор пользователя.
devmajor
Главный номер устройства (Device Major Number).
devminor
Вспомогательный номер устройства (Device Minor Number).
dir
Полный путь к каталогу для создания точки наблюдения. Помещает точку наблюдения в каталог и рекурсивно во всё его поддерево. Можно использовать только в списке exit.
egid
Действительный идентификатор группы.
euid
Действительный идентификатор пользователя.
exe
Абсолютный путь к приложению, к которому будет применяться это правило. Можно использовать только в списке exit.
exit
Значение, возвращаемое системным вызовом при выходе.
fsgid
Идентификатор группы, применяемый к файловой системе.
fsuid
Идентификатор пользователя, применяемый к файловой системе.
filetype
Тип целевого файла: файл, каталог, сокет, ссылка, символ, блок или FIFO.
gid
Идентификатор группы.
inode
Номер inode.
key
Альтернативный способ установить ключ фильтрации.
msgtype
Используется для проверки совпадения с числом, описывающим тип сообщения. Может использоваться только в списках exclude и user.
obj_uid
UID объекта.
obj_gid
GID объекта.
path
Полный путь к файлу для точки наблюдения. Может использоваться только в списке exit.
perm
Фильтр прав доступа для файловых операций. Может использоваться только в списке exit. Можно использовать без указания системного вызова, при этом ядро выберет системные вызовы, которые удовлетворяют запрашиваемым разрешениям.
pers
Персональный номер операционной системы.
pid
Идентификатор процесса.
ppid
Идентификатор родительского процесса.
sessionid
Идентификатор сеанса пользователя.
sgid
Установленный идентификатор группы.
success
Если значение, возвращаемое системным вызовом, больше либо равно 0, данный объект будет равен true/yes, иначе false/no. При создании правила нужно использовать 1 вместо true/yes и 0 вместо false/no.
suid
Установленный идентификатор пользователя.
uid
Идентификатор пользователя.