Міжкластерний пошук (CCS) у Wazuh дозволяє отримувати попередження з віддалених кластерів Wazuh та переглядати їх у централізованому місці. Централізоване місце, відоме як середовище міжкластерного пошуку (CCS), має довіру віддалених кластерів Wazuh, що дозволяє йому виконувати операції пошуку. Це дозволяє бачити сповіщення про загрози безпеки через єдину інформаційну панель Wazuh у віддаленому Операційному центрі безпеки (SOC), в той час, як дані логів залишаються на кластері-джерелі.
Міжкластерний пошук допомагає організаціям, в тому числі постачальникам керованих послуг безпеки (MSSP), підключати своїх клієнтів без шкоди для конфіденційності та цілісності даних.
У цій статті показано, як налаштувати міжкластерний пошук для керування кількома кластерами Wazuh.
Постановка проблеми
Операційна компанія з кібербезпеки, яка надає клієнтам послуги операційного центру безпеки (SOC), хоче використовувати Wazuh SIEM і XDR. Компанія має двох нових клієнтів, організації A і B, які бажають підписатися на їхню послугу керованого SOC.
Вимоги наведені нижче:
- Лог кожного клієнта зберігається окремо, а доступ до нього суворо контролюється.
- Логи клієнтів зберігаються в середовищі клієнта.
Запропоноване рішення
У рішенні Wazuh застосовується середовище міжкластерного пошуку (CCS) і два віддалених кластери Wazuh, що представляють кожну організацію. Кластери поділяються на середовище CCS, кластер A та кластер B, з наступними характеристиками кластерів:
Середовище CCS
- Середовище CCS використовується лише для доступу та запиту даних безпеки з віддалених кластерів Wazuh. Тому воно компрометує Wazuh indexer та інформаційну панель Wazuh без Wazuh server чи Wazuh agents.
- Йому довіряють кластери A і B.
Кластер A
- До нього входять Wazuh server та Wazuh indexer. Тут відсутня інформаційна панель Wazuh, оскільки візуалізація буде здійснюватися в середовищі CCS; однак, інформаційну панель Wazuh все ще можна встановити для локального перегляду сповіщень.
- Wazuh server (окремий вузол або кластер Wazuh server) збирає та аналізує логи від Wazuh agents. Він зберігає дані в Wazuh indexer (окремий вузол або кластер Wazuh indexer) для організації A.
- Він довіряє лише середовищу CCS.
Кластер B
- Складається з Wazuh server та Wazuh indexer. Тут відсутня інформаційна панель Wazuh, оскільки візуалізація буде здійснюватися в середовищі CCS; однак, інформаційну панель Wazuh все одно можна встановити для локального перегляду сповіщень.
- Wazuh server (окремий вузол або кластер Wazuh server) збирає та аналізує логи від Wazuh agents. Він зберігає дані в Wazuh indexer (окремий вузол або кластер Wazuh indexer) для організації B.
- Він довіряє лише середовищу CCS.

