WAZUH Piattaforma open source per la sicurezza aziendale

Ciao nuovamente a tutti,

eccomi nuovemnte con un nuvo articolo dedicato alla scurezza informatica aziendale.

Nell’ultimo articolo abbiamo visto come configurare un ottimo sistema honeypot utilizzando la piattaforma opensource T-Pot.

Oggi invece vi voglio parare di Wazuh, altra fantastica piattaforma opn source dedicata pero’ alla sicurezza interna dei propri server, siano questi  sistemi operativi come Linux, Windows, macOS, Solaris, AIX e HP-UX.  Wazuh potrebbe essere adatto acnhe a monitorare lo stato di sicurezza dei vostri endpoint.

Ma cos’e’ Wazuh? Wazuh è una piattaforma che svolge le funzionalità di Intrusion Detection e datalog, attraverso un agente, scansiona il sistema monitorato alla ricerca di malware, rootkit e anomalie sospette. Può rilevare file nascosti, processi nascosti o listener di rete non registrati, nonché incoerenze nelle risposte alle chiamate di sistema. Oltre alle funzionalità dell’agente, il componente server utilizza un approccio basato sulla firma per il rilevamento delle intrusioni, utilizzando il suo motore di espressione regolare per analizzare i dati di registro raccolti e cercare indicatori di compromissione.

Perche’ utilizzare Wazuh

Le ragioni principali della scelta di Wazuh sono:

oltre ad essere una piattaforma open source, Wazuh fornisce una soluzione di sicurezza informatica di alta qualità per tutti i tipi di utenti, con un supporto e un’innovazione continui;
consente scalabilità e integrazione con altri strumenti;
offre molteplici opzioni di monitoraggio dell’integrità dei file, la ricerca e l’analisi dei log, il rilevamento delle vulnerabilità;
Wazuh monitora le impostazioni di configurazione del sistema e dell’applicazione per assicurarsi che siano conformi ai criteri di sicurezza e agli standard;
consente controlli di configurazione che possono essere personalizzati, adattandoli per allinearli correttamente con l’organizzazione. Include, inoltre, raccomandazioni per una migliore configurazione, riferimenti e mappatura con conformità normativa.

Ma ora passiamo ai fatti, la guida si basa su Rocky Linux 9.3, come avrete capito dai mie post mi baso spesso su piattaforme basate su RedHat, niente di discriminatoria ispetto ad altre, ma le ritengo insieme a Debian le milgiori distro lato server, visto l’elevata longevita’ nel tempo.

La specifica d’ambiente:

Come gia’ detto sopra utilizzaimo qui una VM “su Proxmox” basata su RockyLinux 9.3 minimal, con le seguenti specifiche:

  • CPU – 3,4 Ghz (2 core)
  • Memoria : 8GB
  • HDD : 60 GB
  • Sistema operativo – Rocky Linux versione 9.3 (Blue Onyx)
  • Nome host : wazuh-01.miodominio.lan
  • Indirizzo IP – 10.100.1.30/24

Dopo aver installato il sistema operativo, effettuato gli opportuni aggiornamenti e riavviato il tutto, impostiamo il nome host FQDN (Fully Qualified Domain Name) per la macchina in quesione.

# hostnamectl set-hostname wazuh-01.miodominio.lan
# echo “10.100.1.30 wazuh-01 wazuh-01.miodominio.lan” >> /etc/hosts

Installiamo ora i prerequisiti software Wazuh eseguendo il comando dnf.

# dnf install -y coreutils chkconfig tar libcap

Creare certificati di sicurezza:

Per crittografare la comunicazione tra i componenti Wazuh, è necessario creare i certificati di sicurezza necessari.

Il sito ufficiale di Wazuh fornisce uno script bash per questo scopo. Puoi scaricare lo script e il relativo file di configurazione con l’aiuto del comando curl.

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

Modifichiamo ora il file config.yml utilizzando l’editor di testo nano o vim a vostra discrezione.

