Аудит системных событий: мониторинг и анализ безопасности¶
Для обеспечения безопасности и стабильности Linux-системы недостаточно лишь предотвращать угрозы — важно уметь выявлять и расследовать инциденты. Системный аудит не блокирует атаки, но позволяет зафиксировать факт нарушения, определить его источник и масштаб, а также подготовить доказательную базу для анализа.
Ключевой инструмент аудита в большинстве дистрибутивов — демон auditd. Он отслеживает вызовы ядра (system calls), регистрирует действия пользователей и процессов и сохраняет события в структурированных журналах.
Как работает auditd¶
Система аудита «подключается» к ядру через триггеры, срабатывающие при входе в системный вызов (entry) или выходе из него (exit). Правила определяют, какие вызовы, файлы, пользователи или процессы подлежат мониторингу. Все зафиксированные события записываются в /var/log/audit/audit.log.
С помощью auditd можно отслеживать:
- Запуск/остановку системы и служб
- Работу с критичными файлами (
/etc/passwd,/etc/shadow, конфиги SSH и т.д.) - Изменение прав доступа, владельца или атрибутов файлов
- Создание/удаление файлов, каталогов, ссылок
- Монтирование файловых систем
- Сетевые подключения и изменения конфигурации
- Действия конкретных пользователей или процессов
Установка и компоненты¶
В CentOS/RHEL пакет audit установлен по умолчанию.
В Debian/Ubuntu устанавливается командой:
Основные утилиты:
| Утилита | Назначение |
|---|---|
auditctl | Управление правилами и состоянием аудита (динамическая настройка) |
ausearch | Поиск событий в журналах по различным критериям (пользователь, файл, syscall и др.) |
aureport | Генерация сводных отчётов (по файлам, пользователям, времени и т.п.) |
autrace | Трассировка системных вызовов процесса (аналог strace, но с интеграцией в аудит) |
Конфигурация демона — в /etc/audit/auditd.conf (буферы, поведение при переполнении, ротация логов и др.). Стандартные настройки обычно подходят для большинства сценариев.
Настройка правил аудита¶
Правила задаются либо динамически через auditctl, либо статически — в файле /etc/audit/audit.rules.
Базовый синтаксис:¶
-
Списки событий:
task— создание процессов
entry/exit— вход/выход из syscall (наиболее часто используются)
user— события в пользовательском пространстве
exclude— исключения -
Действия:
always— логировать событие
never— игнорировать -
Примеры:
# Отслеживать открытие файлов в /etc с записью или изменением атрибутов
sudo auditctl -a exit,always -S open -F path=/etc/ -F perm=wa
# То же самое — проще и эффективнее для файлов/каталогов:
sudo auditctl -w /etc/ -p wa
# Конкретный файл:
sudo auditctl -w /etc/passwd -p wa
Примечание
-p wa означает: **w**rite (запись) и **a**ttribute change (изменение метаданных: права, владелец и т.д.)
Постоянные правила — в /etc/audit/audit.rules¶
Формат совпадает с командами auditctl, но без самой команды:
# Очистка старых правил
-D
# Буфер и реакция на переполнение
-b 320
-f 1
# Отслеживание критичных файлов
-w /etc/passwd -p wa
-w /etc/shadow -p wa
-w /etc/ssh/sshd_config -p wa
# Файлы аудита — защищаем от подмены
-w /etc/audit/audit.rules -p wa
-w /etc/audit/auditd.conf -p wa
# Логи аудита
-w /var/log/audit/
# Системные вызовы: изменение прав, создание файлов, монтирование и др.
-a exit,always -S chmod,fchmod,chown,fchown,lchown
-a exit,always -S creat,open,truncate,ftruncate
-a exit,always -S mkdir,rmdir
-a exit,always -S mount,umount,umount2
После редактирования файла примените изменения:
Анализ журналов¶
Журналы хранятся в /var/log/audit/. Основные инструменты — aureport и ausearch.
aureport — сводки и отчёты¶
# Отчёт по обращениям к файлам
sudo aureport -f
# Только за последние 10 минут (+ человекочитаемые имена)
sudo aureport -f -i --start recent
# Сводка по файлам (сколько раз к какому обращались)
sudo aureport -f --summary
# Отчёт за конкретный период
sudo aureport --start 08/20/2025 12:00 --end 08/20/2025 13:00 -f
# Удобные временные метки: today, yesterday, this-week, recent, now
sudo aureport -f --start today --summary
Пример поиска подозрительного доступа:
ausearch — детальный анализ событий¶
# По ID события (из отчёта aureport)
sudo ausearch -a 123456
# По пользователю (UID)
sudo ausearch -ui 1001 -i
# По исполняемому файлу
sudo ausearch -x /usr/bin/sudo -i
# По системному вызову
sudo ausearch -sc openat -i
# По службе (например, cron)
sudo ausearch -tm cron -i
# С временным ограничением
sudo ausearch --start 08/20/2025 12:00 --end 08/20/2025 13:00 -f /etc/passwd
Примечание
Флаг -i (или --interpret) заменяет UID/GID и коды вызовов на понятные имена.