Что такое auditd и как с его помощью отслеживать действия пользователей и процессы в Linux

10 минут чтения
Средний рейтинг статьи — 4.8

Когда нужно точно знать, кто и что делал на сервере, обычные системные логи уже не спасают.
Для этого в Linux существует мощная система аудита — auditd, которая отслеживает каждое действие пользователя, процессы, системные вызовы и даже изменения в файлах конфигурации.

Что такое auditd

auditd (Linux Auditing System Daemon) — это демон, который ведёт подробный журнал активности системы.
Он фиксирует события вроде:

  • входа пользователей;
  • запуска процессов;
  • доступа к файлам;
  • изменения прав и конфигураций;
  • попыток обращения к защищённым ресурсам.

Эти данные позволяют проводить расследования, искать следы взлома или просто контролировать действия администраторов и приложений.

Установка и запуск

Auditd входит в стандартные репозитории большинства дистрибутивов.

sudo apt install auditd audispd-plugins   # Debian/Ubuntu
sudo yum install audit audit-libs         # CentOS/RHEL

После установки демон запускается автоматически:

sudo systemctl enable --now auditd

Проверить статус:

sudo systemctl status auditd

Логи по умолчанию хранятся в /var/log/audit/audit.log.

Базовые команды

  • Просмотреть последние события:
sudo ausearch -m USER_LOGIN
  • Показать все действия конкретного пользователя:
sudo ausearch -ua <UID>

Проверить попытки доступа к файлам:

sudo ausearch -f /etc/passwd

Сформировать удобный отчёт:

sudo aureport

aureport собирает логи и группирует их по пользователям, событиям, времени и даже IP-адресам.

Настройка правил аудита

Все правила задаются в файле /etc/audit/rules.d/audit.rules (или через auditctl в реальном времени).
Каждое правило описывает, какие действия нужно отслеживать.

Примеры:

  • Отслеживать доступ к важным системным файлам:
-w /etc/passwd -p wa -k passwd_changes
-w /etc/sudoers -p wa -k sudoers_edit
  • где:
    • -w — файл для наблюдения;
    • -p — типы доступа (r — чтение, w — запись, a — атрибуты, x — выполнение);
    • -k — ключ для фильтрации логов.
  • Отслеживать запуск команд от root:
-a always,exit -F arch=b64 -F euid=0 -S execve -k root_cmd

Это правило записывает все команды, выполненные пользователем с UID 0.

  • Проверять попытки изменения прав доступа:
-a always,exit -S chmod,chown,fchmod -k perms_change

После изменения правил обязательно перезапусти демон:

sudo systemctl restart auditd

Пример использования в расследовании

Допустим, на сервере изменился файл /etc/ssh/sshd_config, но никто не признаётся, кто это сделал.
Можно запустить:

sudo ausearch -f /etc/ssh/sshd_config

И увидеть строку вроде:

type=SYSCALL msg=audit(1696628123.678:355): pid=1423 uid=1001 auid=1001 exe="/usr/bin/nano" ...

Из неё видно, какой процесс, под каким пользователем и в какое время произвёл изменение.
Так легко выявить источник инцидента или несанкционированное действие.

Автоматизация с помощью ключей и фильтров

Auditd позволяет группировать события по ключам (-k) и фильтровать по ним:

sudo ausearch -k root_cmd

Это особенно удобно при большом объёме логов.
Также можно ограничить объём логов, настроить ротацию и действия при переполнении:
в /etc/audit/auditd.conf есть параметры:

max_log_file = 8
max_log_file_action = ROTATE
space_left_action = EMAIL

Можно указать email-уведомление или автоматическое выключение системы при попытке взлома.

Интеграция с другими системами

Auditd может отправлять события:

  • в syslog или journald;
  • через auditd dispatcher (audispd) — в внешние SIEM-системы (Splunk, Wazuh, ELK);
  • или в кастомный обработчик (скрипт или webhook).

Для этого редактируется /etc/audisp/plugins.d/ — например, можно включить плагин syslog:

active = yes
direction = out
path = builtin_syslog
type = builtin

Лучшие практики

  1. Логируй только важное. Избыточное количество правил может замедлить систему.
  2. Используй ключи (-k) для удобного поиска событий.
  3. Периодически очищай или ротйруй логи, иначе они займут всё место.
  4. Сохраняй логи на отдельный диск или в централизованное хранилище, чтобы злоумышленник не мог их стереть.
  5. Комбинируй auditd с fail2ban, SELinux и journald — вместе они дают почти полный контроль над безопасностью системы.

Заключение

auditd — это инструмент, без которого трудно представить полноценную безопасность Linux-сервера.
Он фиксирует каждое значимое действие, помогает проводить расследования, отслеживать администраторов и вовремя выявлять подозрительную активность.

Настроив несколько простых правил, можно всегда знать:

  • кто изменил конфигурацию;
  • кто запускал команды от root;
  • кто пытался получить доступ к защищённым файлам.

Auditd — это не просто логгер, а «чёрный ящик» Linux, который помнит всё.

10 минут чтения
Средний рейтинг статьи — 4.8

Настроить мониторинг за 30 секунд

Надежные оповещения о даунтаймах. Без ложных срабатываний