Wazuh – Un’ estensione di OSSEC
Wazuh (3.12 è la versione attuale al momento della scrittura di questo post) è un sistema open source di host based intrusion detection (HIDS) basato su Ossec. Come OSSEC, Wazuh garantisce i necessari controlli di sicurezza, richiesti da standard come PCI DSS, HIPAA, GDPR e altri; fornisce funzionalità di rilevamento delle minacce, gestione della conformità e risposta agli incidenti.
Wazuh include le seguenti funzionalità:
- Security Analytics: permette la raccolta, aggregazione, indicizzazione ed analisi dei dati di sicurezza;
- Intrusion Detection: gli agent effettuano la scansione alla ricerca di malware, rootkit e anomalie sospette;
- Log Data Analysis: gli agent si occupano di leggere i log del sistema operativo e delle applicazioni e inoltrarli verso un manager centralizzato per l’analisi rule-based e la memorizzazione;
- File Integrity Monitoring: grazie al monitoring continuo dei file systems è possibile identificare le modifiche al contenuto, autorizzazioni, proprietà e attributi dei file da monitorare; identifica nativamente gli utenti e le applicazioni utilizzate per la creazione e modifica dei file;
- Vulnerability Detection: gli agent raccolgono i dati di inventario del software e inviano queste informazioni al manager, dove vengono confrontati con i database CVE (Common Vulnerabilities and Exposure) costantemente aggiornati, al fine di identificare le vulnerabilità più conosciute;
- Configuration Assessment: monitora le impostazioni di configurazione del sistema e dell’applicazione per assicurarsi che siano conformi ai criteri di sicurezza, agli standard. Gli agenti eseguono scansioni periodiche per rilevare applicazioni che sono note per essere vulnerabili, senza patch o configurate in modo non sicuro.
- Incident Response: fornisce risposte pro-attive per affrontare le minacce, come ad esempio il blocco dell’accesso a un sistema quando vengono soddisfatti determinati criteri o l’esecuzione di script query da remoto, identificando gli indicatori di compromesso (IOCs – Indicators of Compromise);
- Regulatory Compliance: fornisce alcuni dei controlli di sicurezza necessari per conformarsi agli standard e alle normative del settore; viene spesso utilizzato dalle società di elaborazione dei pagamenti e dalle istituzioni finanziarie per soddisfare i requisiti PCI DSS (Payment Card Industry Data Security Standard); viene utilizzato anche per aiutare a soddisfare i requisiti legati a regolamenti quali GPG13 o GDPR;
- Cloud Security Monitoring e Containers Security: monitorare l’infrastruttura cloud a livello di API, utilizzando moduli di integrazione in grado di estrarre i dati di sicurezza da noti provider cloud, come Amazon AWS, Azure o Google Cloud; offre visibilità sulla sicurezza degli host e dei container Docker, monitorandone il comportamento e rilevando minacce, vulnerabilità e anomalie.
Il vantaggio principale rispetto ad OSSEC è quello di interagire in maniera nativa con lo Stack Elastic e OpenSCAP, grazie all’utilizzo delle API.
OpenSCAP è un interprete OVAL (Open Vulnerability Assessment Language) e XCCDF (Extensible Configuration Checklist Description Format) utilizzato per controllare la configurazione e scovare le vulnerabilità.
Le API di Wazuh sono RESTful based e forniscono un’interfaccia per gestire e monitorare la configurazione di manager e agent; possono essere utilizzate per registrare gli agent, controllare i messaggi di log, dei decoders e delle regole del manager e per fornire informazioni dettagliate sugli agent (lo stato, il dettaglio del sistema operativo, degli alert collegati all’integrity monitoring e rootcheck).
L’installazione e la configurazione sono identici a quella di OSSEC; utilizzeremo come base una distribuzione CentOS 8.1 e i repository di Wazuh per facilitare l’installazione e i futuri aggiornamenti.
Dopo aver effettuato un’installazione minimal di CentOS 8.1, aver disabilitato selinux, il sistema di firewalld (NEGLI AMBIENTI IN CUI QUESTO È CONSENTITO), installiamo il repository:
# rpm --import https://packages.wazuh.com/key/GPG-KEY-WAZUH # cat > /etc/yum.repos.d/wazuh.repo <<\EOF [wazuh_repo] gpgcheck=1 gpgkey=https://packages.wazuh.com/key/GPG-KEY-WAZUH enabled=1 name=Wazuh repository baseurl=https://packages.wazuh.com/3.x/yum/ protect=1 EOF
Installiamo Wazuh Manager (OSSEC Server), Wazuh API ed avviamo i servizi:
# yum -y install wazuh-manager # yum -y install nodejs npm # yum -y install wazuh-api # systemctl enable --now wazuh-manager # systemctl enable --now wazuh-api
Installiamo sulla macchina Filebeat (utilizzando il repo fornito da Elastic) per forwardare gli alert e gli archivi ad Elasticsearch:
# rpm --import https://packages.elastic.co/GPG-KEY-elasticsearch # cat > /etc/yum.repos.d/elastic.repo << EOF [elasticsearch-7.x] name=Elasticsearch repository for 7.x packages baseurl=https://artifacts.elastic.co/packages/7.x/yum gpgcheck=1 gpgkey=https://artifacts.elastic.co/GPG-KEY-elasticsearch enabled=1 autorefresh=1 type=rpm-md EOF # yum -y install filebeat
Per la configurazione di filebeat (filebeat.yml, template per gli indici e modulo wazuh di filebeat) utilizzeremo i template forniti da Wazuh:
# curl -so /etc/filebeat/filebeat.yml https://raw.githubusercontent.com/wazuh/wazuh/v3.12.3/extensions/filebeat/7.x/filebeat.yml
# chmod go+r /etc/filebeat/filebeat.yml
# curl -so /etc/filebeat/wazuh-template.json https://raw.githubusercontent.com/wazuh/wazuh/v3.12.3/extensions/elasticsearch/7.x/wazuh-template.json
# chmod go+r /etc/filebeat/wazuh-template.json
# curl -s https://packages.wazuh.com/3.x/filebeat/wazuh-filebeat-0.1.tar.gz | sudo tar -xvz -C /usr/share/filebeat/module
Per la configurazione e l’uso di Filebeat, creeremo due utenti (wazuh_setup e wazuh_writer) come indicato nella guida di Filebeat.
Modifichiamo la configurazione di Filebeat ( /etc/filebeat/filebeat.yml ), per indicare il server Elastic e le credenziali per accedere:
output.elasticsearch: hosts: ["192.168.xxx.xxx:9200"] username: "wazuh_writer" password: "wazuh_writer"
Nel file di configurazione, disabilitiamo anche l’overwrite del template e abbassiamo il logging level a warning:
setup.template.overwrite: false logging.level: warning
Creiamo gli indici con gli account dello Stack Elastic che hanno i permessi di farlo ed avviamo Filebeat, Wazuh Manager e Wazuh API
# filebeat setup --index-management \ -E output.elasticsearch.username=wazuh_setup \ -E output.elasticsearch.password=wazuh_setup_password # systemctl enable --now wazuh-manager # systemctl enable --now wazuh-api # systemctl enable --now filebeat
Sul server Kibana, installiamo l’app plugin di Wazuh; dopo aver creato il repository di Wazuh come visto precedentemente:
# cd /usr/share/kibana
# sudo -u kibana bin/kibana-plugin install https://packages.wazuh.com/wazuhapp/wazuhapp-3.12.3_7.6.2.zip
Incrementiamo l’heap size di Kibana per garantire l’installazione del plugin e riavviamo Kibana
# cat >> /etc/default/kibana << EOF NODE_OPTIONS="--max_old_space_size=2048" EOF # systemctl restart kibana
Per l’installazione di un agent, possiamo operare esattamente come fatto precedentemente con l’agent di OSSEC; occore considerare che l’agent di OSSEC è perfettamente compatibile con quello di Wazuh, per cui possiamo solo modificare l’indirizzo IP a cui il client di collega e provvedere nuovamente alla registrare del client. L’ agent può essere installato anche utilizzando il repo:
# WAZUH_MANAGER="192.168.xxx.xxx" yum install wazuh-agent
Per registrare il client sul server, abbiamo 3 possibilità:
- in modo manuale (utilizzando CLI)
- in modo semiautomatico, utlizzando le API
- in modo automatico (utilizzando il registration service – con o senza password – , con il manager con verifica SSL o con l’agent verification – con o senza host validation).
Abbiamo visto come registrare un client utilizzando CLI; proviamo a registrare un client tramite CLI utilizzando le API e procedendo direttamente dal client; ricordiamoci che l’utente di default (che dovremo provvedere a cambiare) per le API è username=foo e password=bar
- aggiungiamo l’agent (ip=192.168.0.10 ) al manager (ip=192.168.0.100):
# curl -u foo:bar -k -X POST -d '{"name":"ubuntu-20.04","ip":"192.168.0.10"}' -H 'Content-Type:application/json' "https://192.168.0.100:55000/agents?pretty" { "error": 0, "data": { "id": "001", "key": "MDAxIE5ld0FnZW50IDEwLjAuMC44IDM0MGQ1NjNkODQyNjcxMWIyYzUzZTE1MGIzYjEyYWVlMTU1ODgxMzVhNDE3MWQ1Y2IzZDY4M2Y0YjA0ZWVjYzM=" } }
- importiamo la key:
# /var/ossec/bin/manage_agents -i MDAxIE5ld0FnZW50IDEwLjAuMC44IDM0MGQ1NjNkODQyNjcxMWIyYzUzZTE1MGIzYjEyYWVlMTU1ODgxMzVhNDE3MWQ1Y2IzZDY4M2Y0YjA0ZWVjYzM=
- Abilitiamo e avviamo l’agent
# systemctl enable --now wazuh-agent
A questo punto la nostra installazione di Wazuh (Server, API e Agents) è effettuata; cominciamo a vedere l’interfaccia in Kibana
← OSSEC – Installazione agents
2 Comments
Mail Server: openSUSE, Postfix, Dovecot, MariaDB e Squirrel Mail – Part 1 – Anthesia.NET · 25/07/2021 at 16:12
[…] di sicurezza da adottare per rendere il FS sicuro; un buon accorgimento sarà quello di utilizzare Wazuh quale HIDS per analizzare e bloccare in realtime eventuali tentativi di intromissioni nel […]
Wazuh 4.3 released - Anthesia.NET · 12/05/2022 at 16:31
[…] principali funzionalità offerte da Wazuh in tema di sicurezza sono […]
Comments are closed.