# Офлайн-установка Wazuh 4.14 - изолированные сети

> Установка Wazuh 4.14 без интернета - пакеты, локальный репозиторий, генерация сертификатов, установка и обновление в air-gapped сети

Source: https://opennix.org/docs/wazuh/deployment/wazuh-offline-installation/


Офлайн-установка предназначена для развертывания Wazuh 4.14 в изолированных сетях (air-gapped) без доступа в интернет. Все необходимые пакеты, зависимости и скрипты загружаются заранее на хосте с интернетом, переносятся на целевые серверы и устанавливаются из локального хранилища.

## Обзор процедуры

Процесс офлайн-установки состоит из следующих этапов:

1. Загрузка пакетов и зависимостей на хосте с интернетом
2. Перенос файлов на целевые серверы
3. Настройка локального репозитория
4. Генерация TLS-сертификатов
5. Установка компонентов в правильном порядке
6. Проверка работоспособности

## Предварительные требования

### Хост для загрузки (с интернетом)

- Любая Linux-система с доступом в интернет
- Утилиты: `curl`, `tar`, `gpg`
- Минимум 5 ГБ свободного дискового пространства

### Целевые серверы (без интернета)

- 64-битная ОС из [списка поддерживаемых](/docs/wazuh/installation/)
- Минимум 4 ядра CPU и 8 ГБ RAM для all-in-one
- Открытые порты между узлами: 1514, 1515, 9200, 443, 55000
- Способ передачи файлов (USB, SCP через локальную сеть, NFS)

## Загрузка пакетов

### Автоматическая загрузка

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

```bash
curl -sO https://packages.wazuh.com/4.14/wazuh-offline.tar.gz
```

Этот архив содержит:

- Пакеты Wazuh Indexer, Manager, Dashboard для поддерживаемых ОС
- GPG-ключи репозитория
- Конфигурационные файлы
- Скрипт установки

### Ручная загрузка пакетов

Для выборочной загрузки скачайте только нужные пакеты.

Для Debian/Ubuntu:

```bash
mkdir -p wazuh-offline/deb

# Wazuh Indexer
curl -sO https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-indexer/wazuh-indexer_4.14.3-1_amd64.deb \
  -o wazuh-offline/deb/

# Wazuh Manager
curl -sO https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-manager/wazuh-manager_4.14.3-1_amd64.deb \
  -o wazuh-offline/deb/

# Wazuh Dashboard
curl -sO https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-dashboard/wazuh-dashboard_4.14.3-1_amd64.deb \
  -o wazuh-offline/deb/

# Filebeat
curl -sO https://packages.wazuh.com/4.x/apt/pool/main/f/filebeat/filebeat-oss-7.10.2-amd64.deb \
  -o wazuh-offline/deb/
```

Для RHEL/CentOS:

```bash
mkdir -p wazuh-offline/rpm

curl -sO https://packages.wazuh.com/4.x/yum/wazuh-indexer-4.14.3-1.x86_64.rpm \
  -o wazuh-offline/rpm/

curl -sO https://packages.wazuh.com/4.x/yum/wazuh-manager-4.14.3-1.x86_64.rpm \
  -o wazuh-offline/rpm/

curl -sO https://packages.wazuh.com/4.x/yum/wazuh-dashboard-4.14.3-1.x86_64.rpm \
  -o wazuh-offline/rpm/
```

### Загрузка GPG-ключа

```bash
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH -o wazuh-offline/GPG-KEY-WAZUH
```

### Загрузка конфигурации Filebeat

```bash
curl -sO https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.4.tar.gz \
  -o wazuh-offline/wazuh-filebeat-0.4.tar.gz
```

## Перенос на целевые серверы

Упакуйте все загруженные файлы:

```bash
tar czf wazuh-offline-bundle.tar.gz wazuh-offline/
```

Перенесите архив на целевые серверы любым доступным способом:

- **USB-носитель:** скопируйте на USB, перенесите физически
- **SCP по локальной сети:** `scp wazuh-offline-bundle.tar.gz user@target:/tmp/`
- **NFS-монтирование:** скопируйте в общий каталог

На целевом сервере распакуйте архив:

```bash
tar xzf /tmp/wazuh-offline-bundle.tar.gz -C /tmp/
```

## Настройка локального репозитория

### Для Debian/Ubuntu

Создайте локальный APT-репозиторий:

```bash
mkdir -p /var/local/wazuh-repo

cp /tmp/wazuh-offline/deb/*.deb /var/local/wazuh-repo/

cd /var/local/wazuh-repo
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
```

Добавьте репозиторий в APT:

```bash
echo "deb [trusted=yes] file:///var/local/wazuh-repo ./" > /etc/apt/sources.list.d/wazuh-local.list
apt-get update
```

### Для RHEL/CentOS

Создайте локальный YUM-репозиторий:

```bash
mkdir -p /var/local/wazuh-repo

cp /tmp/wazuh-offline/rpm/*.rpm /var/local/wazuh-repo/

createrepo /var/local/wazuh-repo/
```

Если `createrepo` не установлен, установите его заранее или включите в офлайн-пакет:

