Синтаксис Опции конфигурирования Опции статуса Опции правил
Окружение
Утилита auditctl используется для конфигурирования опций ядра, относящихся к подсистеме аудита, для получения состояния текущей конфигурации и управлением правилами аудита.
Утилита доступна для запуска через терминал при помощи команды следующего вида:
auditctl [опции]
Опция
Описание опции
-b <число_буферов>
Установить максимальное количество (лимит) необработанных буферов аудита (backlog). Если все буферы окажутся заполнены, ядро предпримет действие согласно флагу сбоя (задаётся опцией -f).
Значение по умолчанию: 64.
Значение, установленное в поставляемых с дистрибутивом правилах: 8192.
--backlog_wait_time <время_ожидания>
Установить время ожидания перед размещением ядром новых событий в очередь для отправки службе аудита после достижения лимита необработанных буферов аудита (заданного опцией -b).
Допустимое значение: от нуля до десятикратного значения по умолчанию включительно (до 600 000).
Значение по умолчанию: 60 * HZ (60 000).
--reset_backlog_wait_time_actual
Сбросить действительный счётчик ожидания backlog, который отображается при выводе статуса (-s).
-c
Продолжить загрузку правил в случае возникновения ошибок при обработке строк, находящихся ниже строки с указанием данной опции. Таким образом происходит суммирование результатов загрузки корректных правил. Если загрузка хотя бы одного правила завершилась ошибкой, код возврата auditctl будет неуспешным - ненулевым. Используется внутри файла правил. Несовместима с одновременным (в одной строке) указанием любых других опций.
-D
Удалить все правила и наблюдения. Может использоваться с ключом -k.
-e [0..2]
Установить признак активности аудита. Значение 0 может быть использовано для временной приостановки аудита. Значение 1 включает аудит. Для запрета изменения конфигурации аудита используется значение 2. Предполагается, что команда блокировки конфигурации будет последней в audit.rules. Попытки изменения конфигурации в этом режиме будут отклонены и отражены в журнале аудита. Изменения могут быть внесены только посредством перезагрузки операционной системы.
-f [0..2]
Установить режим обработки ядром критического сбоя аудита:
0 — не реагировать (silent);
1 — вывести сообщение в журнал ядра (printk);
2 — вызвать панику ядра (panic).
Примеры состояний, при которых ядро предпринимает действия, определённые выбранным режимом: ошибки передачи данных службе аудита, превышение лимита буферов (опций -b), исчерпание памяти ядра, превышение лимита скорости генерации событий (опция -r). Для окружения, требующего высокого уровня безопасности, следует выбрать режим 2.
Значение по умолчанию: 1
-h
Краткая справка.
-i
Допускается два варианта использования:
непосредственно в файле правил для игнорирования ошибок загрузки правил, обрабатываемых после строки с указанием данной опции (код возврата auditctl будет всегда успешным - нулевым);
указание после опции -s для интерпретации некоторых числовых значений вывода статуса в более понятные текстовые значения.
--loginuid-immutable
Сообщить ядру, что атрибут loginuid для процессов необходимо сделать неизменяемым с момента его установки. Изменение атрибута требует привилегий CAP_AUDIT_CONTROL, поэтому не может быть выполнено непривилегированным пользователем. Установка этого параметра защитит loginuid от несанкционированного доступа, но может привести к проблемам в работе некоторых видов контейнеров.
-q <точка_монтирования>,<наблюдаемый_каталог>
При монтировании или подключении (bind) другого поддерева внутрь дерева наблюдаемого каталога необходимо сообщить ядру о применении наблюдения на смонтированное поддерево с теми же параметрами, как у наблюдаемого каталога. Если на момент установки наблюдения за каталогом поддерево внутри него уже смонтировано (или подключено), то оно автоматически отмечается для наблюдения. Обратите внимание, что значения параметра разделены запятой, без которой команда завершится с ошибкой.
Пример распространения наблюдения на смонтированное поддерево:
auditctl -a always,exit -F dir=/наблюдаемый/каталог/ -F arch=b64 -F key='watch_sysc' -F perm=wr
mount /dev/sdd1 /наблюдаемый/каталог/точка_монтирования/
auditctl -q /наблюдаемый/каталог/точка_монтирования/,/наблюдаемый/каталог/
-r <частота>
Установить предельную частоту генерации событий (сообщений в секунду), при превышении которой возникает установка флага сбоя, используемого ядром для выполнения настроенного действия.
Значение по умолчанию: 0 (ограничение не установлено).
--reset-lost
Сбросить счётчик утерянных записей, отображаемый при выводе статуса (-s).
-R <файл>
Прочитать и выполнить команды auditctl из файла, указанного в единственном допустимом параметре. Команды выполняются по одной последовательно, начиная с первой строки. Право на чтение файла должно быть только у пользователя root, который должен быть владельцем. В ином случае файл будет отвергнут. Пустые строки пропускаются, как и строки-комментарии (начинаются с символа '#'). При загрузке файла правил каждая его строка добавляется в виде набора параметров к выполняемой команде auditctl. Так как auditctl читает файл без использования какой-либо оболочки, то не нужно экранировать специальные символы. Несовместима с одновременным (в одной команде) указанием любых других опций. Не допускается указывать внутри файла правил.
--signal <сигнал>
Отправить сигнал службе аудита. Для этого действия необходимы соответствующие права. Поддерживаемые сигналы: TERM, HUP, USR1, USR2, CONT.
Интерпретированный вариант сигналов: stop, reload, rotate, resume, state.
-t
Удалить правила наблюдения за директориями, которые стали точками монтирования. Например:
auditctl -w /точка/наблюдения/ -p wra -k watch1
mount --bind /другой/каталог/ /точка/наблюдения/
auditctl -t
-l
Вывести правила построчно. Может дополнительно использоваться с двумя другими опциями. Использование -k ограничивает вывод значением указанного в данной опции ключа. Опция -i интерпретирует значения a0, a1, a2, a3 в выводе правил для более удобной проверки заданных параметров syscall.
-m <текст>
Отправить текстовое сообщение в систему аудита. Это действие доступно только при наличии у пользователя возможности CAP_AUDIT_WRITE (по умолчанию есть у root). Сообщение будет создано с типом USER.
-s
Вывести статус подсистемы аудита ядра. Опция позволит вывести текущие параметры ядра, задаваемые опциями -e, -f, -r, -b. Идентификатор процесса службы аудита отображается в поле pid. Если значение этого поля равно 0, то служба не запущена. Значение поля lost указывает на количество записей аудита, отброшенных в результате переполнения очереди. Количество сообщений, ожидающих чтения службой аудита, отображается в поле backlog. Указание дополнительной опции -i позволит интерпретировать значения некоторых полей.
-v
Вывести версию auditctl.
-a [список,действие|действие,список]
Добавить правило с указанным действием в конец списка. Обратите внимание, что значения должны быть разделены запятой, отсутствие которой вызовет ошибку. Список и действие могут быть указаны в любой последовательности.
Описание допустимых имён списка:
task — добавить правило к списку, используемому при старте процесса (при вызове fork() или clone() родительским процессом). При указании этого списка следует использовать только те поля, которые известны при старте процесса: uid, guid и т. д.;
exit — добавить правило к списку, отвечающему за точки выхода из системных вызовов. Этот список используется при выходе из системного вызова для определения необходимости создания события аудита;
user — добавить правило в список фильтрации событий пространства пользователей. Этот список используется ядром для фильтрации событий, созданных в пользовательском пространстве (user space), перед передачей их службе аудита. Следует отметить, что допустимы поля фильтрации следующие: uid, auid, gid, pid, subj_user, subj_role, subj_type, subj_sen, subj_clr, msgtype и exe. Значения других полей всегда будут считаться не совпавшими. Также следует учитывать, что любое сообщение из пользовательского пространства, поступившее от процесса с привилегией CAP_AUDIT_WRITE, будет записано в журнал аудита. Это означает, что наиболее вероятное использование этого фильтра — совместно с правилами, действие которых установлено в "never" (никогда), поскольку нет необходимости дополнительно разрешать запись событий;
exclude — добавить правило в список исключаемых событий. В этот список (согласно заданного фильтра) направляются события, которые необходимо скрыть. События могут быть исключены по следующим полям: ID процесса (pid), ID пользователя (auid), тип сообщения (msgtype), контекст субъекта (subj_), имя исполняемого файла (exe). Указание действия для этого списка игнорируется и всегда применяется "never";
filesystem — добавить правило для файловой системы указанного в фильтре fstype типа. Как правило, этот список используется для фильтрации всех событий, относящихся к определённым типам файловых систем (например, debugfs или tracefs);
io_uring — добавить правило фильтрации для системных событий io_uring. Правила данного фильтра указывают системный вызов посредством опции -S, описанной ниже. Для группировки правил по одному базовому системному вызову можно добавить к ним присвоение ключа фильтрации (опция -k).
Описание допустимых имён действия:
never — не генерировать событий аудита. Обычно, для подавления создания событий аудита располагается сверху списка, так как к событию применяется первое из подходящих правил;
always — создавать контекст аудита, который будет заполняться при входе в системный вызов, а при выходе из него — размещаться в записи аудита.
-A [список,действие|действие,список]
Идентично опции -a, но правило будет добавлено в начало указанного списка.
-C [f=f | f!=f]
Создать правило со сравнением значений двух полей (имена полей указываются вместо буквы f). В одной команде можно указать данную опцию несколько раз, что позволит задать сразу несколько операций сравнения в одном правиле. Запись события аудита будет создана только при условии истинности всех заданных сравнений (включая указанные с помощью опции -F). Допустимы только два варианта операций сравнения: равно и не равно.
Допустимые для сравнения поля:
группа uid: auid, uid, euid, suid, fsuid, obj_uid;
группа gid: gid, egid, sgid, fsgid, obj_gid.
Недопустимо сравнивать поля из разных групп, но любые сравнения в пределах каждой из групп возможны. Значения полей obj_uid и obj_gid будут получены из контекста объекта аудита (например, каталога или файла).
-d [список,действие|действие,список]
Удалить правило с указанным действием из списка. Удаление произойдёт только при полном совпадении всех имён системных вызовов (-S), имён и значений полей существующего правила с теми, что переданы в данной команде.
-F [n=v | n!=v | n<v | n>v | n<=v | n>=v | n&v | n&=v]
Задать правило с использованием полей — имя поля, оператор, значение. В одной команде можно задать до 64 полей посредством многократного использования опции -F. Запись события аудита будет создана только при условии истинности всех заданных сравнений (включая указанные с помощью опции -С).
Допустимы восемь вариантов операций сравнения:
равно,
не равно,
меньше,
больше,
меньше или равно,
больше или равно,
битовая маска,
побитовая проверка.
Битовая маска производит операцию И (побитовое "and") над значениями полей, а побитовая проверка после операции И дополнительно проверяет получившееся значение с указанным в поле (проверка установки бита в определённой позиции).
Значения для полей, использующих ID пользователя или группы, могут быть указаны в текстовом виде, который при выполнении команды будет преобразован в ID (UID/GID).
Допустимые имена полей:
a0, a1, a2, a3 — первые 4 аргумента системного вызова (syscall). Строковые значения не поддерживаются, так как ядру передаётся указатель на строку. Срабатывание на адрес указателя скорее всего работать не будет. Скорее всего, правило с этими полями будет использоваться на платформах, которые мультиплексируют операции с сокетами или IPC;
arch — архитектура процессора системного вызова (выводится командой uname -m). Если архитектура машины неизвестна, но необходимо использовать 32-битную таблицу системных вызовов (и машина её поддерживает), можно указать значение b32. То же применимо к 64-битной таблице системных вызовов — указывается значение b64. Таким образом, можно написать правила, которые в некоторой степени не зависят от архитектуры, поскольку тип семейства будет определяться автоматически. Тем не менее, системные вызовы могут быть специфичны для архитектуры и те, что доступны на x86_64, могут быть недоступны на ppc. Директива arch должна предшествовать опции -S, чтобы команда auditctl могла определить внутреннюю таблицу, в которой необходимо искать номер системного вызова;
uname -m
auid — исходный ID пользователя, с которым он вошёл в систему. Название поля является аббревиатурой "audit UID". Иногда его называют "loginuid". Допускается указание имени или ID учетной записи пользователя;
devmajor — главный (major) номер устройства;
devminor — второстепенный (minor) номер устройства;
dir — полный путь до отслеживаемой директории. Будет установлено рекурсивное наблюдение за директорией и всем её поддеревом (на базе системных вызовов). Может использоваться только со списком exit (опции -a, -A). Также ознакомьтесь с опцией -w;
egid — эффективный ID группы. Допускается указание имени группы или числового значения ID;
euid — эффективный ID пользователя. Допускается указание имени пользователя или числового значения ID;
exe — абсолютный путь до приложения, к которому будет применяться это правило при выполнении. Поддерживаемые операторы: = и != . Это поле можно использовать в правиле лишь один раз;
exit — код выхода из системного вызова. Если код входит в список errno, то значение допускается указать в текстовом виде;
fsgid — ID группы для обращения к файловой системе. Допускается указание имени группы или числового значения ID;
fstype — тип файловой системы. Это поле используется со списком filesystem. Поддерживаемые значения: debugfs и tracefs;
fsuid — ID пользователя для обращения к файловой системе. Допускается использование имени пользователя или числового значения ID;
filetype — тип файла из списка: file, dir, socket, link, character, block, fifo;
gid — ID группы. Допускается указание имени группы или числового значения ID;
inode — числовое значение inode;
key — ключ фильтрации для правила. Значение может быть задано строкой длиной не более 31 символа. С помощью этого ключа можно идентифицировать записи аудита, порождённые данным правилом. Обычно используется, когда есть несколько правил, которые в совокупности обеспечивают какое-то требование безопасности. С помощью утилиты ausearch можно найти все записи с заданным значением ключа. Также ключ может быть использован в качестве фильтра при удалении правил (-D) и получении их списка (-l). Это поле может быть указано несколько раз в одном правиле, если в дальнейшем необходимо осуществлять поиск с разными подходами и целями или использовать плагин аудита, которому ключ требуется для осуществления анализа;
msgtype — используется для проверки соответствия типу записи события аудита. Следует использовать только в списках user и exclude;
obj_uid — UID объекта аудита;
obj_gid — GID объекта аудита;
obj_user — пользователь контекста SELinux ресурса/объекта (первое поле контекста);
obj_role — роль контекста SELinux, установленного для ресурса/объекта (второе поле контекста);
obj_type — тип контекста SELinux, установленного для ресурса/объекта (третье поле контекста);
obj_lev_low — нижний уровень чувствительности контекста SELinux, установленного для ресурса/объекта (первое значение из пары четвёртого поля контекста);
obj_lev_high — верхний уровень чувствительности контекста SELinux, установленного для ресурса/объекта (второе значение из пары четвёртого поля контекста);
path — установить наблюдение за объектом файловой системы, находящемуся по указанному пути (на базе системных вызовов). Установить наблюдение за коревым каталогом ("/") нельзя, так как это запрещено на уровне ядра. Использование знаков шаблона (подстановки) не поддерживается и приведёт лишь к выдаче предупреждения. Наблюдение за объектом файловой системы реализовано посредством слежения за его inode. Может использоваться только в списке exit;
perm — фильтрация на основе прав при совершении операций с файлами. Здесь следует указать тип доступа сочетанием из следующих: r = чтение, w = запись, x = выполнение, a = изменение атрибутов. Права, указываемые здесь, не являются стандартными unix-правами, но определяют тип системного вызова, с помощью которого выполняется файловая операция. Системные вызовы read и write исключены из обработки, так как их использование слишком частое и приведёт к переполнению журналов. Вместо этого для определения запрашиваемых прав используются флаги системного вызова открытия объекта (open). Указание в команде системных вызовов (-S) необязательно, так как ядро само может составить их список на основании прав, заданных в данном поле. В этом случае необходимо, чтобы в этом же правиле архитектура заранее была указана посредством arch перед использованием данного поля. Таким образом ядро сможет более точно определить список необходимых системных вызовов. Если архитектуру не указывать, то это приведёт к перенаправлению всех (-S all) системных вызовов подсистеме аудита, что снизит общую производительность. Поле perm может быть использовано только в списке exit;
pers — числовое значение personality (man presonality);
pid — ID процесса;
ppid — ID родительского процесса;
saddr_fam — семейство адресов, указываемое числом из состава файла /usr/include/bits/socket.h. Например, число 10 определяет семейство IPv6, а число 2 — IPv4;
sessionid — идентификатор сессии, в которой был осуществлён вход пользователя (login);
subj_user — пользователь контекста SELinux субъекта/процесса (первое поле контекста);
subj_role — роль контекста SELinux, установленного для субъекта/процесса (второе поле контекста);
subj_type — тип контекста SELinux, установленного для субъекта/процесса (третье поле контекста);
subj_sen — уровень чувствительности контекста SELinux субъекта/процесса (четвёртое поле контекста);
subj_clr — уровень доступа контекста SELinux субъекта/процесса (пятое поле контекста);
sgid — сохранённый ID группы ( подробнее в man getresgid );
success — успешность выполнения системного вызова: 1 — истина (успех), 0 — ложь (ошибка/провал). Успешным результат считается только, если код возврата системного вызова больше или равен 0;
suid — сохранённый ID пользователя (подробнее в man getresuid);
uid — ID пользователя. Допускается указание имени пользователя или числового значения ID.
-k ключ
Установить для правила ключ фильтрации. Считается устаревшим и используется вместе с правилами наблюдения (-w). Правила наблюдения для файловой системы (filesystem watch) необходимо преобразовывать в правила на базе системных вызовов (syscall). Опцию допустимо использовать для команд удаления или вывода списка правил.
-p [ r | w | x | a ]
Фильтрация на основе прав при совершении операций с файлами при использовании наблюдения для файловой системы (filesystem watch). Опция устарела. Преобразуйте правила в форму на базе системных вызовов (syscall).
-S [имя или номер системного вызова | all]
Могут быть использованы имя или номер системного вызова. Также допускается использование слова 'all'. Если указанный здесь системный вызов совершён программой, то будет создана запись аудита. Если задано правило с использованием полей (-F), но системный вызов не указан, то по умолчанию будут задействованы все системные вызовы. Многократным использованием -S в одном правиле можно задать сразу несколько системных вызовов. Это может увеличить производительность, так как приведёт к уменьшению количества правил. Можно указать несколько имён системных вызовов в одной опции, разделив их запятой. Учтите, что в двухархитектурной среде (такой как x86_64) команда выполнит преобразование имени в номер системного вызова, базируясь на нативной архитектуре (в нашем случае b64), и отправит правило ядру. При этом, если архитектура в команде дополнительно не определена, то правило будет применено к системным вызовам обеих архитектур. Это может иметь нежелательные последствия, так как номер системного вызова может отличаться для разных архитектур. В этом случае предпочтительнее создать два идентичных правила для b32 и b64, чтобы быть уверенным, что ядро будет обрабатывать именно те системные вызовы, которые указаны в команде. Более подробная информация в описании поля arch выше.
-w путь
Включить наблюдение за объектом файловой системы (filesystem watch), находящемуся по указанному пути. Если объект является файлом, то поведение почти идентично заданию поля path в параметре -F для правила на базе системных вызовов. Если объект является каталогом, то поведение почти идентично заданию поля dir в параметре -F для правила на базе системных вызовов. Возможность создания правил с опцией -w сохранена для целей обратной совместимости. Такой вариант приводит к снижению производительности, поэтому его следует преобразовать в правило на базе системных вызовов. Совместно с данной опцией допустимо использовать только -k и -p .
-W путь
Отключить наблюдение за объектом файловой системы (filesystem watch), находящимся по указанному пути. Для успешного отключения опции должны в точности совпадать с опциями удаляемого правила (смотрите описание опции -d).
Дата последнего изменения: 18.08.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.