Малюнок 1.0: Архітектура рішення.
Інфраструктура
Щоб продемонструвати, як реалізувати міжкластерний пошук (CCS) у Wazuh, використовується наступна інфраструктура:
- Сервер Red Hat Enterprise Linux 9.4, на якому розміщено інформаційну панель Wazuh та Wazuh indexer для середовища CCS.
- Два сервери Red Hat Enterprise Linux 9.4 для кластера A. На першому сервері буде розміщено Wazuh server, а на другому – Wazuh indexer.
- Два сервери Red Hat Enterprise Linux 9.4 для кластера B. На першому сервері буде розміщено Wazuh server, а на другому – Wazuh indexer.
Примітка: Використовуються компоненти Wazuh версії 4.8.2.
У таблиці нижче показано подальшу розбивку інфраструктури.
| Кластер | Компонент | Ім’я вузла | IP-адреса |
| CCS | Інформаційна панель Wazuh | ccs-wazuh-dashboard | 192.168.186.60 |
| CCS | Wazuh indexer | ccs-wazuh-indexer-1 | 192.168.186.60 |
| Кластер A | Wazuh server | ca-wazuh-server-1 | 192.168.10.100 |
| Кластер A | Wazuh indexer | ca-wazuh-indexer-1 | 192.168.10.101 |
| Кластер B | Wazuh server | cb-wazuh-server-1 | 192.168.20.100 |
| Кластер B | Wazuh indexer | cb-wazuh-indexer-1 | 192.168.20.101 |
Забезпечує мережеве підключення між віддаленими кластерами та середовищем CCS, незалежно від мережевої адреси.
Конфігурація
Середовище CCS
Середовище міжкластерного пошуку (CCS) призначене для виконання операцій пошуку на віддалених кластерах Wazuh. Зазвичай воно складається з Wazuh indexer та інформаційної панелі Wazuh. Вузол Wazuh indexer встановлює довіру з вузлами Wazuh indexer у віддалених кластерах, що дозволяє йому шукати дані логів на цих індексаторах. Дані про вузли Wazuh indexer indexator у віддалених кластерах відображаються на інформаційній панелі Wazuh в середовищі CCS.
Створення сертифікатів
Для створення сертифікатів кореневого центру сертифікації, адміністратора та вузла для інформаційної панелі CCS Wazuh та вузлів Wazuh indexer необхідно виконати наступні кроки.
1 ) Завантажити скрипт wazuh-certs-tool.sh та конфігураційний файл config.yml. Скрипт wazuh-certs-tool.sh використовується для генерації сертифікатів для кластера. Файл config.yml визначає IP-адреси та імена вузлів центральних компонентів Wazuh, які будуть розгорнуті.
# curl -sO https://packages.wazuh.com/4.8/wazuh-certs-tool.sh
# curl -sO https://packages.wazuh.com/4.8/config.yml
2 ) Відредагувати файл config.yml і замінити змінні name та IP на відповідні назви вузлів і IP-адреси:
nodes:
# Wazuh indexer nodes
indexer:
- name: ccs-wazuh-indexer-1
ip: "192.168.186.60"
# Wazuh dashboard nodes
dashboard:
- name: ccs-wazuh-dashboard
ip: "192.168.186.60"
Примітка: Занотувати або видалити конфігурацію Wazuh server, оскільки він не використовується.
3 ) Запустити скрипт wazuh-certs-tool.sh з параметром -A для створення сертифікатів root-ca, admin та вузла:
# bash ./wazuh-certs-tool.sh -A
Output
25/08/2024 15:22:57 INFO: Generating the root certificate.
25/08/2024 15:22:57 INFO: Generating Admin certificates.
25/08/2024 15:22:58 INFO: Admin certificates created.
25/08/2024 15:22:58 INFO: Generating Wazuh indexer certificates.
25/08/2024 15:22:58 INFO: Wazuh indexer certificates created.
25/08/2024 15:22:58 INFO: Generating Wazuh dashboard certificates.
25/08/2024 15:22:59 INFO: Wazuh dashboard certificates created.
4 ) Скопіювати сертифікат кореневого центру сертифікації до робочого каталогу вузла кластера A та кластера B за допомогою утиліти scp. Кореневий центр сертифікації буде використано пізніше у віддалених кластерах для створення сертифікатів.
# scp -r wazuh-certificates/root-ca.* <USER_NAME>@<IP_ADDRESS>:<DESTINATION_DIRECTORY>
Замінити:
- <USER_NAME>на ім’я користувача цільового сервера.
- <IP_ADDRESS>на IP-адресу сервера призначення.
- <DESTINATION_DIRECTORY> робочим каталогом сервера призначення.
5 ) Стиснути всі файли сертифікатів і видалити нестиснуту версію, щоб у разі потреби їх було легше перенести на інші вузли компонентів у середовищі CCS:
# tar -cvf ./wazuh-certificates.tar -C ./wazuh-certificates/ .
# rm -rf ./wazuh-certificates
Встановлення Wazuh indexer
Для налаштування вузла Wazuh indexer для середовища CCS потрібно виконати наступні кроки.
1 ) Встановити необхідні залежності:
# yum install -y coreutils
2 ) Імпортувати ключ Wazuh GPG та додати репозиторій Wazuh:
# rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
# echo -e '[wazuh]\ngpgcheck=1\ngpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH\nenabled=1\nname=EL-$releasever - Wazuh\nbaseurl=https://packages.wazuh.com/4.x/yum/\nprotect=1' | tee /etc/yum.repos.d/wazuh.repo
3 ) Оновити менеджер пакунків:
# yum update -y
4 ) Встановити пакунок Wazuh indexer:
# yum -y install wazuh-indexer
5 ) Відредагувати конфігураційний файл /etc/wazuh-indexer/opensearch.yml:
network.host: "192.168.186.60"
node.name: "ccs-wazuh-indexer-1"
cluster.initial_master_nodes:
- "ccs-wazuh-indexer-1"
#- "node-2"
#- "node-3"
cluster.name: "ccs-cluster"
#discovery.seed_hosts:
# - "node-1-ip"
# - "node-2-ip"
# - "node-3-ip"
node.max_local_storage_nodes: "3"
path.data: /var/lib/wazuh-indexer
path.logs: /var/log/wazuh-indexer
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
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.transport.enforce_hostname_verification: false
plugins.security.ssl.transport.resolve_hostname: false
plugins.security.authcz.admin_dn:
- "CN=admin,OU=Wazuh,O=Wazuh,L=California,C=US"
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.nodes_dn:
- "CN=ccs-wazuh-indexer-1,OU=Wazuh,O=Wazuh,L=California,C=US"
#- "CN=node-2,OU=Wazuh,O=Wazuh,L=California,C=US"
#- "CN=node-3,OU=Wazuh,O=Wazuh,L=California,C=US"
plugins.security.restapi.roles_enabled:
- "all_access"
- "security_rest_api_access"
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".plugins-ml-model", ".plugins-ml-task", ".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-an$
### Option to allow Filebeat-oss 7.10.2 to work ###
compatibility.override_main_response_version: true
Замінити значення параметрів:
- network.host на IP-адресу вузла Wazuh indexer.
- node.name на ім’я вузла Wazuh indexer, задане у файлі config.yml.
- cluster.initial_master_nodes з назвою вузла Wazuh indexer у середовищі CCS.
- cluster.name з назвою кластера. Наприклад, ccs-cluster.
- plugins.security.nodes_dn з відмінним ім’ям (DN) сертифіката вузлів Wazuh indexer CCS. Загальне ім’я (CN) слід замінити на ім’я вузла Wazuh indexer CCS, вказане у файлі config.yml.
Примітка: Слід переконатися, що копія файлу wazuh-certificates.tar, створеного на етапі генерації сертифікатів, знаходиться в поточному робочому каталозі.
6 ) Запустити наступні команди, замінивши <INDEXER_NODE_NAME> на значення node.name, налаштоване у файлі /etc/wazuh-indexer/opensearch.yml:
# NODE_NAME=<INDEXER_NODE_NAME>
# mkdir /etc/wazuh-indexer/certs
# tar -xf ./wazuh-certificates.tar -C /etc/wazuh-indexer/certs/ ./$NODE_NAME.pem ./$NODE_NAME-# # # key.pem ./admin.pem ./admin-key.pem ./root-ca.pem
# mv -n /etc/wazuh-indexer/certs/$NODE_NAME.pem /etc/wazuh-indexer/certs/indexer.pem
# mv -n /etc/wazuh-indexer/certs/$NODE_NAME-key.pem /etc/wazuh-indexer/certs/indexer-key.pem
# chmod 500 /etc/wazuh-indexer/certs
# chmod 400 /etc/wazuh-indexer/certs/*
# chown -R wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/certs
7 ) Ввімкнути та запустити службу Wazuh indexer:
# systemctl daemon-reload
# systemctl enable wazuh-indexer
# systemctl start wazuh-indexer
8 ) Запустити скрипт Wazuh indexer indexer-security-init.sh на вузлі Wazuh indexer, щоб завантажити нову інформацію про сертифікати та ініціалізувати Wazuh indexer:
# /usr/share/wazuh-indexer/bin/indexer-security-init.sh
Output
**************************************************************************
** This tool will be deprecated in the next major release of OpenSearch **
** https://github.com/opensearch-project/security/issues/1755 **
**************************************************************************
Security Admin v7
Will connect to 192.168.186.60:9200 ... done
Connected as "CN=admin,OU=Wazuh,O=Wazuh,L=California,C=US"
OpenSearch Version: 2.10.0
Contacting opensearch cluster 'opensearch' and wait for YELLOW clusterstate ...
Clustername: ccs-cluster
Clusterstate: GREEN
Number of nodes: 1
Number of data nodes: 1
.opendistro_security index does not exists, attempt to create it ... done (0-all replicas)
Populate config from /etc/wazuh-indexer/opensearch-security/
Will update '/config' with /etc/wazuh-indexer/opensearch-security/config.yml
SUCC: Configuration for 'config' created or updated
Will update '/roles' with /etc/wazuh-indexer/opensearch-security/roles.yml
SUCC: Configuration for 'roles' created or updated
Will update '/rolesmapping' with /etc/wazuh-indexer/opensearch-security/roles_mapping.yml
SUCC: Configuration for 'rolesmapping' created or updated
Will update '/internalusers' with /etc/wazuh-indexer/opensearch-security/internal_users.yml
SUCC: Configuration for 'internalusers' created or updated
Will update '/actiongroups' with /etc/wazuh-indexer/opensearch-security/action_groups.yml
SUCC: Configuration for 'actiongroups' created or updated
Will update '/tenants' with /etc/wazuh-indexer/opensearch-security/tenants.yml
SUCC: Configuration for 'tenants' created or updated
Will update '/nodesdn' with /etc/wazuh-indexer/opensearch-security/nodes_dn.yml
SUCC: Configuration for 'nodesdn' created or updated
Will update '/whitelist' with /etc/wazuh-indexer/opensearch-security/whitelist.yml
SUCC: Configuration for 'whitelist' created or updated
Will update '/audit' with /etc/wazuh-indexer/opensearch-security/audit.yml
SUCC: Configuration for 'audit' created or updated
Will update '/allowlist' with /etc/wazuh-indexer/opensearch-security/allowlist.yml
SUCC: Configuration for 'allowlist' created or updated
SUCC: Expected 10 config types for node {"updated_config_types":["allowlist","tenants","rolesmapping","nodesdn","audit","roles","whitelist","internalusers","actiongroups","config"],"updated_config_size":10,"message":null} is 10 (["allowlist","tenants","rolesmapping","nodesdn","audit","roles","whitelist","internalusers","actiongroups","config"]) due to: null
Done with success
9 ) Щоб переконатися, що Wazuh indexer ініціалізовано і налаштовано належним чином, потрібно виконати наступну команду:
# curl -k -u admin:admin https://<WAZUH_INDEXER_IP>:9200
Output
{
"name" : "ccs-wazuh-indexer-1",
"cluster_name" : "ccs-cluster",
"cluster_uuid" : "JkH8XuirS6m6PgdZFEQV2g",
"version" : {
"number" : "7.10.2",
"build_type" : "rpm",
"build_hash" : "eee49cb340edc6c4d489bcd9324dda571fc8dc03",
"build_date" : "2023-09-20T23:54:29.889267151Z",
"build_snapshot" : false,
"lucene_version" : "9.7.0",
"minimum_wire_compatibility_version" : "7.10.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
Встановлення інформаційної панелі Wazuh
Для середовища CCS слід виконати наступні кроки конфігурації на вузлі інформаційної панелі Wazuh.
1 ) Встановити необхідні залежності:
# yum install libcap
2 ) Імпортувати ключ Wazuh GPG та додати репозиторій Wazuh, якщо цього не було зроблено на етапі встановлення :
# rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
# echo -e '[wazuh]\ngpgcheck=1\ngpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH\nenabled=1\nname=EL-$releasever - Wazuh\nbaseurl=https://packages.wazuh.com/4.x/yum/\nprotect=1' | tee /etc/yum.repos.d/wazuh.repo
3 ) Оновити менеджер пакетів:
# yum update -y
4 ) Встановити пакет панелі інструментів Wazuh:
# yum -y install wazuh-dashboard
5 ) Відредагувати файл /etc/wazuh-dashboard/opensearch_dashboards.yml, щоб додати значення URL-адреси Wazuh indexer до розділу opensearch.hosts.
server.host: 0.0.0.0
server.port: 443
opensearch.hosts: "https://192.168.186.60:9200"
opensearch.ssl.verificationMode: certificate
Примітка: Переконатися, що копія файлу wazuh-certificates.tar, створеного на етапі генерації сертифікатів, знаходиться в робочому каталозі.
6 ) Замінити на <DASHBOARD_NODE_NAME> ім’я вузла інформаційної панелі Wazuh, яке було задано в файлі config.yml при створенні сертифікатів, і перемістити сертифікати до відповідних каталогів:
# NODE_NAME=<DASHBOARD_NODE_NAME>
# mkdir /etc/wazuh-dashboard/certs
# tar -xf ./wazuh-certificates.tar -C /etc/wazuh-dashboard/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./root-ca.pem
# mv -n /etc/wazuh-dashboard/certs/$NODE_NAME.pem /etc/wazuh-dashboard/certs/dashboard.pem
# mv -n /etc/wazuh-dashboard/certs/$NODE_NAME-key.pem /etc/wazuh-dashboard/certs/dashboard-key.pem
# chmod 500 /etc/wazuh-dashboard/certs
# chmod 400 /etc/wazuh-dashboard/certs/*
# chown -R wazuh-dashboard:wazuh-dashboard /etc/wazuh-dashboard/certs
7 ) Ввімкнути та запустити службу Wazuh інформаційних панелей:
# systemctl daemon-reload
# systemctl enable wazuh-dashboard
# systemctl start wazuh-dashboard
8 ) Відредагувати файл /usr/share/wazuh-dashboard/data/wazuh/config/wazuh.yml і замінити розділ hosts на аналогічну конфігурацію, як показано нижче:
hosts:
- Cluster A:
url: https://192.168.10.100
port: 55000
username: wazuh-wui
password: wazuh-wui
run_as: true
- Cluster B:
url: https://192.168.20.100
port: 55000
username: wazuh-wui
password: wazuh-wui
run_as: true
Де:
- url: Це значення IP-адреси головного вузла Wazuh server для відповідних сайтів. Вказати його для кожного сайту в розділі hosts.
- port: Порт зв’язку API Wazuh. За замовчуванням встановлено значення 55000. Вказати його для кожного сайту в розділі hosts.
- username: Це ім’я користувача, яке використовується для автентифікації з’єднання з Wazuh API. За замовчуванням встановлено значення wazuh-wui. Задати його для кожного сайту в розділі hosts.
- password: це пароль, який використовується для автентифікації з’єднання з Wazuh API. За замовчуванням встановлено значення wazuh-wui. Вказати його для кожного сайту в розділі hosts.
- run_as: За замовчуванням має значення false. Встановіть значення true, щоб зіставлення ролей Wazuh server набуло чинності. Вкажіть це значення для кожного сайту в розділі hosts.
9 ) Перезапустити службу інформаційної панелі Wazuh, щоб застосувати зміни:
# systemctl restart wazuh-dashboard
Примітка: Доступ до інформаційної панелі Wazuh на цьому етапі конфігурації призведе до помилок API, оскільки Wazuh server ще не встановлено. Перед отриманням доступу до інформаційної панелі слід виконати всі кроки в розділі Setup Cross-Cluster Search.
Кластер A
Цей віддалений кластер Wazuh збирає, аналізує та зберігає логи від Wazuh agents у середовищі клієнта A. Він складається з Wazuh server, який збирає та аналізує дані логів від Wazuh agents, та Wazuh indexer, який зберігає оповіщення Wazuh. Він може бути налаштований як одновузловий або багатовузловий кластер Wazuh.
Вузол Wazuh indexer у кластері A довіряє лише вузлу Wazuh indexer у середовищі CCS, що дозволяє йому запитувати його дані. Попередження та дані логів знаходяться в кластері A, але середовище CCS може лише запитувати ці дані, але не зберігати їх.
Створення сертифікатів
Щоб згенерувати сертифікати адміністратора та вузла, потрібно виконати такі дії на вузлі з кореневим сертифікатом центру сертифікації у кластері A.
Примітка: Переконатися, що копії файлів root-ca.key і root-ca.pem, створених під час кроку генерації сертифікатів CCS, знаходяться в робочому каталозі.
1 ) Завантажити скрипт wazuh-certs-tool.sh та конфігураційний файл config.yml. Скрипт wazuh-certs-tool.sh використовується для генерації сертифікатів для кластера. Файл config.yml використовується для визначення IP-адрес та імен вузлів центральних компонентів Wazuh, які будуть розгорнуті:
# curl -sO https://packages.wazuh.com/4.8/wazuh-certs-tool.sh
# curl -sO https://packages.wazuh.com/4.8/config.yml
2 ) Відредагувати файл config.yml і замінити значення імені та IP-адреси на відповідні назви вузлів та IP-адреси для Wazuh server та Wazuh indexer:
nodes:
# Wazuh indexer nodes
indexer:
- name: ca-wazuh-indexer-1
ip: "192.168.10.101"
# Wazuh server nodes
server:
- name: ca-wazuh-server-1
ip: "192.168.10.100"
Примітка: Занотувати або видалити конфігурацію інформаційної панелі Wazuh, оскільки вона не використовується.
3 ) Запустити скрипт wazuh-certs-tool.sh з параметром -A і вказати сертифікат root-ca і ключ, створені раніше для створення сертифікатів admin і node:
# bash ./wazuh-certs-tool.sh -A ./root-ca.pem ./root-ca.key
Outputs:
25/08/2024 16:20:31 INFO: Generating Admin certificates.
25/08/2024 16:20:31 INFO: Admin certificates created.
25/08/2024 16:20:31 INFO: Generating Wazuh indexer certificates.
25/08/2024 16:20:31 INFO: Wazuh indexer certificates created.
25/08/2024 16:20:31 INFO: Generating Filebeat certificates.
25/08/2024 16:20:32 INFO: Wazuh Filebeat certificates created.
4 ) Стиснути всі файли сертифікатів і видалити нестиснуту версію, щоб полегшити їх перенесення на інші вузли кластера A:
# tar -cvf ./wazuh-certificates.tar -C ./wazuh-certificates/ .
# rm -rf ./wazuh-certificates
5 ) Скопіювати файл wazuh-certificates.tar на вузли Wazuh indexer і Wazuh server в кластері A за допомогою утиліти scp:
# scp wazuh-certificates.tar <USER_NAME>@<IP_ADDRESS>:<DESTINATION_DIRECTORY>
Встановлення Wazuh indexer
Виконати наступні кроки налаштування на вузлі Wazuh indexer для кластера A.
1 ) Встановити необхідні залежності:
# yum install -y coreutils
2 ) Імпортувати ключ Wazuh GPG та додати Wazuh repository:
#rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
#echo -e '[wazuh]\ngpgcheck=1\ngpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH\nenabled=1\nname=EL-$releasever - Wazuh\nbaseurl=https://packages.wazuh.com/4.x/yum/\nprotect=1' | tee /etc/yum.repos.d/wazuh.repo
3 ) Оновити менеджер пакунків:
# yum update -y
4 ) Встановити пакунок Wazuh indexer:
# yum -y install wazuh-indexer
5 ) Змінити конфігураційний файл /etc/wazuh-indexer/opensearch.yml і замінити наступні значення.
- network.host на IP-адресу вузла Wazuh indexer.
- node.name на ім’я вузла Wazuh indexer, задане у файлі config.yml.
- cluster.initial_master_nodes з назвою вузла(ів) Wazuh indexer у кластері A.
- cluster.name з назвою кластера. Наприклад, ca-cluster.
- plugins.security.nodes_dn з відмінним іменем (DN) сертифіката для вузла(ів) Wazuh indexer кластера A та вузла Wazuh indexer CCS. Загальні імена (CN) буде замінено на імена вузлів вузла Wazuh indexer кластера A та вузла CCS Wazuh indexer.
Примітка: Необхідно додати відмінне ім’я (DN) вузла Wazuh indexer CCS до кожного віддаленого вузла Wazuh indexer. Це дозволить віддаленим кластерам (кластерам A і B) довіряти середовищу CCS.
network.host: "192.168.10.101"
node.name: "ca-wazuh-indexer-1"
cluster.initial_master_nodes:
- "ca-wazuh-indexer-1"
#- "node-2"
#- "node-3"
cluster.name: "ca-cluster"
#discovery.seed_hosts:
# - "node-1-ip"
# - "node-2-ip"
# - "node-3-ip"
node.max_local_storage_nodes: "3"
path.data: /var/lib/wazuh-indexer
path.logs: /var/log/wazuh-indexer
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
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.transport.enforce_hostname_verification: false
plugins.security.ssl.transport.resolve_hostname: false
plugins.security.authcz.admin_dn:
- "CN=admin,OU=Wazuh,O=Wazuh,L=California,C=US"
plugins.security.check_snapshot_restore_write_privileges: true
plugins.security.enable_snapshot_restore_privilege: true
plugins.security.nodes_dn:
- "CN=ca-wazuh-indexer-1,OU=Wazuh,O=Wazuh,L=California,C=US"
- "CN=ccs-wazuh-indexer-1,OU=Wazuh,O=Wazuh,L=California,C=US"
#- "CN=node-3,OU=Wazuh,O=Wazuh,L=California,C=US"
plugins.security.restapi.roles_enabled:
- "all_access"
- "security_rest_api_access"
plugins.security.system_indices.enabled: true
plugins.security.system_indices.indices: [".plugins-ml-model", ".plugins-ml-task", ".opendistro-alerting-config", ".opendistro-alerting-alert*", ".opendistro-anomaly-results*", ".opendistro-anomaly-detector*", ".opendistro-an$
### Option to allow Filebeat-oss 7.10.2 to work ###
compatibility.override_main_response_version: true
Примітка: Слід переконатися, що копія файлу wazuh-certificates.tar, створеного на кроці генерації сертифікатів, знаходиться в поточному робочому каталозі.
6 ) Запустити наступні команди, замінивши <INDEXER_NODE_NAME> на значення node.name, налаштоване у файлі /etc/wazuh-indexer/opensearch.yml:
# NODE_NAME=<INDEXER_NODE_NAME>
# mkdir /etc/wazuh-indexer/certs
# tar -xf ./wazuh-certificates.tar -C /etc/wazuh-indexer/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./admin.pem ./admin-key.pem ./root-ca.pem
# mv -n /etc/wazuh-indexer/certs/$NODE_NAME.pem /etc/wazuh-indexer/certs/indexer.pem
# mv -n /etc/wazuh-indexer/certs/$NODE_NAME-key.pem /etc/wazuh-indexer/certs/indexer-key.pem
# chmod 500 /etc/wazuh-indexer/certs
# chmod 400 /etc/wazuh-indexer/certs/*
# chown -R wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/certs
7 ) Ввімкнути та запустити службу Wazuh indexer:
# systemctl daemon-reload
# systemctl enable wazuh-indexer
# systemctl start wazuh-indexer
8 ) Запустити скрипт Wazuh indexer indexer-security-init.sh на вузлі Wazuh indexer, щоб завантажити нову інформацію про сертифікати та ініціалізувати Wazuh indexer:
# /usr/share/wazuh-indexer/bin/indexer-security-init.sh
# /usr/share/wazuh-indexer/bin/indexer-security-init.sh
9 ) Перевірити, що Wazuh indexer ініціалізовано та правильно налаштовано, виконавши наступну команду:
# curl -k -u admin:admin https://<WAZUH_INDEXER_IP>:9200
Output
{
"name" : "ca-wazuh-indexer-1",
"cluster_name" : "ca-cluster",
"cluster_uuid" : "qsOmbP79SfqEM34sHH9I6g",
"version" : {
"number" : "7.10.2",
"build_type" : "rpm",
"build_hash" : "eee49cb340edc6c4d489bcd9324dda571fc8dc03",
"build_date" : "2023-09-20T23:54:29.889267151Z",
"build_snapshot" : false,
"lucene_version" : "9.7.0",
"minimum_wire_compatibility_version" : "7.10.0",
"minimum_index_compatibility_version" : "7.0.0"
},
"tagline" : "The OpenSearch Project: https://opensearch.org/"
}
Встановлення Wazuh server
Виконати наступні кроки налаштування на вузлі Wazuh server для кластера A.
1 ) Імпортувати ключ Wazuh GPG і додати сховище Wazuh:
# rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH
# echo -e '[wazuh]\ngpgcheck=1\ngpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH\nenabled=1\nname=EL-$releasever - Wazuh\nbaseurl=https://packages.wazuh.com/4.x/yum/\nprotect=1' | tee /etc/yum.repos.d/wazuh.repo
2 ) Оновлення менеджера пакетів:
# yum update -y
3 ) Встановити пакунок менеджера пакунків Wazuh:
# yum -y install wazuh-manager
4 ) Встановити пакет Filebeat:
# yum -y install filebeat
5 ) Завантажити попередньо налаштований конфігураційний файл Filebeat:
# curl -so /etc/filebeat/filebeat.yml https://packages.wazuh.com/4.8/tpl/wazuh/filebeat/filebeat.yml
6 ) Відредагувати конфігураційний файл /etc/filebeat/filebeat.yml і ввести IP-адресу вузла(ів) Wazuh indexer кластера A у секції hosts:
# Wazuh - Filebeat configuration file
output.elasticsearch:
hosts: ["192.168.10.101:9200"]
Примітка: У полі hosts вище слід вводити лише IP-адреси вузлів Wazuh indexer кластера A.
7 ) Створити сховище ключів Filebeat для безпечного зберігання облікових даних автентифікації та додати стандартний username і пароль admin:admin до сховища секретних ключів:
# filebeat keystore create
# echo admin | filebeat keystore add username --stdin --force
# echo admin | filebeat keystore add password --stdin --force
8 ) Завантажити шаблон сповіщень для Wazuh indexer і надати відповідні права на читання:
# curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/v4.8.1/extensions/elasticsearch/7.x/wazuh-template.json
# chmod go+r /etc/filebeat/wazuh-template.json
9 ) Встановити модуль Wazuh для Filebeat:
# curl -s https://packages.wazuh.com/4.x/filebeat/wazuh-filebeat-0.4.tar.gz | tar -xvz -C /usr/share/filebeat/module
Примітка: Переконатися, що копія файлу wazuh-certificates.tar, створеного на етапі генерації сертифікатів, знаходиться в робочому каталозі.
10 ) Замінити <SERVER_NODE_NAME> на ім’я вузла Wazuh server кластера A, яке було задано в файлі config.yml під час створення сертифікатів, і перемістити сертифікати у відповідні каталоги:
# NODE_NAME=<SERVER_NODE_NAME>
# mkdir /etc/filebeat/certs
# tar -xf ./wazuh-certificates.tar -C /etc/filebeat/certs/ ./$NODE_NAME.pem ./$NODE_NAME-key.pem ./root-ca.pem
# mv -n /etc/filebeat/certs/$NODE_NAME.pem /etc/filebeat/certs/filebeat.pem
# mv -n /etc/filebeat/certs/$NODE_NAME-key.pem /etc/filebeat/certs/filebeat-key.pem
# chmod 500 /etc/filebeat/certs
# chmod 400 /etc/filebeat/certs/*
# chown -R root:root /etc/filebeat/certs
11 ) Зберегти ім’я користувача та пароль Wazuh indexer у сховищі ключів менеджера Wazuh за допомогою інструменту wazuh-keystore:
# /var/ossec/bin/wazuh-keystore -f indexer -k username -v <INDEXER_USERNAME>
# /var/ossec/bin/wazuh-keystore -f indexer -k password -v <INDEXER_PASSWORD>
12 ) Відредагувати файл /var/ossec/etc/ossec.conf, щоб налаштувати підключення Wazuh indexer, додавши IP-адресу Wazuh indexer в <host> секцію блоку <indexer>:
<indexer>
<enabled>yes</enabled>
<hosts>
<host>https://192.168.10.101:9200</host>
</hosts>
<ssl>
<certificate_authorities>
<ca>/etc/filebeat/certs/root-ca.pem</ca>
</certificate_authorities>
<certificate>/etc/filebeat/certs/filebeat.pem</certificate>
<key>/etc/filebeat/certs/filebeat-key.pem</key>
</ssl>
</indexer>
13 ) Ввімкнути та запустити службу Wazuh manager та службу Filebeat:
# systemctl daemon-reload
# systemctl enable wazuh-manager
# systemctl start wazuh-manager
# systemctl enable filebeat
# systemctl start filebeat
14 ) Запустити наступну команду, щоб переконатися, що Filebeat успішно встановлено:
# filebeat test output
Output
elasticsearch: https://192.168.10.101:9200...
parse url... OK
connection...
parse host... OK
dns lookup... OK
addresses: 192.168.10.101
dial up... OK
TLS...
security: server's certificate chain verification is enabled
handshake... OK
TLS version: TLSv1.3
dial up... OK
talk to server... OK
version: 7.10.2
Кластер B
Він схожий на кластер A і може бути налаштований як одновузловий або багатовузловий кластер Wazuh.
Виконати кроки кластера A, щоб згенерувати сертифікати для Wazuh server і вузлів Wazuh indexer кластера B і налаштувати їх. Використовувати унікальні імена вузлів та IP-адреси, призначені для кластера B.
Додавання Wazuh agents до кластерів
Дотримуватись інструкцій з встановлення Wazuh agents, щоб додати Wazuh agents до кластерів A і B. Wazuh agent підключається до Wazuh server у середовищі клієнта A або B.
Налаштування міжкластерного пошуку
Виконати наступні кроки на інформаційній панелі Wazuh, щоб ввімкнути міжкластерний пошук з середовища CCS до віддалених кластерів.
1 ) Увійти на інформаційну панель Wazuh, використовуючи облікові дані для входу:
URL: https://<WAZUH_DASHBOARD_IP>
Username: admin
Password: admin
2 ) Обрати “☰”> “Indexer management” > “DevTools” і виконати наступний API виклик, щоб з’єднати середовище CCS з віддаленими кластерами Wazuh на порту 9300:
Примітка: Додати ім’я вузла Wazuh indexer для кластерів A і B до секції «cluster.remote», а їхні відповідні IP-адреси – до секції «seeds».
PUT _cluster/settings
{
"persistent": {
"cluster.remote": {
"ca-wazuh-indexer-1": {
"seeds": ["192.168.10.101:9300"]
},
"cb-wazuh-indexer-1": {
"seeds": ["192.168.20.101:9300"]
}
}
}
}
Outputs
{
"acknowledged": true,
"persistent": {
"cluster": {
"remote": {
"cb-wazuh-indexer-1": {
"seeds": [
"192.168.20.101:9300"
]
},
"ca-wazuh-indexer-1": {
"seeds": [
"192.168.10.101:9300"
]
}
}
}
},
"transient": {}
}
3 ) Перевірити підключення віддалених кластерів, виконавши наступний виклик API:
Примітка: Змінити виділене ім’я Wazuh indexer, щоб воно відповідало кластеру, який тестується.
GET ca-wazuh-indexer-1:wazuh-alerts-*/_search
Outputs
{
"took": 833,
"timed_out": false,
"_shards": {
"total": 6,
"successful": 6,
"skipped": 0,
"failed": 0
},
"_clusters": {
"total": 1,
"successful": 1,
"skipped": 0
},
"hits": {
"total": {
"value": 221,
"relation": "eq"
},
"max_score": 1,
"hits": [
{
"_index": "ca-wazuh-indexer-1:wazuh-alerts-4.x-2024.08.25",
"_id": "BZ40i5EB-SZRRdc_oF6H",
"_score": 1,
"_source": {
"predecoder": {
"hostname": "ccs",
"program_name": "systemd",
"timestamp": "Aug 25 21:22:35"
},
"agent": {
"name": "cluster-a",
"id": "000"
},
"manager": {
"name": "cluster-a"
},
"rule": {
"firedtimes": 1,
"mail": false,
"level": 5,
"description": "Systemd: System time has been changed.",
"groups": [
"local",
"systemd"
],
"id": "40705",
"gpg13": [
"4.3"
],
"gdpr": [
"IV_35.7.d"
]
},
"decoder": {
"name": "systemd"
},
"full_log": "Aug 25 21:22:35 ccs systemd: Time has been changed",
"input": {
"type": "log"
},
"@timestamp": "2024-08-25T20:22:37.091Z",
"location": "/var/log/messages",
"id": "1724617357.562701",
"timestamp": "2024-08-25T21:22:37.091+0100"
}
},
...
Налаштування шаблону індексу wazuh-alerts-*
1 ) Обрати “☰” > “Dashboard management” > “Index patterns” і вибрати “Create index pattern“, щоб додати шаблони індексів для віддалених кластерів.
2 ) Додати ім’я шаблону індексу у форматі *:wazuh-alerts-* і натиснути “Next step“. Шаблон ‘*‘ відповідає всім індексаторам у віддалених Wazuh clusters.
3 ) Обрати “timestamp” як основне “time field“.
4 ) Обрати “Create index pattern“, щоб створити паттерн.
5 ) Обрати “☰” > “Dashboard management” > “App Settings” > “General” і встановити шаблон індексу за замовчуванням для сповіщень на *:wazuh-alerts-* у полі “Index pattern”
6 ) Обрати шаблон індексу *:wazuh-alerts-* і перемкнути API між кластером A і B, щоб переглядати сповіщення з обох віддалених кластерів.

