Блог "Дети ОИТа"
/поиск

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

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

Введение

В современных enterprise-средах обеспечение целостности критически важных файлов является фундаментальной задачей безопасности. AIDE (Advanced Intrusion Detection Environment) — это мощный инструмент с открытым исходным кодом, который реализует подход Host-based Intrusion Detection System (HIDS). В отличие от антивирусов, AIDE не ищет вредоносный код, а отслеживает изменения в атрибутах файлов: контрольных суммах, правах доступа, владельце, времени модификации.

Архитектура и принцип работы

AIDE работает по принципу сравнения текущего состояния файловой системы с эталонным. Процесс состоит из двух фаз:

  1. Инициализация (базлайн): администратор запускает aide --init, сканируя файловые системы и создавая криптографические хэши (по умолчанию используется SHA-256, но поддерживаются и другие алгоритмы) для каждого контролируемого файла. Эта база данных подписывается и хранится в защищённом месте.
  2. Проверка: регулярный запуск aide --check сравнивает текущее состояние с эталонной базой. Любое расхождение фиксируется в отчёте.

Практическая реализация и автоматизация

Рассмотрим настройку AIDE на дистрибутивах семейства RHEL/CentOS и автоматизацию через systemd.

1. Установка и первичная настройка

# Установка пакета
sudo dnf install aide -y

# Генерация начальной базы данных
sudo aide --init

# Перемещение базы в рабочую директорию
sudo mv /var/lib/aide/aide.db.new.gz /var/lib/aide/aide.db.gz

2. Настройка конфигурационного файла

Основной файл конфигурации — /etc/aide.conf. Важно правильно определить правила (rulesets) для разных типов файлов. Пример оптимальной конфигурации для сервера:

# Правила проверки
NORMAL = R+b+sha256
DATA = p+i+n+u+g+s+S+sha512
LOG = p+i+n+u+g+S

# Пути
/var/log NORMAL
/etc NORMAL
/bin$ NORMAL
/sbin$ NORMAL
/usr/bin$ NORMAL
/usr/sbin$ NORMAL
!/var/log/aide.log

3. Автоматизация через systemd timer

Создадим таймер для ежедневной проверки в 03:00.

Файл /etc/systemd/system/aide-check.service:

[Unit]
Description=AIDE Check
Wants=network-online.target
After=network-online.target

[Service]
Type=oneshot
ExecStart=/usr/sbin/aide --check
ExecStartPost=/usr/bin/systemctl reload-or-try-restart auditd.service

Файл /etc/systemd/system/aide-check.timer:

[Unit]
Description=Run AIDE check daily

[Timer]
OnCalendar=*-*-* 03:00:00
Persistent=true

[Install]
WantedBy=timers.target

Активация:

sudo systemctl daemon-reload
sudo systemctl enable --now aide-check.timer

Интеграция с централизованным логированием

Для enterprise-мониторинга результаты проверок должны попадать в SIEM. AIDE поддерживает вывод в формате JSON или отправку через syslog. Настройка syslog в /etc/aide.conf:

report_url=syslog:LOG_LOCAL0

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

Заключение

Внедрение AIDE — это не разовая настройка, а процесс. Регулярный анализ отчётов и обновление базы данных после санкционированных изменений (например, патчинга) превращает AIDE из простого сканера в элемент проактивной защиты инфраструктуры. Автоматизация через systemd timers обеспечивает непрерывность контроля без участия человека, что соответствует современным практикам DevSecOps.