Резервное копирование Wazuh - защита данных SIEM

Резервное копирование Wazuh охватывает конфигурацию компонентов, пользовательские правила и декодеры, ключи агентов, настройки API и индексированные данные. Потеря любого из этих элементов приводит к необходимости полной переконфигурации платформы или утрате исторических данных об инцидентах. В этом руководстве описаны все критические элементы для резервного копирования, методы создания копий и процедуры восстановления.

Что необходимо копировать

Wazuh Server (менеджер)

ЭлементПутьОписание
Основная конфигурация/var/ossec/etc/ossec.confКонфигурация менеджера
Пользовательские правила/var/ossec/etc/rules/local_rules.xmlПравила обнаружения
Пользовательские декодеры/var/ossec/etc/decoders/local_decoder.xmlДекодеры для парсинга логов
Списки CDB/var/ossec/etc/lists/Списки IoC и справочные таблицы
Общая конфигурация агентов/var/ossec/etc/shared/Централизованная конфигурация групп агентов
Ключи агентов/var/ossec/etc/client.keysКлючи аутентификации агентов
Конфигурация API/var/ossec/api/configuration/Настройки RESTful API
SSL-сертификаты/var/ossec/etc/sslmanager.*Сертификаты для связи с агентами
Хранилище ключей/var/ossec/etc/keystore/Сохраненные учетные данные
Активное реагирование/var/ossec/active-response/bin/Пользовательские скрипты реагирования
Интеграции/var/ossec/integrations/Пользовательские скрипты интеграций

Wazuh Indexer

