# Обновление Wazuh 4.14 - пошаговое руководство

> Процедура обновления Wazuh до версии 4.14 - порядок обновления компонентов, матрица совместимости, откат и устранение проблем при обновлении

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


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

## Матрица совместимости версий

Все центральные компоненты Wazuh должны иметь одинаковую версию, включая номер патча. Несоответствие версий приводит к ошибкам взаимодействия между компонентами.

| Компонент | Совместимые версии | Зависимости |
|---|---|---|
| Wazuh Indexer | Должен совпадать с Server и Dashboard | Filebeat-OSS 7.10.2 |
| Wazuh Server | Должен совпадать с Indexer и Dashboard | Filebeat-OSS 7.10.2 |
| Wazuh Dashboard | Должен совпадать с Indexer и Server | - |
| Wazuh Agent | Версия менеджера >= версии агента | - |

### Совместимость версий агентов

Wazuh Agent совместим с Wazuh Server той же или более новой версии. Допускается ситуация, когда сервер обновлен до 4.14, а агенты работают на версии 4.9 и выше. Обратная ситуация (агент новее сервера) не поддерживается.

## Порядок обновления

Обновление компонентов выполняется строго в следующем порядке:

1. **Wazuh Indexer** - хранилище данных обновляется первым
2. **Wazuh Server** (менеджер + Filebeat) - сервер обработки событий
3. **Wazuh Dashboard** - веб-интерфейс
4. **Wazuh Agent** - агенты на конечных точках (после центральных компонентов)

Нарушение порядка может привести к потере данных или неработоспособности платформы.

## Предварительная подготовка

### Контрольный список перед обновлением

Перед началом обновления выполните следующие проверки:

- [ ] Создана [резервная копия](/docs/wazuh/operations/wazuh-backup/) конфигурации и данных всех компонентов
- [ ] Зафиксированы текущие версии всех компонентов
- [ ] Проверена доступность репозиториев Wazuh или подготовлены пакеты для автономной установки
- [ ] Запланировано окно обслуживания (обновление центральных компонентов требует остановки сервисов)
- [ ] Экспортированы пользовательские объекты Dashboard (визуализации, дашборды, поисковые запросы)
- [ ] Проверено состояние кластера индексатора (все узлы в статусе `green`)
- [ ] Записаны идентификаторы ML Commons моделей и агентов (при использовании AI-интеграций)

### Проверка текущих версий

```bash
# Версии пакетов (RPM)
rpm -qa | grep wazuh

# Версии пакетов (DEB)
dpkg -l | grep wazuh

# Версия менеджера через API
curl -sk -u wazuh-wui:<PASSWORD> \
  -X POST "https://localhost:55000/security/user/authenticate?raw=true" \
  | xargs -I {} curl -sk -H "Authorization: Bearer {}" \
  "https://localhost:55000/manager/info" | jq '.data.affected_items[0].version'

# Состояние кластера индексатора
curl -sk -u admin:<PASSWORD> \
  "https://localhost:9200/_cluster/health?pretty"
```

### Экспорт объектов Dashboard

Перед обновлением Dashboard сохраните пользовательские объекты:

1. Откройте Wazuh Dashboard
2. Перейдите в **Stack Management** > **Saved Objects**
3. Выберите все объекты и нажмите **Export**
4. Сохраните файл экспорта в безопасном месте

### Добавление репозитория Wazuh

Для обновления необходим доступ к репозиторию Wazuh. Если репозиторий был отключен после установки, активируйте его:

**RPM-дистрибутивы (CentOS, RHEL, Amazon Linux):**

```bash
sed -i "s/^enabled=0/enabled=1/" /etc/yum.repos.d/wazuh.repo
```

**DEB-дистрибутивы (Ubuntu, Debian):**

```bash
sed -i "s/^#deb /deb /" /etc/apt/sources.list.d/wazuh.list
apt-get update
```

## Обновление Wazuh Indexer

Wazuh Indexer обновляется первым. В многоузловом кластере узлы обновляются по одному, узел `cluster_manager` обновляется последним.

### Подготовка кластера

1. Создайте резервную копию конфигурации безопасности:

```bash
/usr/share/wazuh-indexer/bin/indexer-security-init.sh \
  --options "-backup /etc/wazuh-indexer/opensearch-security -icl -nhnv"
```

2. Отключите перераспределение шардов для предотвращения избыточной нагрузки во время обновления:

```bash
curl -sk -u admin:<PASSWORD> \
  -X PUT "https://localhost:9200/_cluster/settings" \
  -H "Content-Type: application/json" \
  -d '{
    "persistent": {
      "cluster.routing.allocation.enable": "primaries"
    }
  }'
```

3. Выполните сброс транзакционного лога:

```bash
curl -sk -u admin:<PASSWORD> \
  -X POST "https://localhost:9200/_flush"
```

4. Остановите Filebeat и Dashboard:

```bash
systemctl stop filebeat
systemctl stop wazuh-dashboard
```

### Обновление узла индексатора

Выполните следующие шаги для каждого узла (в многоузловом кластере - по одному):

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

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

2. Сохраните текущие настройки JVM:

```bash
cp /etc/wazuh-indexer/jvm.options /etc/wazuh-indexer/jvm.options.bak
```

3. Обновите пакет:

```bash
# RPM
yum upgrade wazuh-indexer

# DEB
apt-get install wazuh-indexer
```

4. Восстановите пользовательские настройки JVM (размер heap и другие параметры):

```bash
# Сравните файлы и перенесите пользовательские настройки
diff /etc/wazuh-indexer/jvm.options /etc/wazuh-indexer/jvm.options.bak
```

5. Перезапустите сервис:

```bash
systemctl daemon-reload
systemctl enable wazuh-indexer
systemctl start wazuh-indexer
```

6. Дождитесь присоединения узла к кластеру (30-60 секунд) и проверьте его статус:

```bash
curl -sk -u admin:<PASSWORD> \
  "https://localhost:9200/_cat/nodes?v"
```

### Завершение обновления индексатора

После обновления всех узлов:

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

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

2. Включите перераспределение шардов:

```bash
curl -sk -u admin:<PASSWORD> \
  -X PUT "https://localhost:9200/_cluster/settings" \
  -H "Content-Type: application/json" \
  -d '{
    "persistent": {
      "cluster.routing.allocation.enable": "all"
    }
  }'
```

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

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

Кластер должен вернуться в статус `green`. Если статус `yellow` - дождитесь завершения перераспределения шардов.

## Обновление Wazuh Server

Wazuh Server обновляется после индексатора. В кластерной конфигурации обновите сначала рабочие узлы (workers), затем главный узел (master).

### Обновление менеджера

1. Обновите пакет:

```bash
# RPM
yum upgrade wazuh-manager

# DEB
apt-get install wazuh-manager
```

Модифицированный файл `/var/ossec/etc/ossec.conf` не перезаписывается при обновлении. Новые параметры конфигурации необходимо добавить вручную.

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

```bash
systemctl daemon-reload
systemctl enable wazuh-manager
systemctl start wazuh-manager
```

3. Проверьте статус:

```bash
systemctl status wazuh-manager
```

### Дополнительные настройки при обновлении с ранних версий

**При обновлении с версии 4.12.x и ранее** добавьте списки CDB для обнаружения IoC в `/var/ossec/etc/ossec.conf`:

```xml
<ruleset>
  <list>etc/lists/audit-keys</list>
  <list>etc/lists/amazon/aws-eventnames</list>
  <list>etc/lists/security-eventchannel</list>
  <list>etc/lists/malicious-ioc-md5</list>
  <list>etc/lists/malicious-ioc-sha1</list>
  <list>etc/lists/malicious-ioc-sha256</list>
</ruleset>
```

**При обновлении с версии 4.7.x и ранее** настройте модуль обнаружения уязвимостей и коннектор индексатора:

```xml
<vulnerability-detection>
  <enabled>yes</enabled>
  <index-status>yes</index-status>
  <feed-update-interval>60m</feed-update-interval>
</vulnerability-detection>

<indexer>
  <enabled>yes</enabled>
  <hosts>
    <host>https://INDEXER_IP:9200</host>
  </hosts>
</indexer>
```

Сохраните учетные данные в хранилище ключей:

```bash
echo '<USERNAME>' | /var/ossec/bin/wazuh-keystore -f indexer -k username
echo '<PASSWORD>' | /var/ossec/bin/wazuh-keystore -f indexer -k password
systemctl restart wazuh-manager
```

### Обновление Filebeat

1. Загрузите обновленный модуль Wazuh для Filebeat:

```bash
curl -s https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.5.tar.gz \
  | tar -xvz -C /usr/share/filebeat/module
```

2. Загрузите обновленный шаблон индекса:

```bash
curl -so /etc/filebeat/wazuh-template.json \
  https://raw.githubusercontent.com/wazuh/wazuh/v4.14.4/extensions/elasticsearch/7.x/wazuh-template.json
```

3. Обновите пакет Filebeat:

```bash
# RPM
yum upgrade filebeat

# DEB
apt-get install filebeat
```

4. Перезапустите Filebeat и примените настройки:

```bash
systemctl daemon-reload
systemctl enable filebeat
systemctl start filebeat

filebeat setup --pipelines
filebeat setup --index-management
```

5. Проверьте подключение Filebeat к индексатору:

```bash
filebeat test output
```

## Обновление Wazuh Dashboard

Dashboard обновляется после сервера и индексатора.

1. Сохраните текущую конфигурацию:

```bash
cp /etc/wazuh-dashboard/opensearch_dashboards.yml \
   /etc/wazuh-dashboard/opensearch_dashboards.yml.bak
```

2. Обновите пакет:

```bash
# RPM
yum upgrade wazuh-dashboard

# DEB
apt-get install wazuh-dashboard
```

3. Проверьте пути к SSL-сертификатам в конфигурации:

```bash
grep -E "server.ssl.(key|certificate)" /etc/wazuh-dashboard/opensearch_dashboards.yml
```

Убедитесь, что пути к сертификатам корректны и файлы существуют.

4. При обновлении с версии 4.7 и ранее добавьте маршрут по умолчанию:

```yaml
uiSettings.overrides.defaultRoute: /app/wz-home
```

5. Перезапустите Dashboard:

```bash
systemctl daemon-reload
systemctl enable wazuh-dashboard
systemctl start wazuh-dashboard
```

6. Импортируйте сохраненные объекты через **Stack Management** > **Saved Objects** > **Import**.

## Обновление агентов Wazuh

Агенты обновляются после центральных компонентов. Wazuh поддерживает два метода обновления.

### Удаленное обновление

Удаленное обновление выполняется через утилиту `agent_upgrade` или API:

```bash
# Обновление конкретного агента
/var/ossec/bin/agent_upgrade -a 001

# Обновление всех агентов
/var/ossec/bin/agent_upgrade -a all
```

Через 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" \
  -X PUT "https://localhost:55000/agents/upgrade?agents_list=001"
```

### Локальное обновление

**Linux (RPM):**

```bash
yum upgrade wazuh-agent
systemctl restart wazuh-agent
```

**Linux (DEB):**

```bash
apt-get install wazuh-agent
systemctl restart wazuh-agent
```

**Windows:**

Загрузите MSI-инсталлятор с [packages.wazuh.com](https://packages.wazuh.com/4.x/windows/) и выполните установку поверх текущей версии. Настройки агента сохраняются.

**macOS:**

```bash
curl -so wazuh-agent.pkg \
  https://packages.wazuh.com/4.x/macos/wazuh-agent-4.14.4-1.arm64.pkg
sudo installer -pkg wazuh-agent.pkg -target /
sudo /Library/Ossec/bin/wazuh-control restart
```

## Проверка после обновления

После обновления всех компонентов выполните следующие проверки:

```bash
# Версии установленных пакетов
rpm -qa | grep wazuh   # или dpkg -l | grep wazuh

# Состояние сервисов
systemctl status wazuh-indexer
systemctl status wazuh-manager
systemctl status filebeat
systemctl status wazuh-dashboard

# Кластер индексатора
curl -sk -u admin:<PASSWORD> \
  "https://localhost:9200/_cluster/health?pretty"

# Подключенные агенты
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?status=active&limit=5" \
  | jq '.data.affected_items[] | {id, name, version, status}'
```

## Отключение репозиториев после обновления

Для предотвращения случайных обновлений отключите репозитории:

```bash
# RPM
sed -i "s/^enabled=1/enabled=0/" /etc/yum.repos.d/wazuh.repo

# DEB
sed -i "s/^deb /#deb /" /etc/apt/sources.list.d/wazuh.list
apt-get update
```

## Откат при сбое обновления

Откат на версию 4.11 и ранее невозможен из-за изменений в формате данных Apache Lucene. Для защиты от потери данных:

1. Перед обновлением создайте [снимок индексов](/docs/wazuh/operations/wazuh-backup/)
2. Сохраните резервные копии конфигурации всех компонентов
3. В случае сбоя обновления одного компонента - не продолжайте обновление следующих
4. Восстановите компонент из пакета предыдущей версии и резервной копии конфигурации

Для отката в пределах линейки 4.12+:

```bash
# Остановите сервис
systemctl stop wazuh-indexer  # или wazuh-manager, wazuh-dashboard

# Установите предыдущую версию
yum downgrade wazuh-indexer-4.13.4-1
# или
apt-get install wazuh-indexer=4.13.4-1

# Восстановите конфигурацию из резервной копии
cp /backup/jvm.options /etc/wazuh-indexer/jvm.options

# Запустите сервис
systemctl start wazuh-indexer
```

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

### Индексатор не запускается после обновления

Проверьте журналы:

```bash
journalctl -u wazuh-indexer -n 50
cat /var/log/wazuh-indexer/wazuh-indexer.log
```

Типичные причины:

- Несовместимые настройки JVM (восстановите из резервной копии)
- Недостаточно дискового пространства для миграции индексов
- Некорректные права доступа к файлам данных

### Filebeat не подключается к индексатору

```bash
filebeat test output
```

Убедитесь, что SSL-сертификаты соответствуют обновленной версии и пути в конфигурации корректны.

### Dashboard показывает ошибку после обновления

Очистите кэш браузера и перезапустите Dashboard:

```bash
systemctl restart wazuh-dashboard
```

Если ошибка сохраняется, проверьте пути к сертификатам в `/etc/wazuh-dashboard/opensearch_dashboards.yml`.

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

Убедитесь, что версия агента не превышает версию сервера. Проверьте журнал менеджера:

```bash
tail -f /var/ossec/logs/ossec.log | grep -i error
```

Подробнее о диагностике проблем с подключением агентов см. в разделе [устранение неполадок](/docs/wazuh/operations/wazuh-troubleshooting/).

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

- [Резервное копирование Wazuh](/docs/wazuh/operations/wazuh-backup/) - создание резервных копий перед обновлением
- [Устранение неполадок](/docs/wazuh/operations/wazuh-troubleshooting/) - диагностика типичных проблем
- [Установка Wazuh](/docs/wazuh/installation/) - первоначальное развертывание

