Product SiteDocumentation Site

74.7.3. Файлы журнала аудита

По умолчанию система аудита сохраняет записи журнала в файле /var/log/audit/audit.log.
События аудита бывают двух видов: простые и составные. Простое событие отправляется из доверенного приложения, например, sshd. Такое событие содержит только одну запись. Составное событие содержит несколько записей об одном и том же событии. Записи, относящиеся к одному и тому же событию, имеют одинаковую временную метку и серийный номер.
Для примера создадим правило аудита, которое регистрирует каждую попытку чтения или изменения файла /etc/autofs.conf:
# auditctl -a always,exit -F arch=b64 -F path=/etc/autofs.conf -F perm=warx -F key=autofs
Если служба auditd запущена, выполнение следующей команды создаст новое событие в файле журнала аудита:
$ cat /etc/autofs.conf
Событие в /var/log/audit/audit.log:
type=SYSCALL msg=audit(1742997845.965:860): arch=c000003e syscall=257 success=yes exit=3 a0=ffffff9c a1=7ffd62966448 a2=0 a3=0 items=1 ppid=16840 pid=22257 auid=1000 uid=1000 gid=1000 euid=1000 suid=1000 fsuid=1000 egid=1000 sgid=1000 fsgid=1000 tty=pts2 ses=90 comm="cat" exe="/usr/bin/cat" key="autofs"ARCH=x86_64 SYSCALL=openat AUID="user" UID="user" GID="user" EUID="user" SUID="user" FSUID="user" EGID="user" SGID="user" FSGID="user"
type=CWD msg=audit(1742997845.965:860): cwd="/home/user"
type=PATH msg=audit(1742997845.965:860): item=0 name="/etc/autofs.conf" inode=1051168 dev=08:02 mode=0100644 ouid=0 ogid=0 rdev=00:00 nametype=NORMAL cap_fp=0 cap_fi=0 cap_fe=0 cap_fver=0 cap_frootid=0OUID="root" OGID="root"
type=PROCTITLE msg=audit(1742997845.965:860): proctitle=636174002F6574632F6175746F66732E636F6E66
Данное событие состоит из четырех записей, имеющих один серийный номер и одну и ту же отметку времени. Каждая запись состоит из нескольких пар имя=значение, разделенных пробелом или запятой. Ниже каждая запись рассмотрена подробнее.

Примечание

Некоторые значения в журнале закодированы в шестнадцатеричном формате. При поиске записей аудита с помощью команды ausearch можно использовать параметр -i для автоматического преобразования шестнадцатеричных значений в удобочитаемые эквиваленты.
Первая запись:
  • type=SYSCALL — тип записи. Значение SYSCALL указывает, что запись была вызвана системным вызовом ядра;
  • msg=audit(1742997845.965:860) — в поле msg записывается:
    • отметка времени и уникальный идентификатор записи в формате audit(time_stamp:ID). Несколько записей могут иметь одну и ту же отметку времени и идентификатор, если они были созданы в рамках одного и того же события аудита. Отметка времени использует формат времени Unix (секунды с 00:00:00 UTC 1 января 1970 года);
    • различные пары имя=значение, зависящие от события, предоставляемые приложениями ядра или пользовательского пространства;
  • arch=c000003e — содержит информацию об архитектуре ЦП системы. Значение c000003e закодировано в шестнадцатеричном формате (c000003e интерпретируется как x86_64);
  • syscall=257 — тип системного вызова, отправленного ядру. Утилита ausyscall позволяет преобразовывать номера системных вызовов в их удобочитаемые эквиваленты. В данном примере 257 — системный вызов openat;
  • success=yes — указывает, был ли системный вызов, записанный в этом конкретном событии, успешным или неудачным. В данном примере вызов успешный;
  • exit=3 — значение, указывающее код выхода, возвращаемый системным вызовом. Это значение варьируется для разных системных вызовов;
  • a0=ffffff9c a1=7ffc39880600 a2=0 a3=0 — первые четыре аргумента системного вызова в этом событии, закодированные в шестнадцатеричной системе счисления;
  • items=1 — количество вспомогательных записей PATH, следующих за записью системного вызова;
  • ppid=16840 — идентификатор родительского процесса;
  • pid=22257 — идентификатор процесса (PID);
  • auid=1000 — идентификатор пользователя аудита, то есть логин. Этот идентификатор присваивается пользователю при входе в систему и наследуется каждым процессом, даже если личность пользователя меняется, например, при переключении учетных записей пользователей с помощью команды su -;
  • uid=1000 — идентификатор пользователя, запустившего анализируемый процесс. Идентификатор пользователя можно интерпретировать в имя пользователя с помощью команды ausearch -i --uid UID;
  • gid=1000 — идентификатор группы пользователя, запустившего анализируемый процесс;
  • euid=1000 — эффективный идентификатор пользователя, запустившего анализируемый процесс;
  • suid=1000 — установленный идентификатор пользователя, запустившего анализируемый процесс;
  • fsuid=1000 — идентификатор пользователя файловой системы, запустившего анализируемый процесс;
  • egid=1000 — эффективный идентификатор группы пользователя, запустившего анализируемый процесс;
  • sgid=1000 — заданный групповой идентификатор пользователя, запустившего анализируемый процесс;
  • fsgid=1000 — идентификатор группы файловой системы пользователя, запустившего анализируемый процесс;
  • tty=pts2 — терминал, с которого был вызван анализируемый процесс;
  • ses=90 — идентификатор сеанса, из которого был вызван анализируемый процесс;
  • comm="cat" — имя команды, которая использовалась для вызова анализируемого процесса;
  • exe="/usr/bin/cat" — путь к исполняемому файлу, который использовался для запуска анализируемого процесса;
  • key="autofs" — определенная администратором строка, связанная с правилом, создавшим это событие в журнале аудита;