Налаштування шаблону індексу wazuh-states-vulnerabilities*
1 ) Обрати “☰” > “Dashboard management” > “Dashboard management” > “Index patterns” і вибрати “Create index pattern“, щоб додати шаблони індексів для віддалених кластерів.
2 ) Додати ім’я шаблону індексу у форматі *:wazuh-states-vulnerabilities-* і натиснути кнопку “Next step“. Символ підстановки ‘*‘ відповідає всім індексаторам у віддалених кластерах Wazuh.
3 ) Вибрати “package.installed” як основне “time field”. Це покаже, коли було встановлено вразливий пакунок.
4 ) Обрати “Create index pattern“, щоб створити паттерн.
5 ) Обрати “☰” > “Dashboard management” > “App Settings” > “Vulnerabilities” та встановити шаблон індексу для вразливостей за замовчуванням на *:wazuh-states-vulnerabilities-* у полі “Index pattern“.

Рекомендації
Нижче наведено кілька рекомендацій щодо покращення загальної безпеки та продуктивності.
- Переконатися, що між середовищем CCS і віддаленими кластерами Wazuh існує швидке мережеве з’єднання.
- Архітектуру CCS можна масштабувати як одно-, так і багатовузлову.
- Зберігати файли root-ca.key та root-ca.pem у безпечному місці для подальшого використання та видалити їх з усіх вузлів після генерації сертифікатів.
- Видалити файл wazuh-certificates.tar, виконавши rm -f ./wazuh-certificates.tar, якщо на вузлі не потрібно встановлювати інші компоненти Wazuh.
- Змінити пароль admin за замовчуванням, дотримуючись документації з управління паролями.
- Налаштувати політику збереження індексів, щоб видалити старі індекси з Wazuh indexer, щоб звільнити місце у сховищі. Це необхідно для управління сховищем через реплікацію і накопичення індексів на вузлах Wazuh indexer.
Висновок
Wazuh пропонує уніфіковане уявлення про безпеку в декількох організаціях, дозволяючи запитувати дані логів і оповіщення про безпеку з віддалених кластерів Wazuh за допомогою міжкластерного пошуку (Cross-Cluster Search, CCS). Такий підхід дозволяє ефективно відстежувати та реагувати на події безпеки в декількох розгортаннях Wazuh.
Крім того, керування кількома кластерами Wazuh за допомогою міжкластерного пошуку сприяє масштабованості та збереженню даних поблизу джерела логів. Це дозволяє контролювати доступ до подій і логів безпеки організації, а також надавати доступ стороннім організаціям для перегляду їхніх сповіщень про загрози безпеки.