# nano config.yml

Individuiamo e impostiamo le seguenti direttive in questo file.

nodes:
# Wazuh indexer nodes
indexer:
– name: wazuh-01
ip: 10.100.1.30

# Wazuh server nodes
# If there is more than one Wazuh server
# node, each one must have a node_type
server:
– name: wazuh-01
ip: 10.100.1.30

# Wazuh dashboard nodes
dashboard:
– name: dashboard
ip: 10.100.1.30

Qui stiamo installando il server Wazuh su un singolo nodo, quindi aggiungiamo solo un nome host e un indirizzo IP. Tuttavia, in caso di configurazione Multinodo, è necessario aggiungere tutti i nodi del cluster Wazuh in questo file.

Eseguiamo poi lo script bash per generare certificati di sicurezza Wazuh.

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

output:
04/08/2023 21:15:41 INFO: Admin certificates created.
04/08/2023 21:15:41 INFO: Wazuh indexer certificates created.
04/08/2023 21:15:43 INFO: Wazuh server certificates created.
04/08/2023 21:15:44 INFO: Wazuh dashboard certificates created.

Utilizziamo il comando tar per creare un archivio della cartella dei certificati di sicurezza.

# tar -cvf ./wazuh-certificates.tar -C ./wazuh-certificates/ .
output
./
./root-ca.key
./root-ca.pem
./admin-key.pem
./admin.pem
./wazuh-01-key.pem
./wazuh-01.pem
./dashboard-key. pem
./dashboard.pem

Rimuoviamo la cartella dei certificati di sicurezza con l’aiuto del comando rm .

# rm -rf ./wazuh-certificates

Installazione del repository Wazuh Yum:

I componenti software Wazuh per il sistema operativo Linux basato su Red Hat sono disponibili tramite il loro repository ufficiale yum.

Per installare il repository Wazuh yum sul server Rocky Linux, prima di tutto dobbiamo importare la chiave GPG di quel repository.

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

Eseguiamo il seguente comando Linux per installare il repository Wazuh yum.

Creiamo poi una cache yum per i repository yum appena installati.

# echo -e ‘[wazuh]ngpgcheck=1ngpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUHnenabled=1nname=EL-$releasever – Wazuhnbaseurl=https://packages.wazuh.com/4 .x/yum/nprotect=1’ | tee /etc/yum.repos.d/wazuh.repo

il repository e’ stato creato, per verificare accediamo al file con
# nano /etc/yum.repos.d/wazuh.repo
dovremmo vedere questo contenuto

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

diamo poi il comando
# dnf makecache

se il nostro repository e’ ok dovremmo visualizzare questo output

Rocky Linux 9 – BaseOS 1.4 kB/s | 4.1 kB 00:03
Rocky Linux 9 – AppStream 3.3 kB/s | 4.5 kB 00:01
Rocky Linux 9 – Extras 1.6 kB/s | 2.9 kB 00:01
EL-9 – Wazuh 941 kB/s | 16 MB 00:17
Metadata cache created.

bene ora possiamo passare all’installazione vvera e porpia.

Installazione di Wazuh Index:

Installiamo Wazuh Indexer su Rocky Linux con l’aiuto del comando dnf

# dnf -y install wazuh-indexer

Accediamo ora al file di configurazione con il nostro editor preferito

# nano /etc/wazuh-indexer/opensearch.yml

Individuiamo e impostiamo le seguenti direttive in questo file.

network.host: “10.100.1.30”
node.name: “wazuh-01”
cluster.initial_master_nodes:
– “wazuh-01”
plugins.security.nodes_dn:
– “CN=wazuh-01,OU=Wazuh,O=Wazuh,L=California,C=US”

Distribuiamo ora i certificati di sicurezza su Wazuh Indexer, che abbiamo creato nel passaggio precedente.

# export NODE_NAME=wazuh-01
# 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

Abilitiamo il servizio e avviamo Wazuh indexer