Вторая запись:
  • type=CWD — тип записи. Значение CWD используется для записи рабочего каталога, из которого был выполнен процесс, вызвавший системный вызов, указанный в первой записи. Цель этой записи — записать местоположение текущего процесса на случай, если относительный путь будет зафиксирован в связанной записи PATH. Так можно восстановить абсолютный путь;
  • cwd="/home/user" — путь к каталогу, в котором был вызван системный вызов.
Третья запись:
  • type=PATH — событие аудита содержит запись типа PATH для каждого пути, который передается системному вызову в качестве аргумента. В этом событии аудита в качестве аргумента использовался только один путь (/etc/autofs.conf);
  • item=0 — указывает, какой элемент из общего числа элементов, указанных в записи типа SYSCALL, является текущей записью. Это число начинается с нуля; значение 0 означает, что это первый элемент;
  • name="/etc/autofs.conf" — путь к файлу или каталогу, который был передан системному вызову в качестве аргумента;
  • inode=1051168 — номер индексного дескриптора, связанный с файлом или каталогом, записанным в этом событии. Отобразить файл или каталог, связанный с номером индексного дескриптора можно, выполнив команду:
    # find / -inum 1051168 -print
    /etc/autofs.conf
    
  • dev=08:02 — вспомогательный и основной идентификатор устройства, которое содержит файл или каталог, записанный в этом событии (в данном примере /dev/08/02);
  • mode=0100644 — права доступа к файлу или каталогу, закодированные в числовой форме, возвращаемые командой stat в поле st_mode (в данном примере -rw-r--r--);
  • ouid=0 — идентификатор пользователя владельца объекта;
  • ogid=0 — идентификатор группы владельца объекта;
  • rdev=00:00 — записанный идентификатор устройства только для специальных файлов. В данном случае он не используется, поскольку записанный файл является обычным файлом;
  • nametype=NORMAL — указывает на тип пути в контексте события. Возможные значения:
    • NORMAL — обычный путь к файлу, который был использован в системном вызове;
    • DELETE — путь к файлу, который был удалён;
    • PARENT — путь к родительскому каталогу целевого файла;
    • CREATE — путь к новому файлу, который был создан;
    • UNKNOWN — неизвестный тип пути.
    Значение nametype=NORMAL здесь означает, что /etc/autofs.conf является целевым файлом операции;
  • cap_fp=0 — данные, относящиеся к настройке разрешенных возможностей файловой системы для объекта файла или каталога;
  • cap_fi=0 — данные, относящиеся к настройке унаследованных возможностей файловой системы для объекта файла или каталога;
  • cap_fe=0 — установка эффективного бита возможностей файловой системы объекта файла или каталога;
  • cap_fver=0 — версия возможностей файловой системы объекта файла или каталога.
  • cap_frootid=0OUID="root" OGID="root" — указывает, что файл /etc/autofs.conf принадлежит пользователю root и группе root.
Четвёртая запись:
  • type=PROCTITLE — тип записи. Значение PROCTITLE указывает, что эта запись содержит полную командную строку, которая инициировала это событие аудита, вызванное системным вызовом ядра;
  • proctitle — полная командная строка, которая использовалась для запуска анализируемого процесса. Поле закодировано в шестнадцатеричном формате. Текст декодируется в команду, которая вызвала это событие аудита. При поиске записей аудита с помощью команды ausearch следует использовать параметр -i для автоматического преобразования шестнадцатеричных значений в удобочитаемые эквиваленты. Значение 636174002F6574632F6175746F66732E636F6E66 интерпретируется в «cat /etc/autofs.conf».
Эти же записи в выводе команды ausearch -i:
# ausearch -i -k autofs
----
type=PROCTITLE msg=audit(26.03.2025 16:04:05.965:860) : proctitle=cat /etc/autofs.conf
type=PATH msg=audit(26.03.2025 16:04:05.965:860) : item=0 name=/etc/autofs.conf inode=1051168 dev=08:02 mode=file,644 ouid=root ogid=root rdev=00:00 nametype=NORMAL cap_fp=none cap_fi=none cap_fe=0 cap_fver=0 cap_frootid=0
type=CWD msg=audit(26.03.2025 16:04:05.965:860) : cwd=/home/user
type=SYSCALL msg=audit(26.03.2025 16:04:05.965:860) : arch=x86_64 syscall=openat success=yes exit=3 a0=AT_FDCWD a1=0x7ffd62966448 a2=O_RDONLY a3=0x0 items=1 ppid=16840 pid=22257 auid=user uid=user gid=user euid=user suid=user fsuid=user egid=user sgid=user fsgid=user tty=pts2 ses=90 comm=cat exe=/usr/bin/cat key=autofs