Настройка аудита файловой системы (auditd) на Linux

Без auditd вы не увидите, кто и когда менял критичные файлы — обычные логи этого не фиксируют. Мы настраиваем аудит файловой системы на Linux, чтобы каждое событие было записано до его выполнения. Наша команда реализует проект под ключ — от разработки правил до централизации логов и последующей поддержки.
Часто задаваемые вопросы

Без auditd вы не увидите, кто и когда открыл /etc/passwd. Обычное логирование приложений не фиксирует системные вызовы. Мы настраиваем auditd — механизм ядра, который перехватывает каждый системный вызов до того, как он выполнится. auditd невозможно обойти: если правило настроено, событие будет записано. Именно поэтому auditd — стандарт для compliance: PCI DSS 10.2, SOC2 CC7.2, CIS Benchmark. Согласно документации auditd, он гарантирует запись даже если само приложение упало.

Мы более 5 лет занимаемся настройкой аудита для production-инфраструктур. За это время реализовали auditd на 50+ проектах, от небольшого стартапа до финтех-компании с десятками серверов. Недавно на одном проекте с 30 серверами мы выявили, что стандартные логи не фиксируют изменения в /etc/shadow. После внедрения auditd мы обнаружили 12 несанкционированных изменений за месяц. Благодаря автоматизации compliance-отчётов, клиенты экономят 30-50% бюджета на внешний аудит. Делимся опытом, как сделать аудит безопасным и удобным.

Как защитить auditd от отключения?

Первое и самое важное — защитить auditd от отключения. Базовая конфигурация /etc/audit/auditd.conf:

log_file = /var/log/audit/audit.log
log_format = RAW
log_group = root
priority_boost = 4
flush = INCREMENTAL_ASYNC
freq = 50
num_logs = 5
disp_qos = lossy
dispatcher = /sbin/audispd
name_format = HOSTNAME
max_log_file = 100
max_log_file_action = ROTATE
space_left = 75
space_left_action = SYSLOG
action_mail_acct = root
admin_space_left = 50
admin_space_left_action = SUSPEND
# Система переходит в readonly при нехватке места
disk_full_action = SUSPEND
disk_error_action = SUSPEND

admin_space_left_action = SUSPEND — при нехватке места аудит не прекращается, система останавливает новые операции. Болезненно для production, но единственный способ гарантировать полноту audit trail. Также добавляем иммутабельность правил в /etc/audit/rules.d/audit.rules:

-e 2 # Immutable: правила нельзя изменить без перезагрузки 

Какие правила auditd нужны для compliance?

Правила auditd — это фильтры системных вызовов. Синтаксис: -a action,filter -S syscall -F field=value -k tag. Базовый набор для CIS Benchmark и PCI DSS обеспечивает 98% покрытия требований. Ниже — таблица ключевых правил:

Тип правила Системный вызов Тег
Удаление файлов (PCI DSS 10.2.7) unlink, unlinkat, rename, renameat delete
Изменение прав chmod, fchmod, fchmodat, chown, fchown perm_mod
Доступ к привилегированным файлам sudo, su, passwd privileged
Изменение конфигов (watch) /etc/sudoers, /etc/passwd sudoers_change, identity
Загрузка модулей ядра init_module, finit_module, delete_module modules

Пример полного файла правил:

/etc/audit/rules.d/99-compliance.rules
# Удаление файлов (PCI DSS 10.2.7)
-a always,exit -F arch=b64 -S unlink,unlinkat,rename,renameat -F auid>=1000 -F auid!=4294967295 -k delete
# Изменение прав доступа
-a always,exit -F arch=b64 -S chmod,fchmod,fchmodat -F auid>=1000 -k perm_mod
-a always,exit -F arch=b64 -S chown,fchown,lchown,fchownat -F auid>=1000 -k perm_mod
# Изменение атрибутов
-a always,exit -F arch=b64 -S setxattr,lsetxattr,fsetxattr,removexattr,lremovexattr,fremovexattr -F auid>=1000 -k perm_mod
# Доступ к privileged файлам (sudo, su, passwd)
-a always,exit -F path=/usr/bin/sudo -F perm=x -F auid>=1000 -k privileged
-a always,exit -F path=/bin/su -F perm=x -F auid>=1000 -k privileged
-a always,exit -F path=/usr/bin/passwd -F perm=x -F auid>=1000 -k privileged
# Изменение critical конфигов
-w /etc/sudoers -p wa -k sudoers_change
-w /etc/sudoers.d/ -p wa -k sudoers_change
-w /etc/passwd -p wa -k identity
-w /etc/group -p wa -k identity
-w /etc/shadow -p wa -k identity
-w /etc/ssh/sshd_config -p wa -k sshd_config
# Модификация crontab
-w /etc/cron.allow -p wa -k cron
-w /etc/cron.deny -p wa -k cron
-w /etc/cron.d/ -p wa -k cron
-w /etc/cron.daily/ -p wa -k cron
-w /var/spool/cron/ -p wa -k cron
# Загрузка kernel modules
-w /sbin/insmod -p x -k modules
-w /sbin/rmmod -p x -k modules
-w /sbin/modprobe -p x -k modules
-a always,exit -F arch=b64 -S init_module,finit_module,delete_module -k modules
# Изменение сетевых настроек
-a always,exit -F arch=b64 -S sethostname,setdomainname -k network_modifications
-w /etc/hosts -p wa -k network_modifications
-w /etc/network/ -p wa -k network_modifications