ЭлементПутьОписание
Конфигурация/etc/wazuh-indexer/opensearch.ymlОсновная конфигурация
JVM-настройки/etc/wazuh-indexer/jvm.optionsПараметры JVM
Конфигурация безопасности/etc/wazuh-indexer/opensearch-security/Роли, пользователи, настройки безопасности
SSL-сертификаты/etc/wazuh-indexer/*.pemTLS-сертификаты
Данные индексов/var/lib/wazuh-indexer/Индексированные данные (алерты, события)

Wazuh Dashboard

ЭлементПутьОписание
Конфигурация/etc/wazuh-dashboard/opensearch_dashboards.ymlОсновная конфигурация
SSL-сертификаты/etc/wazuh-dashboard/*.pemTLS-сертификаты
Конфигурация плагина/usr/share/wazuh-dashboard/data/wazuh/config/wazuh.ymlНастройки плагина Wazuh

Filebeat

ЭлементПутьОписание
Конфигурация/etc/filebeat/filebeat.ymlОсновная конфигурация
Шаблон индекса/etc/filebeat/wazuh-template.jsonШаблон Wazuh для индексатора
SSL-сертификаты/etc/filebeat/*.pemTLS-сертификаты

Методы резервного копирования

Резервное копирование файловой системы

Наиболее простой метод - копирование критических файлов и каталогов.

Полный бэкап конфигурации менеджера:

#!/bin/bash
BACKUP_DIR="/backup/wazuh/$(date +%Y%m%d_%H%M%S)"
mkdir -p "$BACKUP_DIR"

# Менеджер
tar czf "$BACKUP_DIR/manager-config.tar.gz" \
  /var/ossec/etc/ossec.conf \
  /var/ossec/etc/rules/ \
  /var/ossec/etc/decoders/ \
  /var/ossec/etc/lists/ \
  /var/ossec/etc/shared/ \
  /var/ossec/etc/client.keys \
  /var/ossec/etc/sslmanager.* \
  /var/ossec/etc/keystore/ \
  /var/ossec/api/configuration/ \
  /var/ossec/active-response/bin/ \
  /var/ossec/integrations/ \
  2>/dev/null

# Индексатор
tar czf "$BACKUP_DIR/indexer-config.tar.gz" \
  /etc/wazuh-indexer/opensearch.yml \
  /etc/wazuh-indexer/jvm.options \
  /etc/wazuh-indexer/opensearch-security/ \
  /etc/wazuh-indexer/*.pem \
  2>/dev/null

# Dashboard
tar czf "$BACKUP_DIR/dashboard-config.tar.gz" \
  /etc/wazuh-dashboard/opensearch_dashboards.yml \
  /etc/wazuh-dashboard/*.pem \
  /usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml \
  2>/dev/null

# Filebeat
tar czf "$BACKUP_DIR/filebeat-config.tar.gz" \
  /etc/filebeat/filebeat.yml \
  /etc/filebeat/wazuh-template.json \
  /etc/filebeat/*.pem \
  2>/dev/null

echo "Backup completed: $BACKUP_DIR"
ls -lh "$BACKUP_DIR"

Снимки индексов (Snapshots)

Для резервного копирования индексированных данных (алерты, события) используйте механизм снимков OpenSearch. Этот метод значительно эффективнее копирования файлов данных и поддерживает инкрементальные снимки.

Настройка репозитория снимков:

  1. Определите путь к репозиторию в конфигурации индексатора (/etc/wazuh-indexer/opensearch.yml):
path.repo: ["/mnt/snapshots"]
  1. Создайте каталог и установите права:
mkdir -p /mnt/snapshots
chown wazuh-indexer:wazuh-indexer /mnt/snapshots
  1. Перезапустите индексатор:
systemctl restart wazuh-indexer
  1. Зарегистрируйте репозиторий:
curl -sk -u admin:<PASSWORD> \
  -X PUT "https://localhost:9200/_snapshot/wazuh_backup" \
  -H "Content-Type: application/json" \
  -d '{
    "type": "fs",
    "settings": {
      "location": "/mnt/snapshots",
      "compress": true
    }
  }'

Создание снимка:

# Снимок всех индексов Wazuh
curl -sk -u admin:<PASSWORD> \
  -X PUT "https://localhost:9200/_snapshot/wazuh_backup/snapshot_$(date +%Y%m%d)" \
  -H "Content-Type: application/json" \
  -d '{
    "indices": "wazuh-alerts-*,wazuh-archives-*,wazuh-monitoring-*,wazuh-statistics-*",
    "ignore_unavailable": true,
    "include_global_state": false
  }'

Проверка статуса снимка:

curl -sk -u admin:<PASSWORD> \
  "https://localhost:9200/_snapshot/wazuh_backup/snapshot_$(date +%Y%m%d)?pretty"

Список доступных снимков:

curl -sk -u admin:<PASSWORD> \
  "https://localhost:9200/_snapshot/wazuh_backup/_all?pretty"

Резервное копирование через API

Wazuh API позволяет экспортировать конфигурацию и данные программно.

Экспорт списка агентов:

TOKEN=$(curl -sk -u wazuh-wui:<PASSWORD> \
  -X POST "https://localhost:55000/security/user/authenticate?raw=true")

curl -sk -H "Authorization: Bearer $TOKEN" \
  "https://localhost:55000/agents?limit=500" \
  | jq '.data.affected_items' > /backup/wazuh/agents.json

Экспорт конфигурации групп:

curl -sk -H "Authorization: Bearer $TOKEN" \
  "https://localhost:55000/groups" \
  | jq '.data.affected_items' > /backup/wazuh/groups.json

Экспорт пользовательских правил:

curl -sk -H "Authorization: Bearer $TOKEN" \
  "https://localhost:55000/rules/files?status=custom" \
  | jq '.data.affected_items' > /backup/wazuh/custom-rules.json

Восстановление из резервных копий

Восстановление конфигурации менеджера

  1. Остановите сервис менеджера:
systemctl stop wazuh-manager
  1. Распакуйте резервную копию:
tar xzf /backup/wazuh/20250101_120000/manager-config.tar.gz -C /
  1. Проверьте конфигурацию:
/var/ossec/bin/wazuh-control config-test
  1. Запустите сервис:
systemctl start wazuh-manager

Восстановление индексов из снимка

  1. Закройте целевой индекс (если он существует):
curl -sk -u admin:<PASSWORD> \
  -X POST "https://localhost:9200/wazuh-alerts-4.x-2025.01.01/_close"
  1. Восстановите снимок:
curl -sk -u admin:<PASSWORD> \
  -X POST "https://localhost:9200/_snapshot/wazuh_backup/snapshot_20250101/_restore" \
  -H "Content-Type: application/json" \
  -d '{
    "indices": "wazuh-alerts-*",
    "ignore_unavailable": true,
    "include_global_state": false
  }'
  1. Проверьте статус восстановления:
curl -sk -u admin:<PASSWORD> \
  "https://localhost:9200/_cat/recovery?v&active_only=true"

Восстановление конфигурации индексатора

  1. Остановите сервис:
systemctl stop wazuh-indexer
  1. Распакуйте конфигурацию:
tar xzf /backup/wazuh/20250101_120000/indexer-config.tar.gz -C /
  1. Восстановите конфигурацию безопасности:
systemctl start wazuh-indexer
/usr/share/wazuh-indexer/bin/indexer-security-init.sh

План аварийного восстановления

При полной потере сервера Wazuh выполните следующие шаги:

  1. Установите все компоненты Wazuh с нуля (см. установка )
  2. Остановите все сервисы
  3. Восстановите конфигурацию из резервных копий (менеджер, индексатор, Dashboard, Filebeat)
  4. Запустите компоненты в штатном порядке: индексатор, менеджер, Filebeat, Dashboard
  5. Восстановите данные индексов из снимков
  6. Проверьте подключение агентов - при восстановлении client.keys агенты подключатся автоматически

Для восстановления в другом окружении (другой IP-адрес):

  • Обновите IP-адреса в конфигурации каждого компонента
  • Переоформите SSL-сертификаты при необходимости
  • Обновите конфигурацию агентов с новым адресом менеджера

Автоматизация резервного копирования

Скрипт ежедневного резервного копирования

Создайте скрипт /usr/local/bin/wazuh-backup.sh:

#!/bin/bash
set -euo pipefail

BACKUP_BASE="/backup/wazuh"
RETENTION_DAYS=30
DATE=$(date +%Y%m%d_%H%M%S)
BACKUP_DIR="$BACKUP_BASE/$DATE"
ADMIN_PASS="<PASSWORD>"

mkdir -p "$BACKUP_DIR"

# Конфигурация менеджера
tar czf "$BACKUP_DIR/manager-config.tar.gz" \
  /var/ossec/etc/ossec.conf \
  /var/ossec/etc/rules/ \
  /var/ossec/etc/decoders/ \
  /var/ossec/etc/lists/ \
  /var/ossec/etc/shared/ \
  /var/ossec/etc/client.keys \
  /var/ossec/etc/sslmanager.* \
  /var/ossec/api/configuration/ \
  2>/dev/null || true

# Конфигурация индексатора
tar czf "$BACKUP_DIR/indexer-config.tar.gz" \
  /etc/wazuh-indexer/opensearch.yml \
  /etc/wazuh-indexer/jvm.options \
  /etc/wazuh-indexer/opensearch-security/ \
  2>/dev/null || true

# Снимок индексов
curl -sk -u admin:"$ADMIN_PASS" \
  -X PUT "https://localhost:9200/_snapshot/wazuh_backup/snapshot_$DATE" \
  -H "Content-Type: application/json" \
  -d '{
    "indices": "wazuh-alerts-*,wazuh-archives-*",
    "ignore_unavailable": true,
    "include_global_state": false
  }' > /dev/null 2>&1

# Удаление старых резервных копий
find "$BACKUP_BASE" -maxdepth 1 -type d -mtime +$RETENTION_DAYS -exec rm -rf {} \;

# Удаление старых снимков
for snap in $(curl -sk -u admin:"$ADMIN_PASS" \
  "https://localhost:9200/_snapshot/wazuh_backup/_all" \
  | jq -r '.snapshots[] | select(.start_time < "'$(date -d "-${RETENTION_DAYS} days" +%Y-%m-%dT%H:%M:%S)'") | .snapshot'); do
  curl -sk -u admin:"$ADMIN_PASS" \
    -X DELETE "https://localhost:9200/_snapshot/wazuh_backup/$snap" > /dev/null 2>&1
done

echo "$(date): Backup completed successfully" >> /var/log/wazuh-backup.log

Настройка cron

chmod +x /usr/local/bin/wazuh-backup.sh

# Ежедневное резервное копирование в 02:00
echo "0 2 * * * root /usr/local/bin/wazuh-backup.sh" > /etc/cron.d/wazuh-backup

Устранение проблем

Снимок не создается

Проверьте регистрацию репозитория:

curl -sk -u admin:<PASSWORD> \
  "https://localhost:9200/_snapshot/wazuh_backup?pretty"

Убедитесь, что каталог снимков существует и доступен для записи пользователем wazuh-indexer.

Восстановление из снимка завершается ошибкой

Типичная причина - индекс с таким именем уже открыт. Закройте или удалите существующий индекс перед восстановлением:

curl -sk -u admin:<PASSWORD> \
  -X POST "https://localhost:9200/wazuh-alerts-4.x-2025.01.01/_close"

Агенты не подключаются после восстановления

Проверьте, что файл client.keys восстановлен корректно и содержит записи для всех агентов:

wc -l /var/ossec/etc/client.keys

При необходимости повторно зарегистрируйте агенты через API управления агентами .

Связанные разделы

Last updated on