Защита критических файлов Linux с помощью Wazuh: пошаговое руководство по настройке мониторинга и сигнализации

от автора

Представьте, что ваш сервер — это средневековая крепость. У неё есть несколько ключевых элементов, от которых зависит безопасность всех обитателей:

  • Ворота (/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. Что дальше? Расширение и автоматизация

Вы создали фундамент для полноценного центра мониторинга безопасности. Теперь можно:

  1. Добавить другие критические файлы, например:

    • /etc/hosts.allow и /etc/hosts.deny

    • конфигурации сервисов (/etc/apache2/apache2.conf/etc/nginx/nginx.conf)

    • файлы SSH-ключей (/root/.ssh/authorized_keys)

  2. Настроить активные ответы (active response) — автоматически блокировать IP или отключать пользователя, который трижды изменил критический файл за минуту.

  3. Интегрировать с Telegram, Slack или почтой через настройку ossec.conf и правила с alert_by_email.

  4. Добавить мониторинг реестра Windows (если в инфраструктуре есть Windows-серверы).


Заключение

Теперь ваши Linux-серверы получили «датчики движения» и «видеозапись» для самых ценных файлов. Wazuh с настроенным Syscheck и собственными правилами позволяет:

  • Мгновенно узнавать об изменении /etc/passwd/etc/shadow/etc/sudoers/etc/ssh/sshd_config.

  • Видеть, кто именно (UID, имя пользователя) и каким процессом внёс изменения.

  • Получать алерты высокого уровня критичности (12), которые не потеряются среди рутинных событий.

Эта конфигурация — не просто «игрушка», а боевой инструмент, который используют администраторы безопасности по всему миру. Начните с малого — защитите четыре ключевых файла — и постепенно расширяйте мониторинг на всю инфраструктуру. Ваша «крепость» станет намного крепче.


Полезные ссылки:

Если вы только начинаете знакомство с Wazuh, рекомендуем сначала установить менеджера и одного агента по официальной быстрой инструкции, а затем вернуться к этой статье для настройки защиты критических файлов.

ссылка на оригинал статьи https://habr.com/ru/articles/1022388/