Синтаксис Опции Примеры использования
Окружение
ausearch — инструмент для получения данных из журналов аудита на основе запросов по различным критериям.
Утилита может принимать данные со стандартного входа до тех пор, пока они являются необработанными данными журналов аудита. Все переданные команде опции объединяются по принципу логического "и". Например, поиск с одновременным указанием параметров -m и -ui возвратит только те события, которые имеют указанные тип сообщения и UID. Исключение составляют опции -m и -n, которые допускается указывать несколько раз в одной команде.
-m
-ui
-n
Следует также отметить, что каждый системный вызов, следующий из пространства пользователя в ядро и обратно в пространство пользователя, имеет один уникальный идентификатор события. Каждое событие аудита, которое было порождено прохождением данного системного вызова по пути его следования, получит данный идентификатор для возможности определения их связанности.
Ядро может добавлять дополнительные записи аудита. Например, событие аудита при системном вызове "open" также приведет к тому, что ядро сгенерирует запись типа PATH с именем файла. Утилита ausearch объединит все эти записи для представления их в виде единого события. Это означает, что при запросе определенных типов записей результат может содержать так же записи с типом SYSCALL.
Также помните, что не все типы записей содержат искомую информацию. Например, запись типа PATH не содержит полей hostname и loginuid.
Утилита доступна для запуска через терминал при помощи команды следующего вида:
ausearch [опции]
Опция
Описание опции
-a, --event <ID_события>
Искать события на основе заданного идентификатора (ID_события). Сообщение всегда начинается с подобной строки: "type=PROCTITLE msg=audit(1747389605.673:485)". Идентификатор события указан после символа ":". Все события аудита, порождённые одним системным вызовом приложения, будут иметь одинаковый идентификатор. Следующий системный вызов того же приложения (процесса) получит новый идентификатор. Таким образом обеспечивается уникальность.
--arch <архитектура_ЦП>
Искать события на основе указанной архитектуры (архитектура_ЦП). Если архитектура вашего компьютера неизвестна, то при необходимости использования 32-разрядной таблицы системных вызовов допустимо указывать значение b32 (при условии, что компьютер поддерживает 32-битную архитектуру). То же самое применимо к 64-разрядной таблице системных вызовов — допустимо указывать b64. Архитектуру компьютера можно определить с помощью команды uname -m.
uname -m.
.
-c, --comm <имя_команды>
Искать события на основе указанного имени команды. Значение имя_команды будет сопоставлено с именем исполняемого файла из структуры задачи (поле comm).
--debug
Выводить искажённые сообщения, интерпретация которых невозможна, в стандартный поток для вывода ошибок (stderr).
--checkpoint <файл_контрольной_точки>
Записывать в файл_контрольной_точки данные контрольной точки между последовательными вызовами ausearch таким образом, чтобы при последующих вызовах печатались только те события, которые ранее не выводились.
Событие аудита состоит из одной и более записей. При их обработке ausearch определяет, является ли событие завершённым или нет. Завершённым считается событие, состоящее из одной записи, либо возникшее двумя секундами ранее текущего обрабатываемого события.
Запись контрольной точки состоит из:
вывода последнего завершённого события,
номера устройства,
индексного дескриптора файла, из которого было прочитано это событие.
При следующем вызове ausearch загрузит данные контрольной точки из файл_контрольной_точки и в процессе чтения журналов аудита будет отбрасывать (игнорировать) все завершённые события до тех пор, пока не будет найдено событие соответствующее контрольной точке. С этого момента начнётся вывод завершённых событий.
Если файл или событие последней контрольной точки не будут найдены, процесс ausearch будет завершён с возвратом одной из нескольких ошибок (описание кодов завершения представлено в конце статьи).
--eoe-timeout <таймаут_в_секундах>
Таймаут для определения завершённости события (смотрите описание ключа end_of_event_timeout в статье "Служба аудита auditd"). Указанное в этой опции значение переопределяет значение ключа, заданное в файле /etc/auditd/auditd.conf.
-e, --exit <код_выхода_или_ошибки>
Искать события, с соответствующим кодом завершения или кодом ошибки в системном вызове.
--escape <опция>
Задать способ экранирования вывода для обеспечения более безопасной его обработки в определённых условиях. Допустимые значения:
raw,
tty,
shell,
shell_quote.
Каждый последующий способ включает все символы предыдущего режима и добавляет дополнительное экранирование. То есть, shell включает все символы, экранированные в tty, и добавляет еще. Значение по умолчанию: tty.
--extra-keys
Добавить столбец с информацией о ключе фильтрации (если она присутствует) при формировании вывода в формате csv. Данные будут доступны только для записей типа SYSCALL, которые стали результатом срабатывания правил аудита с указанием ключа фильтрации.
--extra-labels
Добавить столбец с информацией о метках субъекта и объекта (если она присутствует) при формировании вывода в формате csv.
--extra-obj2
Добавить столбец с информацией о втором объекте аудита (если она присутствует) при формировании вывода в формате csv. Присутствие второго объекта в записи аудита — это редкость. Такое может наблюдаться при переименовании файла или монтировании устройства в каталог.
--extra-time
Добавить дополнительные поля с разбивкой даты по составляющим при формировании вывода в формате csv.
-f, --file <имя_файла>
Искать события, в которых имя файла содержит строку, указанную в имя_файла. Поиск возможен для обычных файлов и сокетов af_unix.
--format <формат_вывода>
Применить указанный формат к найденным сообщениям.
Поддерживаемые форматы:
raw — смотрите описание опции --raw;
default — включает вывод строки-разделителя, временной метки и записей события аудита (используется, если формат вывода не был задан в команде);
interpret — смотрите описание опции -i;
csv — выводит результат запроса в виде нормализованных событий в формате CSV (разделённых запятыми значений), подходящем для загрузки в аналитическое ПО;
text — преобразует событие в предложение на английском языке, которое проще в чтении и понимании, но лишено многих деталей оригинальной записи (в большинстве случаев это вполне приемлемо).
-ga, --gid-all <ID_группы>
Искать события, в которых ID группы или эффективный ID группы (egid) совпадают с указанным значением ID_группы.
-ge, --gid-effective <эффективный_ID_группы>
Искать события, в которых эффективный ID группы (или имя эффективной группы) совпадает с указанным значением эффективный_ID_группы.
-gi, --gid <ID_группы>
Искать события, в которых ID группы (или имя группы) совпадает с указанным значением ID_группы.
-h, --help
Вывести справку по команде.
-hn, --host <имя_хоста>
Искать события с указанным именем хоста. Имя_хоста может быть именем хоста, полным именем хоста (FQDN) или сетевым адресом. Указанный сетевой адрес не будет разрешаться в имя или псевдоним. Данный поиск, обычно, производится по полям hostname и addr событий аудита.
-i, --interpret
Интерпретировать числовые значения в текст. Например, выводить имя пользователя вместо UID. Если журнал не в формате ENRICHED (log_format), то трансляция в текст будет производиться на базе текущих ресурсов системы, на которой запущен поиск. Это может ввести в заблуждение, например, если пользователи были переименованы или вообще отсутствуют на данной машине (но существовали на машине, с которой получены журналы). Если журналы в формате ENRICHED, то для преобразования будут использованы дополнительные данные из них. Это позволяет получать правильные значения в отчетах, даже если команда выполняется на компьютере, отличном от того, с которого были получены исходные журналы.
-if, --input <имя_файла> | <каталог>
Использовать вместо текущих логов указанный файл или каталог. Это может быть полезно для анализа журналов, перемещённых на другую машину, или же только части журналов. Длина пути ограничена 4064 байтами.
--input-logs
Использовать для анализа расположение журналов, которое указано в auditd.conf. Опция необходима при запуске aureport посредством cron.
--just-one
Остановиться после выдачи первого события, соответствующего критериям поиска.
-k, --key <ключ>
Искать события с указанным в опции ключом фильтрации.
-l, --line-buffered
Сбрасывать выходной буфер при выводе каждой строки. Наиболее полезно, когда стандартный вывод (stdout) подключен к конвейеру (pipe) и стандартная стратегия блочной буферизации нежелательна. Может привести к снижению производительности.
-m, --message <тип_сообщения> | <список_типов_сообщений>
Искать события, имеющие указанный тип_сообщения (вместо "тип сообщения" иногда употребляют термин "тип записи"). Допустимо указать сразу несколько типов сообщений, разделив их запятой (нельзя использовать пробелы), или указать данную опцию несколько раз, перечислив каждый тип отдельно. Есть специальный тип сообщения ALL, который фактически не существует в журналах, а используется в опции для вывода всех сообщений в системе. Список допустимых типов можно получить, не указав никакого значения в данной опции. Тип сообщения можно указать в числовом или буквенном формате.
-n, --node <имя_узла>
Искать события, направленные с узла имя_узла. Опцию можно использовать несколько раз, чтобы найти события от любого из перечисленных узлов. Этот вид поиска производится по полю node событий аудита. Ознакомьтесь с опцией --host, которая позволяет искать события связанные с указанным хостом.
-o, --object <строка_контекста>
Искать события, в поле obj (контекст объекта) которых встречается строка_контекста.
-p, --pid <идентификатор_процесса>
Искать события, значение поля pid которых совпадает с заданным идентификатором_процесса.
-pp, --ppid <идентификатор_родительского_процесса>
Искать события, значение поля ppid которых совпадает с заданным идентификатором_родительского_процесса.
-r, --raw
Выводить в необработанном формате. Полезно при необходимости направления в файл для дальнейшей интерпретации утилитами аудита или при перенаправлении непосредственно на вход утилитам аудита.
-sc, --syscall <имя_или_номер_системного_вызова>
Искать события, соответствующие указанному значению имя_или_номер_системного_вызова. Может быть указан номер системного вызова или его имя. При указании имени оно будет разрешено в номер согласно таблице системных вызовов той машины, на которой запущена команда.
-se, --context <строка_контекста>
Искать события, в полях obj (контекст объекта) или subj (контекст субъекта) которых встречается строка_контекста.
--session <идентификатор_входа>
Искать события, поле ses (Login Session ID) которых соответствует значению идентификатор_входа. Этот атрибут процесса устанавливается при входе пользователя в систему и позволяет связать любой процесс с конкретным входом пользователя.
-su, --subject <строка_контекста>
Искать события, в поле subj (контекст субъекта) которых встречается строка_контекста.
-sv, --success <успешность_события>
Искать события, которые соответствуют значению успешность_события. Допустимые значения:
yes,
no.
-te, --end [конечная-дата] [конечное-время]
Искать события с отметками времени равными или меньшими, чем указанное в параметре значение. Формат указания зависит от региональных настроек. Для указания времени используйте 24-часовой формат (например, "18:30:00"). Формат даты зависит от значения переменной окружения LC_TIME (например, "22.04.2029").
Допустимо использовать специальные слова вместо значений даты и времени:
now — текущее время, данный момент;
recent — 10 минут назад;
boot — момент времени начала последней загрузки системы;
today — текущее время, данный момент;
yesterday — первая секунда после полуночи предыдущего дня;
this-week — первая секунда после полуночи первого дня текущей недели, определённого в зависимости от региональных настроек (функция localtime);
week-ago — первая секунда после полуночи 7 дней назад;
this-month — первая секунда после полуночи первого дня текущего месяца;
this-year — первая секунда после полуночи первого дня первого месяца текущего года.
Если значение конечная-дата не указано, то вместо него предполагается значение today. Если значение конечное-время не указано, то вместо него предполагается значение now.
-ts, --start [начальная-дата] [начальное-время]
Искать события с отметками времени равными или большими, чем указанное в параметре значение. Формат указания зависит от региональных настроек. Для указания времени используйте 24-часовой формат (например, "18:30:00"). Формат даты зависит от значения переменной окружения LC_TIME (например, "22.04.2029").
boot — момент времени последней загрузки системы;
today — первая секунда после полуночи текущего дня;
this-year — первая секунда после полуночи первого дня первого месяца текущего года;
checkpoint — использовать отметку времени, найденную в корректном файле контрольной точки, игнорируя указанные в нём индексный дескриптор, устройство, серийный номер, узел и тип события (на случай, если вызов утилиты ausearch с опцией --checkpoint завершился неудачно с кодом возврата 10, 11 или 12).
Если значение начальная-дата не указано, то вместо него предполагается значение today. Если значение начальное-время не указано, то вместо него предполагается полночь.
-tm, --terminal <строка_терминал>
Искать события, в поле terminal которых встречается строка_терминал.
-ua, --uid-all <идентификатор_пользователя>
Искать события, в которых значение любого из полей uid (идентификатор пользователя), auid (идентификатор пользователя, присвоенный при входе в систему) или euid (эффективный/действующий идентификатор пользователя) соответствует заданному значению идентификатор_пользователя.
-ue, --uid-effective <идентификатор_пользователя>
-ui, --uid <идентификатор_пользователя>
Искать события, в которых значение поля uid (идентификатор пользователя) соответствует заданному значению идентификатор_пользователя.
-ul, --loginuid <идентификатор_пользователя>
Искать события, в которых значение поля auid (идентификатор пользователя, присвоенный при входе в систему) соответствует заданному значению идентификатор_пользователя.
-uu, --uuid <идентификатор_виртуальной_машины>
Искать события, в которых в значении поля uuid (уникальный идентификатор виртуальной машины) встречается строка идентификатор_виртуальной_машины.
-v, --version
Вывести версию утилиты.
-vm, --vm-name <имя_виртуальной_машины>
Искать события, в которых в значении поля vm (имя виртуальной машины) встречается строка имя_виртуальной_машины.
-w, --word
Производить текстовый поиск по полному совпадению со значением поля аудита. К такому типу относится, например, поиск по: имени файла, имени хоста, терминалу, ключу, имени виртуальной машины и контексту SELinux.
-x, --executable <имя_исполняемого_файла>
Искать события, в которых в значении поля exe встречается строка имя_исполняемого_файла.
Типы поиска, основанные на строковых значениях, чувствительны к регистру.
Коды завершения:
0 — команда выполнена успешно;
1 — событий не найдено, ошибка обработки аргументов команды, ошибки доступа к файлам;
10 — обнаружены некорректные данные в файле контрольной точки;
11 — возникла ошибка при обработке данных контрольной точки;
12 — в целевом файле журнала не обнаружено событие, соответствующее контрольной точке.
Утилита ausearch позволяет анализировать события из логов аудита, фильтруя их по типу, дате, пользователю и другим параметрам. Ниже приведены основные примеры использования:
1. Для поиска всех событий за сегодня с помощью ausearch выполните:
ausearch -m AVC -ts today
Данный запрос выводит все события типа AVC (Access Vector Cache) — попытки доступа, заблокированные SELinux, за текущий день.
2. Для поиска записей за произвольный период времени используйте параметры -ts (начальная дата) и -te (конечная дата поиска):
-ts
-te
ausearch -ts 2025-01-03 00:00:00 -te 2025-19-03 00:00:00
3. Утилита ausearch позволяет искать события по UID/GID. Для этого существуют параметры -ua и ga соответственно:
-ua
ga
ausearch -ua 1000 ausearch -ga 1000
4. Также поиск можно выполнять по типу события (например, SYSCALL, USER_AUTH). Для этого используйте параметр -m:
ausearch -m USER_AUTH
5. Для ознакомления со всеми возможностями утилиты воспользуйтесь командой:
man ausearch
Функция определения времени начала загрузки создана для удобства, но имеет ограничения. Время, которое она рассчитывает, определяется как текущее время минус значение из файла /proc/uptime. Если после загрузки системы системные часы были скорректированы, например, с помощью NTP, то расчёт может оказаться некорректным. В таком случае необходимо будет явно указать время вручную. Получить результат определения времени аналогичный автоматическому можно командой:
date -d "`cut -f1 -d. /proc/uptime` seconds ago"
Дата последнего изменения: 29.07.2025
Если вы нашли ошибку, пожалуйста, выделите текст и нажмите Ctrl+Enter.
Нажимая «Отправить запрос», вы соглашаетесь с условиями обработки персональных данных.
Вы будете получать только актуальную информацию по обновлению безопасности
Подписываясь на уведомления, вы соглашаетесь с условиями обработки персональных данных.
На ваш почтовый адрес отправлено письмо с подтверждением подписки.