# systemctl enable –now wazuh-indexer

output

Synchronizing state of wazuh-indexer.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable wazuh-indexer
Created symlink /etc/systemd/system/multi-user.target.wants/wazuh-indexer.service → /usr/lib/systemd/system/wazuh-indexer.service.

Wazuh Indexer utilizza la porta di servizio 9200/tcp per la comunicazione, pertanto è necessario consentire questa porta nel firewall Linux.

# firewall-cmd –permanent –add-port=9200/tcp
success

# firewall-cmd –reload
success

Eseguiamo lo script indexer-security-init.sh su qualsiasi nodo dell’indicizzatore Wazuh per caricare le informazioni sui nuovi certificati e avviare il cluster a nodo singolo o multi-nodo.

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

**************************************************************************
** 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 10.100.1.30:9200 … done
Connected as “CN=admin,OU=Wazuh,O=Wazuh,L=California,C=US”
OpenSearch Version: 2.6.0
Contacting opensearch cluster ‘opensearch’ and wait for YELLOW clusterstate …
Clustername: wazuh-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

Eseguiamo il comando seguente per confermare che l’installazione di Wazuh ha avuto esito positivo.

# curl -k -u admin:admin https://wazuh-01.miodominio.lan:9200

{
“name” : “wazuh-01”,
“cluster_name” : “wazuh-cluster”,
“cluster_uuid” : “OYd3dDQ5QUmoGfN0QQ1uxQ”,
“version” : {
“number” : “7.10.2”,
“build_type” : “rpm”,
“build_hash” : “7203a5af21a8a009aece1474446b437a3c674db6”,
“build_date” : “2023-02-24T18:57:04.388618985Z”,
“build_snapshot” : false,
“lucene_version” : “9.5.0”,
“minimum_wire_compatibility_version” : “7.10.0”,
“minimum_index_compatibility_version” : “7.0.0”
},
“tagline” : “The OpenSearch Project: https://opensearch.org/”
}

Installare Wazuh Manager

Installiamo ora Wazuh Manager sul server usando sempre comando dnf.

# dnf install  wazuh-manager

Abilitiamo e avviamo il servizio Wazuh Manager.

# systemctl enable –now wazuh-manager

output
Synchronizing state of wazuh-manager.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable wazuh-manager
Created symlink /etc/systemd/system/multi-user.target.wants/wazuh-manager.service → /usr/lib/systemd/system/wazuh-manager.service.

Wazuh Manager utilizza le porte 1514/tcp e 1515/tcp per la comunicazione con gli agenti Wazuh. Pertanto, è necessario consentire entrambe le porte nel firewall Linux.

# firewall-cmd –permanent –add-port={1514,1515}/tcp
success

# firewall-cmd –reload
success

Installiamo il software Filebeat con l’aiuto del seguente comando.

# dnf install  filebeat

Scarichiamo il file di configurazione di esempio per il software Filebeat.

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

Apriamo il file di configurazione Filebeat nel nostro editor.

# nano /etc/filebeat/filebeat.yml

Troviamo e impostiamo la seguente direttiva al suo interno.

host: [“10.100.1.30:9200”]

Creiamo un archivio chiavi Filebeat per archiviare in modo sicuro le credenziali di autenticazione.

# filebeat keystore create
output
Created filebeat keystore

Aggiungiamo il nome utente e la password predefiniti admin/admin al keystore segreto.

# echo admin | filebeat keystore add username –stdin –force
Successfully updated the keystore

# echo admin | filebeat keystore add password –stdin –force
Successfully updated the keystore

Scarichiamo il modello di avvisi per l’indicizzatore Wazuh.

# 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

Installiamo il modulo Wazuh per Filebeat.

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

Distribuiamo nuovamente i certificati di sicurezza sul server Wazuh, che abbiamo creato precedentemente.

# export NODE_NAME=wazuh-01
# 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

Abilitiamo e avviamo il servizio Filebeat

