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

> Резервное копирование Wazuh 4.14 - бэкап конфигурации, правил, декодеров, ключей агентов, данных индексатора, восстановление и автоматизация

Source: https://opennix.org/docs/wazuh/operations/wazuh-backup/


Резервное копирование 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/*.pem` | TLS-сертификаты |
| Данные индексов | `/var/lib/wazuh-indexer/` | Индексированные данные (алерты, события) |

### Wazuh Dashboard

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

### Filebeat

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

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

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

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

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

```bash
#!/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`):

```yaml
path.repo: ["/mnt/snapshots"]
```

2. Создайте каталог и установите права:

```bash
mkdir -p /mnt/snapshots
chown wazuh-indexer:wazuh-indexer /mnt/snapshots
```

3. Перезапустите индексатор:

```bash
systemctl restart wazuh-indexer
```

4. Зарегистрируйте репозиторий:

```bash
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
    }
  }'
```

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

```bash
# Снимок всех индексов 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
  }'
```

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

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

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

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

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

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

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

```bash
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
```

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

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

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

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

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

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

1. Остановите сервис менеджера:

```bash
systemctl stop wazuh-manager
```

2. Распакуйте резервную копию:

```bash
tar xzf /backup/wazuh/20250101_120000/manager-config.tar.gz -C /
```

3. Проверьте конфигурацию:

```bash
/var/ossec/bin/wazuh-control config-test
```

4. Запустите сервис:

```bash
systemctl start wazuh-manager
```

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

1. Закройте целевой индекс (если он существует):

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

2. Восстановите снимок:

```bash
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
  }'
```

3. Проверьте статус восстановления:

```bash
curl -sk -u admin:<PASSWORD> \
  "https://localhost:9200/_cat/recovery?v&active_only=true"
```

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

1. Остановите сервис:

```bash
systemctl stop wazuh-indexer
```

2. Распакуйте конфигурацию:

```bash
tar xzf /backup/wazuh/20250101_120000/indexer-config.tar.gz -C /
```

3. Восстановите конфигурацию безопасности:

```bash
systemctl start wazuh-indexer
/usr/share/wazuh-indexer/bin/indexer-security-init.sh
```

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

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

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

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

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

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

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

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

```bash
#!/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

```bash
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
```

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

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

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

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

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

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

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

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

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

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

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

При необходимости повторно зарегистрируйте агенты через [API управления агентами](/docs/wazuh/infrastructure/wazuh-agent-management/).

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

- [Обновление Wazuh](/docs/wazuh/operations/wazuh-upgrade/) - создание бэкапа перед обновлением
- [Устранение неполадок](/docs/wazuh/operations/wazuh-troubleshooting/) - диагностика проблем после восстановления
- [Кластер индексатора](/docs/wazuh/infrastructure/wazuh-indexer-cluster/) - снимки в кластерной конфигурации