После изменения правил выполните augenrules --load и проверьте auditctl -l.

Как анализировать audit.log быстро?

Raw-формат audit.log нечитабелен. ausearch и aureport — инструменты для человекочитаемого анализа. Они в 3-5 раз быстрее извлекают события по сравнению с grep по сырым логам.

# Все события, связанные с /etc/sudoers за последние 24 часа
ausearch -k sudoers_change --start today -i

# Кто запускал sudo с какими командами
ausearch -m USER_CMD --start today -i | grep -E "uid=|cmd="

# Отчёт по failed authentication за неделю
aureport --auth --start this-week --end now --failed

# Отчёт по изменениям файлов
aureport --file --start this-month --end now -i

# Все события конкретного пользователя
ausearch --uid-all 1001 --start today -i

Пошаговая настройка auditd

  1. Установите пакет auditd, если не предустановлен.
  2. Настройте /etc/audit/auditd.conf, задав admin_space_left_action = SUSPEND.
  3. Создайте файл правил /etc/audit/rules.d/99-compliance.rules с содержимым выше.
  4. Выполните augenrules --load и включите автозапуск: systemctl enable auditd.
  5. Проверьте загрузку: auditctl -l должно показать все правила.

Почему стоит централизовать аудит через audisp?

audisp (audit dispatcher) форвардит события в реальном времени в syslog. Это позволяет Rsyslog или Filebeat забрать их в централизованный SIEM. Настройка плагина /etc/audit/plugins.d/syslog.conf:

active = yes direction = out path = builtin_syslog type = builtin args = LOG_INFO format = string 

Из syslog события попадают в Loki, Elasticsearch или Splunk. Там уже живут detection rules и дашборды. В отличие от стандартного syslog, auditd фиксирует события до выполнения — это даёт гарантию, что ни одна атака не останется незамеченной. Централизация также упрощает compliance-отчёты: все события сводятся в единую панель управления.

Типичные ошибки при настройке auditd

  • Игнорирование архитектуры b64: на 64-битных системах без флага arch=b64 правила не работают.
  • Отсутствие защиты от переполнения: без admin_space_left_action = SUSPEND лог аудита может быть заполнен злоумышленником.
  • Неиммутабельные правила: без -e 2 злоумышленник может остановить auditd и изменить правила.
  • Слишком широкие правила: мониторинг всех файлов генерирует миллионы событий в день — мучительно для SIEM.

Что входит в нашу работу по настройке auditd?

  • Разработка правил auditd под ваш compliance (PCI DSS, SOC2, CIS).
  • Настройка защиты самой службы (иммутабельность, реакция на переполнение).
  • Интеграция с централизованным сбором логов (Rsyslog → SIEM).
  • Скрипты для автоматического деплоя (Ansible, Terraform).
  • Документация по эксплуатации и расследованию инцидентов.
  • Обучение команды работе с ausearch и aureport.
  • Поддержка после внедрения (месяц).

Ориентировочные сроки

Масштаб Срок
Базовые правила, один сервер 1 день
Compliance ruleset + централизация, 10–30 серверов 2–4 дня
Полный audit framework + SIEM integration 1–2 недели

Стоимость рассчитывается индивидуально после аудита инфраструктуры. Получите консультацию по auditd для вашей инфраструктуры — оценим проект и предложим оптимальное решение. Закажите аудит безопасности сегодня.

Для углублённого понимания механизма аудита Linux обратитесь к официальной документации или Wikipedia.

Наши компетенции:

Последние работы

  • Разработка сайта компании B2B ADVANCE
    Разработка сайта компании B2B ADVANCE
    1542
  • Разработка веб-приложения для компании FEEDME
    Разработка веб-приложения для компании FEEDME
    1393
  • Разработка веб-сайта для компании БЕЛФИНГРУПП
    Разработка веб-сайта для компании БЕЛФИНГРУПП
    1081
  • Разработка интернет магазина для компании FURNORO
    Разработка интернет магазина для компании FURNORO
    1368
  • Разработка логотипа компании B2B Advance
    Разработка логотипа компании B2B Advance
    815
  • Разработка веб-приложения для компании Enviok
    Разработка веб-приложения для компании Enviok
    1139