```bash
yum install createrepo_c
```

Добавьте репозиторий:

```bash
cat > /etc/yum.repos.d/wazuh-local.repo << 'EOF'
[wazuh-local]
name=Wazuh Local Repository
baseurl=file:///var/local/wazuh-repo/
enabled=1
gpgcheck=0
EOF
```

## Генерация сертификатов

### Загрузка скрипта генерации

На хосте с интернетом скачайте скрипт и конфигурацию:

```bash
curl -sO https://packages.wazuh.com/4.14/wazuh-certs-tool.sh
curl -sO https://packages.wazuh.com/4.14/config.yml
```

### Настройка config.yml

Отредактируйте `config.yml`, указав имена и IP-адреса всех узлов:

```yaml
nodes:
  indexer:
    - name: wazuh-indexer-1
      ip: 192.168.1.10
  server:
    - name: wazuh-manager-1
      ip: 192.168.1.20
  dashboard:
    - name: wazuh-dashboard-1
      ip: 192.168.1.30
```

Для многоузловой конфигурации добавьте все узлы:

```yaml
nodes:
  indexer:
    - name: wazuh-indexer-1
      ip: 192.168.1.10
    - name: wazuh-indexer-2
      ip: 192.168.1.11
    - name: wazuh-indexer-3
      ip: 192.168.1.12
  server:
    - name: wazuh-manager-master
      ip: 192.168.1.20
      node_type: master
    - name: wazuh-manager-worker
      ip: 192.168.1.21
      node_type: worker
  dashboard:
    - name: wazuh-dashboard-1
      ip: 192.168.1.30
```

### Генерация сертификатов

```bash
bash wazuh-certs-tool.sh -A
```

Скрипт создаст каталог `wazuh-certificates/` со всеми необходимыми сертификатами. Перенесите его на целевые серверы вместе с пакетами.

### Распределение сертификатов

На каждом целевом сервере скопируйте соответствующие сертификаты:

```bash
# На узле индексатора
mkdir -p /etc/wazuh-indexer/certs
cp wazuh-certificates/root-ca.pem /etc/wazuh-indexer/certs/
cp wazuh-certificates/wazuh-indexer-1.pem /etc/wazuh-indexer/certs/indexer.pem
cp wazuh-certificates/wazuh-indexer-1-key.pem /etc/wazuh-indexer/certs/indexer-key.pem
chmod 400 /etc/wazuh-indexer/certs/*
chown -R wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/certs
```

## Пошаговая установка

Порядок установки компонентов строго определен. Нарушение порядка приведет к ошибкам.

### 1. Установка Wazuh Indexer

```bash
# Debian/Ubuntu
apt-get install wazuh-indexer

# RHEL/CentOS
yum install wazuh-indexer
```

Настройте `/etc/wazuh-indexer/opensearch.yml`:

```yaml
cluster.name: wazuh-cluster
node.name: wazuh-indexer-1
network.host: 0.0.0.0
node.master: true
node.data: true

plugins.security.ssl.transport.pemcert_filepath: /etc/wazuh-indexer/certs/indexer.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/wazuh-indexer/certs/indexer-key.pem
plugins.security.ssl.transport.pemtrustedcas_filepath: /etc/wazuh-indexer/certs/root-ca.pem

plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: /etc/wazuh-indexer/certs/indexer.pem
plugins.security.ssl.http.pemkey_filepath: /etc/wazuh-indexer/certs/indexer-key.pem
plugins.security.ssl.http.pemtrustedcas_filepath: /etc/wazuh-indexer/certs/root-ca.pem
```

Запустите и инициализируйте:

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

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

Проверка:

```bash
curl -sk -u admin:admin https://localhost:9200/_cluster/health?pretty
```

### 2. Установка Wazuh Manager

```bash
# Debian/Ubuntu
apt-get install wazuh-manager

# RHEL/CentOS
yum install wazuh-manager
```

Установите Filebeat:

```bash
# Debian/Ubuntu
dpkg -i /tmp/wazuh-offline/deb/filebeat-oss-*.deb

# RHEL/CentOS
rpm -ivh /tmp/wazuh-offline/rpm/filebeat-oss-*.rpm
```

Настройте Filebeat для отправки данных в индексатор:

```bash
cp /tmp/wazuh-offline/wazuh-filebeat-0.4.tar.gz /tmp/
tar xzf /tmp/wazuh-filebeat-0.4.tar.gz -C /usr/share/filebeat/module/
```

Отредактируйте `/etc/filebeat/filebeat.yml`:

```yaml
output.elasticsearch:
  hosts: ["https://192.168.1.10:9200"]
  username: admin
  password: admin
  ssl.certificate_authorities:
    - /etc/filebeat/certs/root-ca.pem
  ssl.certificate: /etc/filebeat/certs/filebeat.pem
  ssl.key: /etc/filebeat/certs/filebeat-key.pem
```

Запустите сервисы:

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

### 3. Установка Wazuh Dashboard

```bash
# Debian/Ubuntu
apt-get install wazuh-dashboard

# RHEL/CentOS
yum install wazuh-dashboard
```

