Wazuh – Instalace a konfigurace

Pojďme si společně ukázat jak nainstalovat a nastavit OpenSource security platformu Wazuh, která integruje SIEM a XDR do jedinečného řešení.

Co nás čeká?

  • Wazuh indexer
  • Wazuh manager (server)
  • Wazuh dashboard
  • Wazuh agents

Wazuh indexer

Přípravné práce

Začneme tím, že na cílovém serveru povolíme všechny porty potřebné pro chod Wazuh, a to jak ty, které se týkají syslog serveru nebo registrace a komunikace agentů, tak i port pro webové rozhraní.

Pomocí příkazů níže všechny tyto porty přidáme do vyjímek na firewallu:

firewall-cmd --permanent --add-port={514,443,1514,1515,1516,55000}/tcp
firewall-cmd --permanent --add-port={514,1514}/udp
firewall-cmd --reload

V tuto chvíli máme splněny základní požadavky pro chod Wazuh indexeru.

Stáhneme si tedy nástroj dodávaný přímo Wazuhem, který nám na serveru vygeneruje všechny potřebné certifikáty pro zabezpečenou šifrovanou komunikaci mezi všemi Wazuh komponenty.

curl -sO https://packages.wazuh.com/4.4/wazuh-certs-tool.sh

A následně také konfigurační soubor config.yml, který nám bude sloužit jako předpis pro vytvoření jednotlivých certifikátů.

curl -sO https://packages.wazuh.com/4.4/config.yml

Certifikáty a nastavení

Tento konfigurační soubor si otevřete a potřebné hodnoty do něj vyplňte, dle požadavků vaší infrastruktury.

nano ./config.yml

Pro demonstrační účely používáme v naší ukázce instalaci tzv. all-in-one, tedy tak, že všechny komponenty Wazuh jsou nainstalovány na jednom serveru.

Obsah tohoto vzorového konfiguračního souboru je tedy na našem případě následující:

nodes:
  indexer:
    - name: wazuh-demo
      ip: 192.168.91.15

  server:
    - name: wazuh-demo
      ip: 192.168.91.15

  dashboard:
    - name: wazuh-demo
      ip: 192.168.91.15

Soubor uložíme a spustíme stažený skript, který vygeneruje certifikáty dle tohoto konfiguračního souboru.

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

Vygenerované certifikáty se automaticky objeví ve složce wazuh-certificates.

Tyto certifikáty budeme pro pokračování instalačního procesu pochopitelně potřebovat a tak je pro snadnou přenositelnost mezi případnými jednotlivými nody zkomprimujeme do archivu:

tar -cvf ./wazuh-certificates.tar -C ./wazuh-certificates/ .

V dalším kroku ověříme, že máme nainstalovaný balíček coreutils a případně ho tedy i nainstalujeme.

yum install coreutils

Nyní naimportujeme RPM klíč pro oficiální Wazuh repozitář:

rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH

A manuálně vytvoříme soubor s údaji k tomuto repozitáři v cestě /etc/yum.repos.d/wazuh.repo a uložíme ho s následujícím obsahem:

[wazuh]
name=EL-$releasever - Wazuh
baseurl=https://packages.wazuh.com/4.x/yum/
gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH
gpgcheck=1
enabled=1
protect=1

Instalace

Následně tedy můžeme překročit k instalaci balíčku samotné komponenty Wazuh indexer.

yum install wazuh-indexer

Po dokončení instalace balíčku wazuh-indexer si otevřeme implicitně dodaný konfigurační soubor /etc/wazuh-indexer/opensearch.yml a vyplníme ho údaji o rozložení našich uzlů ve Wazuh clusteru.

Vzhledem k tomu, že v naší ukázce používáme typ instalace all-in-one, pak toto v nastavení zohledníme v následujících konfiguračních direktivách.

Ostatní nastavení můžeme ponechat ve výchozím stavu a soubor uložíme.

network.host: "192.168.91.15"
node.name: "wazuh-demo"
cluster.initial_master_nodes:
  "wazuh-demo"
cluster.name: "wazuh-custer"

Nyní je potřeba nasadit na každý jeden node v clusteru (v našem případě máme pro ukázku pouze jeden) naše předem vygenerované certifikáty, a to následovně.

