В Linux-серверах безопасность имеет большое значение, особенно защита критических конфигурационных файлов от несанкционированных изменений. Здесь на помощь приходит auditd — мощный механизм аудита ядра Linux. Он детально записывает изменения файлов, системные вызовы и действия пользователей. В этом руководстве мы пошагово расскажем, как использовать auditd для отслеживания изменений файлов.
Что такое auditd и почему это важно?
auditd — это служба, собирающая и управляющая записями аудита в Linux. Она идеально подходит для отслеживания изменений в таких чувствительных файлах, как /etc/passwd, /etc/shadow, /etc/ssh/sshd_config. Если злоумышленник изменит эти файлы, auditd позволит обнаружить событие, увидеть, кто, когда и какие изменения внёс. Это помогает своевременно выявлять нарушения безопасности.
Установка и начальная настройка
В большинстве дистрибутивов Linux auditd установлен по умолчанию. Если нет, установите его следующей командой:
sudo apt install auditd audispd-plugins # Debian/Ubuntu
sudo yum install audit audit-libs # RHEL/CentOS
После установки запустите службу и настройте её автоматический запуск:
sudo systemctl enable auditd
sudo systemctl start auditd
Теперь auditd работает. Основной конфигурационный файл — /etc/audit/auditd.conf. В нём можно изменить размер лога, срок хранения и другие параметры.
Правила отслеживания изменений файлов
Добавляйте правила в каталог /etc/audit/rules.d/ в виде файлов с расширением .rules. Например, для отслеживания изменений в файле /etc/passwd:
sudo nano /etc/audit/rules.d/watch-passwd.rules
Вставьте следующее правило:
-w /etc/passwd -p wa -k passwd_changes
В этом правиле: -w указывает файл для отслеживания, -p wa — запись и изменение атрибутов (write, attribute), -k — ключевое слово. Аналогично для /etc/shadow:
-w /etc/shadow -p wa -k shadow_changes
Перезапустите auditd для загрузки правил:
sudo systemctl restart auditd
Также можно отслеживать целый каталог. Например:
-w /etc/ssh -p wa -k ssh_config_changes
Просмотр и анализ логов
Логи хранятся в файле /var/log/audit/audit.log. Запросы можно выполнять с помощью утилит ausearch и aureport. Например, для просмотра записей по ключевому слову passwd_changes:
sudo ausearch -k passwd_changes
Вывод очень подробный: для каждого события указываются тип (syscall), пользователь (uid), процесс (pid), временная метка и результат (success/fail). Пример строки:
type=SYSCALL msg=audit(1609459200.123:456): arch=c000003e syscall=2 success=yes exit=0 ... uid=1000 comm="vim" ... key="passwd_changes"
Это показывает, что пользователь с UID 1000 открыл файл с помощью vim. С помощью aureport можно получать сводные отчёты:
sudo aureport -k -i
Примеры сценариев
1. Несанкционированное изменение конфигурации SSH: Если злоумышленник изменит файл /etc/ssh/sshd_config, разрешив вход root, auditd немедленно запишет это. Используйте ausearch -k ssh_config_changes для изучения события.
2. Отслеживание системных бинарных файлов: Можно отслеживать критические каталоги, например /usr/bin или /usr/sbin. Пример:
-w /usr/bin -p wa -k binary_changes
Однако это может генерировать много логов; поэтому разумнее отслеживать только определённые файлы.
3. Ротация и хранение логов: В файле auditd.conf параметрами max_log_file и num_logs можно задать размер лога и количество файлов для хранения. Например, для хранения 5 файлов по 50 МБ:
max_log_file = 50
num_logs = 5
Заключение
auditd — незаменимый инструмент для отслеживания изменений файлов на Linux-серверах. С помощью правильных правил можно своевременно обнаруживать атаки и получать необходимые доказательства для судебной экспертизы. Не забывайте регулярно просматривать логи. Автоматические системы оповещения (например, перенаправление в syslog через audispd) сделают процесс более эффективным. HostingServer.com.tr рекомендует использовать auditd для повышения безопасности вашего сервера.