Представьте, что ваш сервер — это средневековая крепость. У неё есть несколько ключевых элементов, от которых зависит безопасность всех обитателей:
-
Ворота (
/etc/ssh/sshd_config) — настройки удалённого доступа. -
Ключи от сокровищницы (
/etc/shadow) — хэши паролей всех пользователей. -
Список жителей (
/etc/passwd) — учётные записи, которые могут войти в систему. -
Права командиров (
/etc/sudoers) — кто может выполнять команды с максимальными привилегиями.
Если злоумышленник изменит хотя бы один из этих файлов, ваша «крепость» может пасть за считанные минуты. В этой статье мы настроим Wazuh — мощную SIEM-платформу с открытым исходным кодом — так, чтобы она не просто фиксировала изменения этих файлов, но и немедленно сообщала о них с высоким уровнем критичности.
Что вы получите в итоге
Полноценную систему мониторинга целостности критических файлов Linux с определением пользователя, который внёс изменения (благодаря технологииwhodata), и автоматическими оповещениями.
1. Что такое Wazuh и зачем здесь Syscheck?
Wazuh состоит из трёх основных компонентов:
-
Менеджер — центральный сервер, который обрабатывает события и хранит правила.
-
Агент — программа, устанавливаемая на каждый защищаемый сервер.
-
Интерфейс (обычно Kibana + Wazuh dashboard) — для просмотра алертов.
Компонент Syscheck отвечает за контроль целостности файлов. Он умеет:
-
Периодически сканировать файлы (по расписанию или в реальном времени).
-
Запоминать хэши, разрешения, владельцев.
-
При обнаружении изменений отправлять событие на менеджер.
-
В режиме
whodata— указывать, какой именно пользователь и процесс изменили файл (на Linux это работает черезauditd).
Мы настроим централизованную политику для группы агентов linux, чтобы не править конфигурацию на каждом сервере вручную.
2. Подготовка инфраструктуры
2.1. Проверка существования группы агентов
На сервере Wazuh-менеджера выполните:
bash
ls -la /var/ossec/etc/shared/
Если среди папок нет linux — создайте группу в веб-интерфейсе Wazuh (обычно через Groups → Create group) или скопируйте существующую конфигурацию.
Примечание: создание группы подробно описано в документации Wazuh, но для краткости мы предполагаем, что группа linux уже есть.
2.2. Установка auditd на всех Linux-агентах
Чтобы работал режим whodata, на каждом агенте должен быть запущен auditd (подсистема аудита Linux).
Для дистрибутивов на основе RHEL (CentOS, Rocky, AlmaLinux):
bash
sudo dnf install audit audispd-plugins -ysudo systemctl enable --now auditd
Для Debian/Ubuntu:
bash
sudo apt install auditd audispd-plugins -ysudo systemctl enable --now auditd
Проверка:
bash
sudo auditctl -l
Если команда не выдаёт ошибку — всё работает.
3. Создание централизованной конфигурации для группы Linux
На сервере Wazuh отредактируйте файл групповой конфигурации:
bash
sudo nano /var/ossec/etc/shared/linux/agent.conf
Вставьте следующее содержимое:
xml
<agent_config> <syscheck> <!-- Частота полного сканирования (секунды) --> <frequency>300</frequency> <!-- Включаем whodata (кто и когда изменил файл) --> <whodata>yes</whodata> <!-- Показывать различия между версиями файла --> <diff>yes</diff> <!-- Мониторинг критических системных файлов --> <directories check_all="yes" whodata="yes" report_changes="yes">/etc/passwd</directories> <directories check_all="yes" whodata="yes" report_changes="yes">/etc/shadow</directories> <directories check_all="yes" whodata="yes" report_changes="yes">/etc/sudoers</directories> <directories check_all="yes" whodata="yes" report_changes="yes">/etc/ssh/sshd_config</directories> <!-- Исключаем временные/резервные файлы, чтобы не плодить ложные срабатывания --> <ignore>/etc/passwd-</ignore> <ignore>/etc/shadow-</ignore> <ignore>/etc/sudoers.tmp</ignore> <ignore>/etc/.pwd.lock</ignore> <!-- Оповещать о новых файлах в этих каталогах --> <alert_new_files>yes</alert_new_files> <!-- Сканировать сразу после старта агента --> <scan_on_start>yes</scan_on_start> <!-- Не игнорировать изменения автоматически --> <auto_ignore>no</auto_ignore> </syscheck></agent_config>
Что означают ключевые параметры:
-
check_all="yes"— проверять хэш, владельца, группу, права доступа, атрибуты. -
whodata="yes"— запрашивать у auditd информацию о процессе и пользователе. -
report_changes="yes"— отправлять на менеджер diff (что именно изменилось). -
alert_new_files="yes"— создавать событие при появлении нового файла в отслеживаемой директории.
Сохраните файл (Ctrl+X → Y → Enter).
Перезапустите менеджер Wazuh:
bash
sudo systemctl restart wazuh-manager
Убедитесь, что конфигурация скопировалась в общую директорию:
bash
sudo cat /var/ossec/etc/shared/linux/agent.conf | head -20
4. Настройка правил корреляции (уровни критичности)
По умолчанию Wazuh создаёт событие с уровнем 7 при любом изменении файла. Этого недостаточно для критических файлов. Мы создадим собственные правила с уровнем 12 (очень высокая критичность).
Отредактируйте локальные правила менеджера:
bash
sudo nano /var/ossec/etc/rules/local_rules.xml
Добавьте следующий блок после строки </group> (или в конец файла, если правил ещё нет):
xml
<group name="syscheck,"> <!-- Изменение /etc/passwd --> <rule id="100100" level="12"> <if_sid>550</if_sid> <field name="file">/etc/passwd</field> <description>КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: Изменен файл /etc/passwd</description> <mitre> <id>T1078</id> <id>T1136</id> </mitre> </rule> <!-- Изменение /etc/shadow --> <rule id="100101" level="12"> <if_sid>550</if_sid> <field name="file">/etc/shadow</field> <description>КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: Изменен файл /etc/shadow (пароли)</description> <mitre> <id>T1003</id> <id>T1078</id> </mitre> </rule> <!-- Изменение /etc/sudoers --> <rule id="100102" level="12"> <if_sid>550</if_sid> <field name="file">/etc/sudoers</field> <description>КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: Изменен файл /etc/sudoers</description> <mitre> <id>T1078</id> <id>T1548</id> </mitre> </rule> <!-- Изменение /etc/ssh/sshd_config --> <rule id="100104" level="12"> <if_sid>550</if_sid> <field name="file">/etc/ssh/sshd_config</field> <description>КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: Изменен файл /etc/ssh/sshd_config</description> <mitre> <id>T1078</id> <id>T1548</id> </mitre> </rule> <!-- Дополнительное правило для whodata: показываем, КТО изменил --> <rule id="100103" level="10"> <if_sid>554</if_sid> <field name="file">/etc/passwd</field> <field name="file">/etc/shadow</field> <field name="file">/etc/sudoers</field> <options>alert_by_email</options> <description>Обнаружен пользователь, изменивший критический файл: $(file) - $(audit.user.name)</description> <mitre> <id>T1078</id> </mitre> </rule> </group>
Пояснение:
-
if_sid>550— базовое событие Syscheck «файл изменён». -
level="12"— критический уровень (от 0 до 15, 12 — очень высокий). -
Поле
fileфильтрует только нужные файлы. -
MITRE ATT&CK — стандартные идентификаторы тактик и техник.
Сохраните файл и перезапустите менеджер:
bash
sudo systemctl restart wazuh-manager
5. Проверка работоспособности (имитация атаки)
Теперь выполним тестовое изменение файла на любом агенте, входящем в группу linux.
5.1. Проверка применения групповой политики на агенте
На агенте выполните:
bash
sudo cat /var/ossec/etc/shared/agent.conf | grep -A5 "syscheck"
Вы должны увидеть теги <directories> для /etc/passwd и других файлов.
5.2. Безопасная имитация изменения
bash
# Создаём резервную копию на всякий случайsudo cp /etc/passwd /etc/passwd.backup.test# Добавляем тестовую учётную запись (это не создаст реального пользователя без home-директории)echo "testuser:x:9999:9999:Test User:/home/testuser:/bin/bash" | sudo tee -a /etc/passwd
5.3. Что произошло в системе?
-
Агент Wazuh через
auditdзафиксировал изменение. -
Событие с уровнем 12 отправилось на менеджер.
-
В веб-интерфейсе Wazuh (или в
/var/ossec/logs/alerts/alerts.json) появится запись вида:
json
{ "rule": { "level": 12, "id": 100100, "description": "КРИТИЧЕСКОЕ ИЗМЕНЕНИЕ: Изменен файл /etc/passwd" }, "syscheck": { "path": "/etc/passwd", "diff": "+testuser:x:9999:9999:Test User:/home/testuser:/bin/bash", "audit": { "user": { "name": "root", "id": "0" }, "process": { "name": "tee", "pid": 12345 } } }}
Вы увидите кто (root), каким процессом (tee) и какие именно строки добавились.
5.4. Откат изменений
Не забудьте удалить тестовую запись:
bash
sudo cp /etc/passwd.backup.test /etc/passwdsudo rm /etc/passwd.backup.test
6. Что дальше? Расширение и автоматизация
Вы создали фундамент для полноценного центра мониторинга безопасности. Теперь можно:
-
Добавить другие критические файлы, например:
-
/etc/hosts.allowи/etc/hosts.deny -
конфигурации сервисов (
/etc/apache2/apache2.conf,/etc/nginx/nginx.conf) -
файлы SSH-ключей (
/root/.ssh/authorized_keys)
-
-
Настроить активные ответы (active response) — автоматически блокировать IP или отключать пользователя, который трижды изменил критический файл за минуту.
-
Интегрировать с Telegram, Slack или почтой через настройку
ossec.confи правила сalert_by_email. -
Добавить мониторинг реестра Windows (если в инфраструктуре есть Windows-серверы).
Заключение
Теперь ваши Linux-серверы получили «датчики движения» и «видеозапись» для самых ценных файлов. Wazuh с настроенным Syscheck и собственными правилами позволяет:
-
Мгновенно узнавать об изменении
/etc/passwd,/etc/shadow,/etc/sudoers,/etc/ssh/sshd_config. -
Видеть, кто именно (UID, имя пользователя) и каким процессом внёс изменения.
-
Получать алерты высокого уровня критичности (12), которые не потеряются среди рутинных событий.
Эта конфигурация — не просто «игрушка», а боевой инструмент, который используют администраторы безопасности по всему миру. Начните с малого — защитите четыре ключевых файла — и постепенно расширяйте мониторинг на всю инфраструктуру. Ваша «крепость» станет намного крепче.
Полезные ссылки:
Если вы только начинаете знакомство с Wazuh, рекомендуем сначала установить менеджера и одного агента по официальной быстрой инструкции, а затем вернуться к этой статье для настройки защиты критических файлов.
ссылка на оригинал статьи https://habr.com/ru/articles/1022388/