Что такое auditd и как с его помощью отслеживать действия пользователей и процессы в Linux
Когда нужно точно знать, кто и что делал на сервере, обычные системные логи уже не спасают.
Для этого в 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
Лучшие практики
- Логируй только важное. Избыточное количество правил может замедлить систему.
- Используй ключи (
-k
) для удобного поиска событий. - Периодически очищай или ротйруй логи, иначе они займут всё место.
- Сохраняй логи на отдельный диск или в централизованное хранилище, чтобы злоумышленник не мог их стереть.
- Комбинируй auditd с fail2ban, SELinux и journald — вместе они дают почти полный контроль над безопасностью системы.
Заключение
auditd — это инструмент, без которого трудно представить полноценную безопасность Linux-сервера.
Он фиксирует каждое значимое действие, помогает проводить расследования, отслеживать администраторов и вовремя выявлять подозрительную активность.
Настроив несколько простых правил, можно всегда знать:
- кто изменил конфигурацию;
- кто запускал команды от root;
- кто пытался получить доступ к защищённым файлам.
Auditd — это не просто логгер, а «чёрный ящик» Linux, который помнит всё.
Настроить мониторинг за 30 секунд
Надежные оповещения о даунтаймах. Без ложных срабатываний