Настройте `/etc/wazuh-dashboard/opensearch_dashboards.yml`:

```yaml
server.host: 0.0.0.0
server.port: 443
opensearch.hosts: ["https://192.168.1.10:9200"]
opensearch.ssl.certificateAuthorities: ["/etc/wazuh-dashboard/certs/root-ca.pem"]
server.ssl.enabled: true
server.ssl.certificate: "/etc/wazuh-dashboard/certs/dashboard.pem"
server.ssl.key: "/etc/wazuh-dashboard/certs/dashboard-key.pem"
```

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

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

Откройте `https://<IP-адрес>:443` для доступа к дашборду.

## Установка агентов в офлайн-режиме

### Загрузка пакета агента

На хосте с интернетом загрузите пакет для нужной ОС:

```bash
# Linux DEB
curl -sO https://packages.wazuh.com/4.x/apt/pool/main/w/wazuh-agent/wazuh-agent_4.14.3-1_amd64.deb

# Linux RPM
curl -sO https://packages.wazuh.com/4.x/yum/wazuh-agent-4.14.3-1.x86_64.rpm

# Windows
curl -sO https://packages.wazuh.com/4.x/windows/wazuh-agent-4.14.3-1.msi
```

### Установка на целевом хосте

```bash
# Debian/Ubuntu
WAZUH_MANAGER="192.168.1.20" dpkg -i wazuh-agent_4.14.3-1_amd64.deb

# RHEL/CentOS
WAZUH_MANAGER="192.168.1.20" rpm -ivh wazuh-agent-4.14.3-1.x86_64.rpm
```

Запустите агент:

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

## Обновление в офлайн-режиме

### Подготовка обновления

1. На хосте с интернетом загрузите пакеты новой версии
2. Перенесите пакеты на целевые серверы
3. Обновите локальный репозиторий

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

Обновление выполняется в обратном порядке:

1. Агенты
2. Менеджер
3. Индексатор
4. Дашборд

### Обновление компонента

```bash
# Debian/Ubuntu
apt-get install --only-upgrade wazuh-indexer
systemctl restart wazuh-indexer

# RHEL/CentOS
yum update wazuh-indexer
systemctl restart wazuh-indexer
```

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

```bash
curl -sk -u admin:admin \
  -X PUT "https://localhost:9200/_snapshot/backup/pre-upgrade" \
  -H "Content-Type: application/json" \
  -d '{"indices":"wazuh-*"}'
```

## Решение проблем

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

**Симптомы:** ошибка `Unable to locate package` или `No package available`.

**Решение:**

1. Проверьте содержимое репозитория:

```bash
ls -la /var/local/wazuh-repo/
```

2. Для Debian/Ubuntu пересоздайте индекс пакетов:

```bash
cd /var/local/wazuh-repo
dpkg-scanpackages . /dev/null | gzip -9c > Packages.gz
apt-get update
```

3. Для RHEL/CentOS пересоздайте метаданные:

```bash
createrepo --update /var/local/wazuh-repo/
yum clean all && yum makecache
```

### Ошибки сертификатов при подключении компонентов

**Симптомы:** в логах ошибки `ssl_exception`, компоненты не могут установить TLS-соединение.

**Решение:**

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

```bash
openssl x509 -in /etc/wazuh-indexer/certs/root-ca.pem -text -noout | grep Issuer
```

2. Проверьте, что SAN в сертификате соответствует IP-адресу узла:

```bash
openssl x509 -in /etc/wazuh-indexer/certs/indexer.pem -text -noout | grep -A1 "Subject Alternative Name"
```

3. Проверьте права доступа к файлам сертификатов

### Индексатор не запускается

**Симптомы:** сервис wazuh-indexer не стартует, в логах ошибки JVM или файловой системы.

**Решение:**

1. Проверьте `vm.max_map_count`:

```bash
sysctl vm.max_map_count
```

Если значение меньше 262144, увеличьте:

```bash
sysctl -w vm.max_map_count=262144
echo "vm.max_map_count=262144" >> /etc/sysctl.conf
```

2. Проверьте владельца каталога данных:

```bash
chown -R wazuh-indexer:wazuh-indexer /var/lib/wazuh-indexer
```

3. Проверьте логи:

```bash
journalctl -u wazuh-indexer -n 100
```

### Filebeat не отправляет данные в индексатор

**Симптомы:** алерты не появляются в дашборде, хотя менеджер работает.

**Решение:**

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

```bash
systemctl status filebeat
filebeat test output
```

2. Убедитесь, что адрес индексатора в `/etc/filebeat/filebeat.yml` корректен

3. Проверьте подключение вручную:

```bash
curl -sk -u admin:admin https://192.168.1.10:9200
```

## Дополнительные материалы

- [Обзор вариантов развертывания](/docs/wazuh/deployment/)
- [Установка Wazuh - пошаговое руководство](/docs/wazuh/installation/)
- [Быстрый старт Wazuh](/docs/wazuh/installation/wazuh-quickstart/)
- [Развертывание Wazuh через Ansible](/docs/wazuh/deployment/wazuh-ansible-deployment/)