# systemctl enable –now filebeat
output
Synchronizing state of filebeat.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable filebeat
Created symlink /etc/systemd/system/multi-user.target.wants/filebeat.service → /usr/lib/systemd/system/filebeat.service.

Eseguiamo il comando seguente per verificare che Filebeat sia installato correttamente.

# filebeat test output

output
elasticsearch: https://192.168.18.83:9200…
parse url… OK
connection…
parse host… OK
dns lookup… OK
addresses: 192.168.18.83
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

Installazione della dashboard di Wazuh:

Installiamo Wazuh Dashboard sul server con il comando dnf

# dnf install -y wazuh-dashboard

Apriamo la configurazione della dashboard Wazuh con il nostro editor.

# nano /etc/wazuh-dashboard/opensearch_dashboards.yml

Troviamo e impostiamo le seguenti direttive in questo file.

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

Anche qui Distribuiamo i certificati di sicurezza sulla dashboard di Wazuh.

# export NODE_NAME=wazuh-01
# 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

Abilitiamo e avviamo il servizio della dashboard

# systemctl enable –now wazuh-dashboard.service
output
Created symlink /etc/systemd/system/multi-user.target.wants/wazuh-dashboard.service → /etc/systemd/system/wazuh-dashboard.service.

Wazuh Dashboard funziona sulla porta 443/tcp . Pertanto, consentiamo questa porta di servizio nel firewall Linux.

# firewall-cmd –permanent –add-service=https
success

# firewall-cmd –reload
success

Inseriamo un record nel nostro DNS aziendale con nome Wazuh-01 e accediamo al nostro server di sicurezza, apriamo un browser e digitiamo

https://wazuh-01.miodominio.lan

ci apparira’ la schermata di login in cui inseriremo le credenziali admin/admin

Siamo ora nella dashboard di Wazuh

Installazione dell’agente Wazuh:

Al momento non vedrete nessun agente nella dashboard di Wazuh. È necessario aggiungerne uno eseguendo i passaggi seguenti.

Ammettiamo di voler installare l’agente su una macchina Linux.

L’agente Wazuh utilizza script di tipo SysV per avviare/arrestare i suoi servizi. Pertanto, è necessario installare il pacchetto chkconfig sulla tua macchina Linux.

Siamo oa su una macchina di esempio linux come Fedora installiamo i pacchetti necessari al nostro agent

# dnf install chkconfig

Eseguiamo il comando seguente per scaricare e installare il software Wazuh Agent.

# WAZUH_MANAGER=’10.100.1.30′ yum install -y https://packages.wazuh.com/4.x/yum/wazuh-agent-4.4.5-1.x86_64.rpm

Nel comando precedente, puoi modificare l’indirizzo IP WAZUH_MANAGER in base al tuo ambiente.

Abilitiamo e avviamo Wazuh Agent

# systemctl enable –now wazuh-agent
output
Synchronizing state of wazuh-agent.service with SysV service script with /usr/lib/systemd/systemd-sysv-install.
Executing: /usr/lib/systemd/systemd-sysv-install enable wazuh-agent
Created symlink /etc/systemd/system/multi-user.target.wants/wazuh-agent.service → /usr/lib/systemd/system/wazuh-agent.service.

Eseguiamo un refresh della dashboard

L’agente Wazuh è stato distribuito sulla macchina Linux e ora sta inviando le metriche pertinenti al tuo server Wazuh.

bene e’ tutto e ‘ stata un po lunga ma ci siamo riusciti; spero di esservi stato utile.

Un saluto

Adam

Pubblicato da appuntidiadam

Sistemista informatico, e grande appasionato di astronomia e fisica, ricercatore indipendente in cosmologia

Lascia un commento

Il tuo indirizzo email non sarà pubblicato. I campi obbligatori sono contrassegnati *

Questo sito usa Akismet per ridurre lo spam. Scopri come i tuoi dati vengono elaborati.