Розгортання Wazuh SIEM на VPS: комплексний моніторинг безпеки та виявлення загроз
TL;DR
У цьому детальному посібнику ми крок за кроком налаштуємо Wazuh SIEM (Security Information and Event Management) на вашому власному VPS. Ви отримаєте потужну платформу для збору, аналізу та кореляції логів безпеки, виявлення вторгнень, моніторингу цілісності файлів та оцінки вразливостей. Це дозволить вам значно підвищити рівень безпеки ваших серверів та застосунків, забезпечуючи проактивний захист від кіберзагроз.
- Встановлення та налаштування всіх компонентів Wazuh: Manager, Indexer (OpenSearch) та Dashboard (OpenSearch Dashboards).
- Базова підготовка сервера, включно з налаштуванням SSH, фаєрволу та оновлення системи.
- Приклади конфігурації для забезпечення безпечного доступу через HTTPS за допомогою Certbot та Nginx.
- Рекомендації щодо вибору відповідного VPS-конфігу та масштабування.
- Стратегії резервного копіювання та обслуговування для довгострокової стабільності системи.
- Відповіді на поширені запитання та вирішення типових проблем.
Що ми налаштовуємо і навіщо
Ми будемо розгортати Wazuh — це безкоштовна та відкрита платформа для моніторингу безпеки, яка об'єднує в собі функціональність SIEM, XDR (Extended Detection and Response) та SOAR (Security Orchestration, Automation and Response). Wazuh дозволяє збирати, індексувати та аналізувати дані безпеки з різних джерел, таких як логи операційних систем, застосунків, мережевих пристроїв, а також дані про події безпеки в реальному часі. В основі Wazuh лежить потужний рушій для виявлення загроз, моніторингу цілісності файлів, аналізу вразливостей, реагування на інциденти та відповідності стандартам.
У підсумку ви отримаєте централізовану систему, яка стежитиме за безпекою вашого VPS або навіть цілої інфраструктури. Wazuh допоможе вам:
- Виявляти вторгнення: виявляти підозрілу активність, спроби брутфорсу, аномалії в поведінці користувачів та процесів.
- Моніторити цілісність файлів: відстежувати несанкціоновані зміни в критично важливих системних файлах та конфігураціях.
- Оцінювати вразливості: сканувати встановлене ПЗ на наявність відомих вразливостей (CVE).
- Збирати та аналізувати логи: централізувати логи з усіх ваших систем для зручного пошуку, аналізу та аудиту.
- Реагувати на інциденти: автоматично виконувати дії у відповідь на виявлені загрози, наприклад, блокувати IP-адреси.
- Відповідати стандартам: спростити процес аудиту та відповідності таким стандартам, як PCI DSS, GDPR, HIPAA.
Існують різні підходи до розгортання SIEM-систем. Ви можете обрати хмарні керовані рішення (наприклад, Splunk Cloud, Azure Sentinel) або самостійне розгортання (self-hosted). Хмарні рішення пропонують зручність та масштабованість без необхідності керування інфраструктурою, але часто пов'язані з високими витратами та меншим контролем над даними. Самостійне розгортання Wazuh на VPS, навпаки, надає повний контроль над вашими даними та інфраструктурою, значно знижує операційні витрати та дозволяє глибоко кастомізувати систему під ваші унікальні вимоги. Це ідеальний варіант для власників VPS/dedicated серверів, які хочуть побудувати надійну систему безпеки з мінімальними вкладеннями та максимальною гнучкістю.
Який VPS-конфіг потрібен для цього завдання
Вибір відповідного VPS-конфігу для Wazuh є критично важливим, оскільки система може бути досить вимогливою до ресурсів, особливо Indexer (OpenSearch), який зберігає та індексує всі логи. Вимоги сильно залежать від обсягу генерованих логів та кількості контрольованих агентів.
Мінімальні вимоги для одного VPS (Wazuh Manager, Indexer, Dashboard на одній машині) для невеликих середовищ (до 20-30 агентів)
- CPU: 4 vCPU (віртуальних ядер). Це забезпечить достатню продуктивність для індексації та обробки подій.
- RAM: 8-12 GB RAM. OpenSearch є основним споживачем пам'яті; йому знадобиться не менше 4-6 GB для стабільної роботи, решта — для Wazuh Manager та операційної системи.
- Диск: 100-200 GB NVMe SSD. Швидкість диска критична для OpenSearch. Обсяг залежить від терміну зберігання логів. NVMe SSD значно перевершує звичайні SSD за продуктивністю.
- Мережа: 1 Гбіт/с. Для передачі логів та доступу до дашборду.
Конкретний VPS-план для завдання (для 30-50 агентів)
Для більш активного використання, моніторингу 30-50 агентів та зберігання логів за кілька тижнів, рекомендуємо наступний базовий конфіг:
- CPU: 6-8 vCPU
- RAM: 16 GB RAM
- Диск: 200-300 GB NVMe SSD
- Мережа: 1 Гбіт/с
Подібний VPS із зазначеними характеристиками забезпечить комфортну роботу Wazuh для більшості малих та середніх проєктів. Важливо пам'ятати, що ці цифри є відправною точкою, і реальні потреби можуть змінитися залежно від вашого навантаження.
Коли потрібен dedicated, а не VPS
Якщо ви плануєте моніторити понад 100-200 агентів, зберігати логи за тривалий період (кілька місяців) або обробляти дуже великий обсяг даних (наприклад, логи від високонавантажених веб-серверів), то вам слід розглянути виділений сервер (dedicated server). Dedicated сервери пропонують гарантовані ресурси, вищу продуктивність дискової підсистеми і часто краще співвідношення ціна/продуктивність для великих навантажень. Наприклад, для великого розгортання може знадобитися сервер із 16+ фізичними ядрами, 64+ GB RAM та кількома TB NVMe SSD у RAID-масиві. У таких випадках, варто розглянути відповідний dedicated сервер для забезпечення необхідної продуктивності та надійності.
Локація: на що впливає
Вибір локації VPS впливає на кілька факторів:
- Затримка (latency): Чим ближче сервер до ваших агентів та користувачів дашборду, тим менша затримка та швидша відповідь.
- Законодавство: Обирайте локацію, що відповідає вашим вимогам до зберігання даних та законодавству про приватність (наприклад, EU для GDPR).
- Вартість: Ціни на VPS можуть відрізнятися залежно від регіону.
Зазвичай рекомендується обирати локацію, яка географічно близька до більшості ваших систем, що моніторяться.
Підготовка сервера
Перед встановленням Wazuh необхідно виконати базову підготовку вашого VPS на базі Ubuntu 24.04 LTS. Це включає створення безпечного користувача, налаштування SSH, фаєрволу та оновлення системи.
1. Підключення через SSH
Спершу підключіться до вашого нового VPS як користувач root (або той, що був наданий провайдером):
ssh root@ВАШ_IP_АДРЕС
2. Створення нового користувача з правами sudo
Працювати під root небезпечно. Створимо нового користувача та додамо його до групи sudo.
adduser wazuhadmin
usermod -aG sudo wazuhadmin
Замініть wazuhadmin на ім'я користувача на ваш вибір. Вам буде запропоновано встановити пароль та ввести додаткову інформацію (можна пропустити).
3. Налаштування SSH-ключів для нового користувача (рекомендується)
Для підвищення безпеки рекомендується використовувати SSH-ключі замість паролів. Скопіюйте ваш публічний SSH-ключ на сервер.
su - wazuhadmin
mkdir -p ~/.ssh
chmod 700 ~/.ssh
exit
Тепер скопіюйте ваш публічний ключ (який знаходиться на вашій локальній машині, зазвичай у ~/.ssh/id_rsa.pub) на сервер:
cat ~/.ssh/id_rsa.pub | ssh wazuhadmin@ВАШ_IP_АДРЕС "cat >> ~/.ssh/authorized_keys"
Переконайтеся, що права на authorized_keys встановлені правильно:
ssh wazuhadmin@ВАШ_IP_АДРЕС "chmod 600 ~/.ssh/authorized_keys"
4. Відключення входу за паролем для SSH (опціонально, але рекомендується)
Відредагуйте файл конфігурації SSH-сервера, щоб дозволити вхід лише за ключами.
sudo nano /etc/ssh/sshd_config
Знайдіть та змініть наступні рядки:
#PasswordAuthentication yes
PasswordAuthentication no
#PermitRootLogin prohibit-password
PermitRootLogin no
Збережіть зміни (Ctrl+O, Enter) та вийдіть (Ctrl+X). Перезапустіть SSH-сервіс:
sudo systemctl restart sshd
Перш ніж відключатися від root, переконайтеся, що ви можете увійти як wazuhadmin з використанням SSH-ключа в новому терміналі.
ssh wazuhadmin@ВАШ_IP_АДРЕС
Якщо вхід успішний, можете закрити сесію root.
5. Налаштування фаєрволу (UFW)
Встановимо та налаштуємо UFW (Uncomplicated Firewall), щоб дозволити лише необхідні порти.
sudo apt update && sudo apt install ufw -y
Дозволимо SSH (порт 22), Wazuh Manager (1514/TCP, 55000/TCP), OpenSearch (9200/TCP) та OpenSearch Dashboards (443/TCP для HTTPS).
sudo ufw allow 22/tcp comment 'SSH'
sudo ufw allow 1514/tcp comment 'Wazuh Agent communication'
sudo ufw allow 55000/tcp comment 'Wazuh API'
sudo ufw allow 9200/tcp comment 'OpenSearch REST API'
sudo ufw allow 443/tcp comment 'HTTPS for OpenSearch Dashboards'
sudo ufw enable
sudo ufw status verbose
Підтвердьте увімкнення фаєрволу, ввівши y.
6. Встановлення Fail2Ban (рекомендується)
Fail2Ban допоможе захиститися від атак перебору паролів на SSH та інші сервіси.
sudo apt install fail2ban -y
sudo systemctl enable fail2ban
sudo systemctl start fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo nano /etc/fail2ban/jail.local
У файлі jail.local знайдіть секцію [sshd] та переконайтеся, що вона увімкнена (enabled = true). Можете також налаштувати bantime (час блокування) та maxretry (кількість спроб).
[sshd]
enabled = true
port = ssh
logpath = %(sshd_log)s
backend = %(sshd_backend)s
Збережіть та вийдіть. Перезапустіть Fail2Ban.
sudo systemctl restart fail2ban
sudo fail2ban-client status sshd
7. Оновлення системи та встановлення базових утиліт
Переконайтеся, що всі пакети оновлені, та встановіть необхідні утиліти.
sudo apt update && sudo apt upgrade -y
sudo apt install curl wget apt-transport-https gnupg2 -y
Тепер ваш сервер готовий до встановлення Wazuh.
Встановлення ПЗ — покроково
Ми будемо встановлювати Wazuh 5.0 (актуальна версія на 2026 рік) в уніфікованій архітектурі (Manager, Indexer, Dashboard на одному сервері) з використанням офіційних репозиторіїв.
1. Встановлення Java Development Kit (JDK)
OpenSearch (Indexer) вимагає Java. Встановимо OpenJDK 17.
sudo apt install openjdk-17-jdk -y # Встановлення OpenJDK 17
java -version # Перевірка версії Java
2. Додавання репозиторію Wazuh
Додамо офіційний репозиторій Wazuh та його GPG-ключ.
curl -s https://packages.wazuh.com/key/GPG-KEY-WAZUH | gpg --dearmor | sudo tee /etc/apt/trusted.gpg.d/wazuh.gpg > /dev/null # Додавання GPG-ключа Wazuh
echo "deb https://packages.wazuh.com/5.x/apt/ stable main" | sudo tee -a /etc/apt/sources.list.d/wazuh.list # Додавання репозиторію Wazuh 5.x
sudo apt update # Оновлення списку пакетів
3. Встановлення Wazuh Indexer (OpenSearch)
Встановимо Wazuh Indexer, який є форком OpenSearch. Wazuh 5.0 використовуватиме OpenSearch 2.x.
sudo apt install wazuh-indexer -y # Встановлення Wazuh Indexer
Після встановлення необхідно згенерувати сертифікати для безпечного зв'язку між компонентами. Wazuh надає утиліту для цього.
sudo /usr/share/wazuh-indexer/bin/indexer-cert-tool.sh # Запуск утиліти для генерації сертифікатів
Ця утиліта створить необхідні файли сертифікатів (admin-key.pem, admin.pem, node-key.pem, node.pem, ca.pem) у поточній директорії. Перемістимо їх у потрібні місця.
sudo mkdir /etc/wazuh-indexer/certs
sudo mv ~/admin-key.pem ~/admin.pem ~/node-key.pem ~/node.pem ~/ca.pem /etc/wazuh-indexer/certs/ # Переміщення сертифікатів
sudo chown -R wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/certs # Встановлення правильних прав
sudo chmod -R 500 /etc/wazuh-indexer/certs # Обмеження доступу до сертифікатів
sudo chmod 400 /etc/wazuh-indexer/certs/key.pem # Обмеження доступу до приватних ключів
Тепер відредагуйте конфігурацію Indexer, щоб використовувати ці сертифікати. Відкрийте файл /etc/wazuh-indexer/opensearch.yml.
sudo nano /etc/wazuh-indexer/opensearch.yml
Додайте або змініть наступні рядки:
# ---------------------------------- Network -----------------------------------
network.host: 0.0.0.0 # Дозволити доступ з усіх інтерфейсів
http.port: 9200 # Стандартний порт HTTP
# --------------------------------- Security ---------------------------------
plugins.security.ssl.http.enabled: true
plugins.security.ssl.http.pemcert_filepath: /etc/wazuh-indexer/certs/node.pem
plugins.security.ssl.http.pemkey_filepath: /etc/wazuh-indexer/certs/node-key.pem
plugins.security.ssl.http.rootcas_filepath: /etc/wazuh-indexer/certs/ca.pem
plugins.security.ssl.transport.enabled: true
plugins.security.ssl.transport.pemcert_filepath: /etc/wazuh-indexer/certs/node.pem
plugins.security.ssl.transport.pemkey_filepath: /etc/wazuh-indexer/certs/node-key.pem
plugins.security.ssl.transport.rootcas_filepath: /etc/wazuh-indexer/certs/ca.pem
plugins.security.ssl.transport.enforce_hostname_verification: false
plugins.security.allow_unsafe_democertificates: true # Тимчасово для спрощення, у продакшені краще використовувати власні CA
plugins.security.nodes_dn:
- "CN=.wazuh-indexer.local" # Замініть на ваш FQDN, якщо використовуєте
Збережіть та вийдіть. Тепер можна запустити та перевірити Indexer.
sudo systemctl daemon-reload # Перезавантаження юнітів systemd
sudo systemctl enable wazuh-indexer # Увімкнення автозапуску Indexer
sudo systemctl start wazuh-indexer # Запуск Indexer
sudo systemctl status wazuh-indexer # Перевірка статусу Indexer
Зачекайте кілька хвилин, доки Indexer повністю запуститься. Перевірити його працездатність можна, звернувшись до API:
curl -XGET https://localhost:9200 -u admin:admin -k # Перевірка доступності OpenSearch API (логін/пароль за замовчуванням admin:admin)
Ви повинні отримати JSON-відповідь з інформацією про кластер.
4. Встановлення Wazuh Manager
Wazuh Manager — це ядро системи, яке обробляє, аналізує та корелює дані від агентів.
sudo apt install wazuh-manager -y # Встановлення Wazuh Manager
Після встановлення необхідно налаштувати Manager для зв'язку з Indexer. Відредагуйте файл /etc/wazuh/wazuh_indexer.yaml.
sudo nano /etc/wazuh/wazuh_indexer.yaml
Вкажіть IP-адресу або FQDN вашого Indexer (у цьому випадку localhost).
# Configuration for connection to Wazuh Indexer
# This file is managed by the wazuh-manager package.
# Do not edit this file directly, use the /etc/wazuh/wazuh_indexer.yaml.template file instead.
---
nodes:
- address: "localhost" # Змініть на IP-адресу або FQDN вашого Indexer
port: 9200
# SSL configuration
# If using custom certificates for the Wazuh Indexer, specify the path to the CA certificate.
# Otherwise, the default certificates generated by the Wazuh Indexer will be used.
ssl_certificate_authorities:
- "/etc/wazuh-indexer/certs/ca.pem" # Шлях до CA-сертифіката Indexer
Збережіть та вийдіть. Тепер запустіть Manager.
sudo systemctl enable wazuh-manager # Увімкнення автозапуску Manager
sudo systemctl start wazuh-manager # Запуск Manager
sudo systemctl status wazuh-manager # Перевірка статусу Manager
5. Встановлення Wazuh Dashboard (OpenSearch Dashboards)
Wazuh Dashboard надає веб-інтерфейс для візуалізації та керування даними безпеки.
sudo apt install wazuh-dashboard -y # Встановлення Wazuh Dashboard
Як і для Indexer, Dashboard також потребує сертифікатів для безпечної роботи. Використовуємо ті ж сертифікати, що й для Indexer.
sudo mkdir /etc/wazuh-dashboard/certs
sudo cp /etc/wazuh-indexer/certs/ca.pem /etc/wazuh-indexer/certs/node.pem /etc/wazuh-indexer/certs/node-key.pem /etc/wazuh-dashboard/certs/ # Копіювання сертифікатів
sudo chown -R wazuh-dashboard:wazuh-dashboard /etc/wazuh-dashboard/certs # Встановлення правильних прав
sudo chmod -R 500 /etc/wazuh-dashboard/certs # Обмеження доступу до сертифікатів
sudo chmod 400 /etc/wazuh-dashboard/certs/key.pem # Обмеження доступу до приватних ключів
Відредагуйте файл конфігурації Dashboard /etc/wazuh-dashboard/opensearch_dashboards.yml.
sudo nano /etc/wazuh-dashboard/opensearch_dashboards.yml
Додайте або змініть наступні рядки:
server.host: "0.0.0.0" # Дозволити доступ з усіх інтерфейсів
server.port: 443 # Використання стандартного HTTPS-порту 443
opensearch.hosts: ["https://localhost:9200"] # Вказуємо адресу Indexer
opensearch.ssl.verificationMode: none # Тимчасово вимикаємо перевірку SSL, оскільки використовуємо самопідписані сертифікати
opensearch.ssl.certificate: /etc/wazuh-dashboard/certs/node.pem
opensearch.ssl.key: /etc/wazuh-dashboard/certs/node-key.pem
opensearch.ssl.certificateAuthorities: ["/etc/wazuh-dashboard/certs/ca.pem"]
# Wazuh API configuration
wazuh.manager.host: "https://localhost" # Адреса Wazuh Manager
wazuh.manager.port: 55000 # Порт Wazuh API
wazuh.manager.ssl.verify: false # Вимикаємо перевірку SSL для Wazuh API
Збережіть та вийдіть. Тепер запустіть Dashboard.
sudo systemctl enable wazuh-dashboard # Увімкнення автозапуску Dashboard
sudo systemctl start wazuh-dashboard # Запуск Dashboard
sudo systemctl status wazuh-dashboard # Перевірка статусу Dashboard
Зачекайте кілька хвилин для повного запуску Dashboard. Після цього ви зможете отримати доступ до веб-інтерфейсу за адресою https://ВАША_IP_АДРЕСА. Логін та пароль за замовчуванням для OpenSearch Dashboards - admin:admin.