linux-labs

Вики / Логи и аудит

auditd (аудит безопасности)

Сервис Ubuntu 24.04 · auditd ЛогиБезопасность

Аудит ядра — кто, что и когда сделал; правила watch и поиск по событиям.

auditd ведёт аудит на уровне ядра: кто открывал/менял файл, выполнял команду, менял права. Это инструмент безопасности и расследований (compliance), а не обычные логи. События — в /var/log/audit/audit.log, поиск — ausearch/aureport.

sudo systemctl status auditd
sudo auditctl -s                  # статус подсистемы (enabled, backlog, потери)
# watch файла/каталога: -p = права (r=read w=write x=exec a=attr)
sudo auditctl -w /etc/passwd -p wa -k passwd_changes
sudo auditctl -w /etc/sudoers -p wa -k sudoers
sudo auditctl -w /etc/ssh/sshd_config -p wa -k sshd_conf

# syscall-правила (-a always,exit): ловить действия
sudo auditctl -a always,exit -F arch=b64 -S execve -F euid=0 -k root_cmd   # команды от root
sudo auditctl -a always,exit -F arch=b64 -S unlink,unlinkat -F dir=/etc -k etc_delete

sudo auditctl -l                  # текущие правила
sudo auditctl -D                  # удалить все (временно)
# постоянно — /etc/audit/rules.d/*.rules + sudo augenrules --load
# заблокировать изменение правил до ребута: последним правилом  -e 2  (immutable)
sudo ausearch -k passwd_changes           # по ключу (-k)
sudo ausearch -k passwd_changes -i        # -i = человекочитаемо (имена вместо чисел)
sudo ausearch -f /etc/passwd -ts today    # по файлу за сегодня
sudo ausearch -ui 1000 -ts recent         # по UID за последние 10 мин
sudo ausearch -m USER_LOGIN --start today # по типу события (логины)
sudo aureport --summary                   # сводный отчёт
sudo aureport -au                         # отчёт по аутентификациям
sudo aureport -f -i                       # отчёт по файловым событиям

Кто изменил важный файл?

Поставь watch (auditctl -w файл -p wa -k метка), затем ausearch -k метка -i → uid/команда/время. Для уже случившегося (watch не стоял) — событий нет, аудит не ретроактивен. Поэтому ключевые watch ставят заранее (в rules.d).

Слишком много событий / шум / потери (lost)

auditctl -s покажет lost/backlog. Делай узкие правила (конкретные файлы/syscall/ ключи), подними -b (backlog), следи за размером /var/log/audit/ (своя ротация в auditd.conf: max_log_file, num_logs).

Правила пропали после ребута

auditctl -w/-a временно. Постоянные — /etc/audit/rules.d/*.rules, применяются augenrules --load (или при старте auditd).

Не могу изменить/удалить правила

Включён immutable-режим (-e 2) — правила залочены до перезагрузки (это by design для защиты от подмены).

auditd vs journald

journald — операционные логи служб (journalctl); auditd — кто-что-сделал для безопасности (неизменяемый след). Разные подсистемы.

sudo auditctl -w /etc/passwd -p wa -k passwd_changes   # watch файла
sudo auditctl -a always,exit -F arch=b64 -S execve -F euid=0 -k root_cmd
sudo auditctl -l ; sudo auditctl -s                    # правила / статус
sudo ausearch -k passwd_changes -i                     # поиск по ключу (читаемо)
sudo aureport --summary
# постоянно: /etc/audit/rules.d/*.rules → augenrules --load

См. также