Vytvoříme si složku ve standardní cestě, kde budou certifikáty umístěny.

mkdir /etc/wazuh-indexer/certs

A do tohoto umístění rozbalíme potřebné certifikáty pod správnými názvy, a to z archivu, ve kterém se nacházejí.

tar -xf ./wazuh-certificates.tar -C /etc/wazuh-indexer/certs/ ./indexer.pem ./indexer-key.pem ./admin.pem ./admin-key.pem ./root-ca.pem

Certifikátům, i složce, ve které jsou certifikáty umístěny nastavíme správná vlastnictví a oprávnění.

chown -R wazuh-indexer:wazuh-indexer /etc/wazuh-indexer/certs
chmod 500 /etc/wazuh-indexer/certs
chmod 400 /etc/wazuh-indexer/certs/*

Pro potřeby inicalizace Wazuh clusteru s novými certifikáty musí systémová služba již běžet.

Nastavíme jí proto automatické spouštění po startu a zároveň ji rovnou i spustíme.

systemctl daemon-reload
systemctl enable wazuh-indexer --now

V dalším kroku spustíme dodaný skript, který nám cluster s novými certifikáty zinicializuje, tedy přidá základní konfigurační soubory a s těmi cluster spustí.

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

V posledním kroku otestujeme funkčnost Indexeru. Nejprve, zda API indexeru korektně odpovídá:

curl -k -u admin:admin https://wazuh-demo.lab.initmax.cz:9200

Korektní výsledek s odpovědí API, která nám vrátí základní informace o clusteru vypadá v našem vzorovém scénáři následovně.

Následujícím příkazem si můžeme zobrazit například seznam jednotlivých uzlů v clusteru (v našem případě je pouze jeden):

curl -k -u admin:admin https://wazuh-demo.lab.initmax.cz:9200/_cat/nodes?v

Pokud Wazuh indexer API správně odpovídá, pak máme tuto komponentu prozatím hotovou a můžeme přikročit k instalaci Wazuh manageru.

Wazuh manager (server)

Jelikož repozitáře máme už přidané z předchozích kroků, tak pouze stáhneme a nainstalujeme příslušný instalační balíček:

yum -y install wazuh-manager

Nastartujeme systémovou službu a nastavíme jí automatické spouštění po startu.

systemctl daemon-reload
systemctl enable wazuh-manager --now

Ověříme si, že služba korektně běží.

systemctl status wazuh-manager

Wazuh manager zpracovává parsované logy na základě jednotlivých, námi nastavených pravidel a ty pak ukládá do souboru.

Z těchto souborů je vyzvedává filebeat, který si nyní také nainstalujeme.

yum -y install filebeat

Následujícím příkazem si stáhneme základní konfiguraci pro filebeat z oficiálního repozitáře Wazuh:

curl -so /etc/filebeat/filebeat.yml https://packages.wazuh.com/4.4/tpl/wazuh/filebeat/filebeat.yml

V tomto konfiguračním souboru v cestě /etc/filebeat/filebeat.yml upravíme v sekci output.elasticsearch: podsekci hosts: tak, aby reflektovala IP adresu zdrojového Indexeru.

V našem případě tedy následovně:

output.elasticsearch:
  hosts: ["192.168.91.15:9200"]

Následně pak vytvoříme keystore pro filebeat:

filebeat keystore create

Do vytvořeného filebeat keystore přidáme přihlašovací údaje pro uživatele admin.

Pozor: Toto rozhodně není z bezpečnostního hlediska doporučovaný postup a slouží zde pouze pro demonstrační účely, protože zadávané heslo je viditelné v historii příkazů!

echo admin | filebeat keystore add username --stdin --force
echo admin | filebeat keystore add password --stdin --force

V dalším kroku si z oficiálního repozitáře Wazuh stáhneme základní šablonu pro filebeat a nastavíme jí správná oprávnění.

Tato šablona slouží jako předpis, který filebeat zašle Indexeru, a na základě kterých se následně data ukládají a označují tak, aby s nimi filebeat mohl efektivně pracovat a Wazuh dále zpracovávat.

curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/4.4/extensions/elasticsearch/7.x/wazuh-template.json
chmod go+r /etc/filebeat/wazuh-template.json

Stáhneme a nainstalujeme Wazuh modul pro filebeat:

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

Jako poslední krok konfigurace filebeat pak opět nainstalujeme předpřipravené certifikáty do správných cest a se správnými oprávněními:

mkdir /etc/filebeat/certs
tar -xf ./wazuh-certificates.tar -C /etc/filebeat/certs/ ./filebeat.pem ./filebeat-key.pem ./root-ca.pem
chmod 500 /etc/filebeat/certs
chmod 400 /etc/filebeat/certs/*
chown -R root:root /etc/filebeat/certs

V tuto chvíli již můžeme službu spustit a nastavit jí i automatické spouštění po startu systému.

systemctl daemon-reload
systemctl enable filebeat --now

Po úspěšném spuštění služby filebeat můžeme základní funkčnost otestovat následujícím příkazem:

filebeat test output

V případě, že je všechno v pořádku, pak korektní výstup tohoto příkazu vypadá v našem testovacím scénáři takto:

elasticsearch: https://192.168.91.15:9200...
  parse url... OK
  connection...
    parse host... OK
    dns lookup... OK
    adresses: 192.168.91.15
    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
    

Toto jsou veškeré kroky, pro úspěšnou instalaci a základní konfiguraci Wazuh manageru a nyní se můžeme zaměřit na instalaci Wazuh dashboardu.

Wazuh dashboard

Nejprve nainstalujeme potřebné knihovny.

yum install libcap

Vzhledem k naší vzorové instalaci „all-in-one“ máme repozitáře už přidané z předchozích kroků, takže už pouze stáhneme a nainstalujeme příslušný instalační balíček:

yum -y install wazuh-dashboard

Po dokončení instalace upravíme konfigurační soubor /etc/wazuh-dashboard/opensearch_dashboards.yml tak, aby věděl o všech stranách clusteru.

V našem ukázkovém příkladu bude nutné změnit hodnoty těchto dvou konfiguračních direktiv, a to následovně:

server.host: 192.168.91.15
opensearch.hosts: https://192.168.91.15:9200

Po uložení konfiguračního souboru opět přistoupíme k instalaci předpřipravených certifikátů a nastavíme jim správná oprávnění.

mkdir /etc/wazuh-dashboard/certs
tar -xf ./wazuh-certificates.tar -C /etc/wazuh-dashboard/certs/ ./dashboard.pem ./dashboard-key.pem ./root-ca.pem
chmod 500 /etc/wazuh-dashboard/certs
chmod 400 /etc/wazuh-dashboard/certs/*
chown -R wazuh-dashboard:wazuh-dashboard /etc/wazuh-dashboard/certs

A nezbývá než službu Wazuh-dashboard nastartovat a povolit jí automatické spouštění po startu.

systemctl daemon-reload
systemctl enable wazuh-dashboard --now

V tuto chvíli máme nainstalovány všechny komponenty Wazuh a můžeme se přihlásit do jeho webového rozhraní, v našem případě na url https://192.168.91.15/.

Wazuh agents

Ověřování heslem

Implicitně je Wazuh manager nastaven tak, že zaregistruje jakékoliv agenta, který se mu přihlásí.

Což není z bezpečnostních ani provozních důvodů zcela záhodno, a proto na úrovni serveru nastavíme nutnost ověřování jednotlivých agentů heslem.

To můžeme udělat i ve webovém rozhraní, a to v sekci Management -> Configuration.

Tip: Tento konfigurační soubor můžeme editovat i přímo na souborovém systému Wazuh manageru, a to v cestě /var/ossec/etc/ossec.conf pomocí svého oblíbeného textového editoru.

Zde zvolíme odkaz Edit configuration.

Tento odkaz nám umožní ručně editovat konfigurační XML soubor ossec.conf, což je konfigurace Wazuh manageru, a to přímo ve webovém rozhraní.

V tomto konfiguračním souboru je nutné v sekci <auth> nastavit direktivu <use_password> na hodnotu yes.

Následně je třeba na úrovni operčního systému vytvořit soubor obsahující heslo, které bude Manager ověřovat při registraci agentů.

Tento soubor vytvoříme ve standardní cestě, tedy /var/ossec/etc/authd.pass, bez jakýchkoliv jiných znaků do něj vložíme registrační heslo a soubor uložíme.

nano /var/ossec/etc/authd.pass

Pozor: V současné chvíli se pracuje na efektivnějším a hlavně bezpečnějším systému uložení ověřovacího hesla (např. keystore), a v novějších verzích se tak tento krok může lišit!

Nyní můžeme přistoupit k samotné konfiguraci serveru.

Nastavení manageru

Nejprve zapneme detekci zranitelností, tedy tomto stejném konfiguračním souboru v sekci <vulnerability_detector> změníme direktivu <enabled> na hodnotu yes, viz níže.

...
<vulnerability_detector>
  <enabled>yes</enabled>
...

A ve stejné sekci <vulnerability_detector> zároveň povolíme provider pro konkrétní operační systémy, v našem případě je to CentOS.

Povolíme tedy provider pro RedHat:

...
<vulnerability_detector>
...
  <provider name="redhat">
    <enabled>yes</enabled>
...

Pomocí tlačítka Save zkontrolujeme validitu námi upraveného souboru a soubor uložíme.

Po úspěšném uložení souboru je následně třeba zrestartovat Wazuh manager pomocí tlačítka Restart Manager.

Tuto akci pak potvrdíme tlačítkem Confirm v následujícím dialogovém okně.

Tip: Zrestartovat Manager pochopitelně můžeme i restartováním jeho systémové služby na úrovni operačního systému.

systemctl restart wazuh-manager

Jako poslední krok je pak doporučeno vygenerovat pro Wazuh nová hesla namísto implicitních, což provedeme následujícím příkazem.

Výstupem tohoto příkazu jsou pak právě nově vygenerovaná, silná hesla.

/usr/share/wazuh-indexer/plugins/opensearch-security/tools/wazuh-passwords-tool.sh --change-all --admin-user wazuh --admin-password wazuh

Přidání agenta

Jednotlivé agenty doporučujeme rozřazovat do skupin, například podle typu serveru, anebo podle operačního systému, jako je tomu v našem případě.

Skupiny si můžete vytvořit v sekci Management -> Groups pomocí tlačítka Add new group.

Přidat nové agenty pak můžeme ve formuláři v menu Agents na úrovni webového rozhraní.

Instalace agenta

Samotnou instalaci agenta pak provedeme zkopírováním příkazu, vygenerovaného tímto formulářem, na cílovém serveru.

Pozor: Wazuh agent nesmí být nainstalován na serveru, kde běží Manager a tato komponenta samotná nám tuto instalaci kvůli konfliktům ani nepovolí!

Protože nechceme, aby naše registrační heslo bylo součástí historie příkazů v shellu, tak ho prozatím ponecháme s nabízenými hvězdičkami.

sudo WAZUH_MANAGER='192.168.91.15' WAZUH_REGISTRATION_PASSWORD='******' WAZUH_AGENT_GROUP='linux' WAZUH_AGENT_NAME='centos-agent' yum install -y https://packages.wazuh.com/4.x/yum/wazuh-agent=4.4.1-1.x86_64.rpm

Po úspěšné instalaci agenta otevřeme soubor, obsahující registrační heslo.

Hvězdičky ručně změníme na správné heslo a soubor uložíme.

nano /var/ossec/etc/authd.pass

A jako poslední krok službu spustíme a zapneme její spouštění po startu systému.

systemctl daemon-reload
systemctl enable wazuh-agent --now

Součástí procesu spouštění této služby na Wazuh agentu proběhne základní bezpečnostní audit a sken zranitelností.

Na Wazuh manager se z agenta pošlou veškeré potřebné informace o jeho operačním systému, agent se oproti serveru zaregistruje a následně i přidá pro další analýzu.

Stejným způsobem pak přidáváme i další jednotlivé agenty.

V tuto chvíli máme úspěšně nainstalované a funkční všechny centrální komponenty Wazuh, a to včetně jejich základní konfigurace a přidání jednoho vzorového agenta.