docs: Parte C — configurazione Wazuh per ARGOS (decoder, M365/Entra, anti-rumore)

This commit is contained in:
tecnotel 2026-06-25 18:52:33 +02:00
parent f5aee30d2a
commit f1fe6cd9ca
1 changed files with 96 additions and 0 deletions

View File

@ -239,6 +239,102 @@ dal SIEM: è la conferma che backend ↔ indexer comunicano.
---
# Parte C — Configurazione Wazuh per ARGOS (decoder, M365/Entra, anti-rumore)
A questo punto Wazuh raccoglie, ma non normalizza ancora nel formato canonico
`data.argos.*`. La configurazione completa (decoder/rule per-vendor + moduli cloud +
baseline anti-rumore) **non si scrive a mano**: è versionata nel repo `argos` sotto
`integrazioni/` ed è già documentata in modo autoritativo in
**`integrazioni/installers/README.md`**. Sulla VM ARGOS il path è
`/opt/argos/app/integrazioni/`.
### C.1 Come portare decoder e config sulla VM Wazuh
Due strade equivalenti:
- **Da UI ARGOS**: Impostazioni → Integrazioni SIEM → abilita i vendor in uso →
*Scarica Bundle Completo* → copia lo zip sulla VM Wazuh (`scp`/`sftp`).
- **Dal repo**: copia `/opt/argos/app/integrazioni/` dalla VM ARGOS alla VM Wazuh.
### C.2 Ordine su un Wazuh appena installato (sintesi di `installers/README.md`)
1. **`opensearch-template-patches/install.sh`** — PRIMA di qualsiasi evento. Corregge
il bug Filebeat upstream **#24331** (campi nested di MS Graph/Office365 dichiarati
`keyword` invece di `object` → mapping corrotto). Senza questa patch gli eventi
Entra/M365 passano `wazuh-logtest` ma **non vengono indicizzati**, quindi ARGOS non
li vede. Va **riapplicata dopo ogni upgrade** del manager (il restart re-installa il
template stock).
2. *(solo se gli switch Cisco passano da Graylog)* `gelf-syslog-bridge/install.sh`.
3. **`wazuh-config-template/`**: compila `secrets.env` (tenant/client/secret M365+Entra,
parametri cliente), esegui `render-config.sh`, copia l'`ossec.conf` generato in
`/var/ossec/etc/`. Il template include già `<remote>` syslog 514, i moduli
`<ms-graph>` e `<office365>`, e il `<ruleset>` con `decoder_exclude`/`rule_exclude`
dei decoder stock (Cisco/FortiGate/FortiAuth/Sophos/ESET) così non doppiano i
canonici ARGOS.
4. **`deploy.sh`** — sincronizza i decoder/rule dei vendor abilitati in
`/var/ossec/etc/{decoders,rules}/argos/` (backup + `wazuh-logtest` + rollback
automatico). `sudo bash deploy.sh` (oppure `--dry-run` / `--no-restart`).
5. `sudo systemctl restart wazuh-manager`.
6. Validazione: `sudo /var/ossec/bin/wazuh-analysisd -t` deve uscire 0; `wazuh-logtest`
sui sample deve mostrare i decoder canonici che matchano.
### C.3 Eventi del server stesso (riduzione rumore)
Il template ARGOS imposta già una baseline sobria: **FIM (`syscheck`) disabilitato** sul
manager e `decoder_exclude`/`rule_exclude` per non far scattare i decoder vendor stock.
Su una VM collector da 8 GB conviene tagliare anche il self-monitoring residuo, editando
`/var/ossec/etc/ossec.conf`:
```xml
<rootcheck><disabled>yes</disabled></rootcheck>
<wodle name="syscollector"><disabled>yes</disabled></wodle>
<vulnerability-detection><enabled>no</enabled></vulnerability-detection>
```
(Disabilitare `vulnerability-detection` libera anche RAM e i ~7,5 GB di DB import — utile
sugli 8 GB.) Si consiglia di **lasciare attiva la raccolta di `auth.log`** della VM Wazuh:
i tentativi SSH sul SIEM stesso sono eventi che vuoi vedere. Riavvia il manager dopo le
modifiche.
### C.4 Microsoft 365 + Entra ID
- **App Registration** in Entra ID (un'unica app per entrambi):
- Microsoft Graph (permessi *application*): `AuditLog.Read.All`, `Directory.Read.All`,
`SecurityEvents.Read.All` e — avendo **Entra ID P2**`IdentityRiskyUser.Read.All` e
`IdentityRiskEvent.Read.All` (per riskyUsers/riskDetections di Identity Protection).
- Office 365 Management API: `ActivityFeed.Read`.
- **Consenso amministratore** + audit logging abilitato sul tenant.
- Inserisci `tenant_id` / `client_id` / `secret_value` in `secrets.env`: finiscono nei
blocchi `<ms-graph>` e `<office365>` dell'`ossec.conf` generato.
- **Vincolo**: senza lo step C.2.1 (template patch) gli eventi Entra/M365 non si
indicizzano. È il primo controllo da fare se "logtest ok ma zero alert in OpenSearch".
- Nota versione: il bug delle *default rules* MS Graph (#34240) è risolto da **Wazuh
4.14.4**; su installazione fresca ≥ 4.14.4 non serve alcun workaround manuale.
### C.5 Stato per sorgente — stack Tecnotel
| Sorgente | Dominio · range | Canale | Stato registry |
|---|---|---|---|
| FortiGate | firewall · 111000111199 | syslog 514 | ✅ production |
| Cisco IOS (switch) | switch · 118000118199 | syslog (vedi nota) | ✅ production |
| Ubiquiti UniFi (WiFi/AP) | wireless · 119200119299 | syslog 514 | ✅ production |
| QNAP NAS | applications · 120200120299 | syslog 514 | ✅ production-v1 |
| ESET | endpoint · 116000116199 | docker `eset-integration` | ✅ production |
| Entra ID | identity · 114000114099 | wodle `ms-graph` | ✅ production |
| Microsoft 365 | cloud · 113000113099 | wodle `office365` | ✅ production |
| 3CX | voip · 117000117099 | syslog 514 | ⚠️ placeholder (decoder da scrivere) |
Note operative:
- **FortiGate**: syslog free-style → 514. Su FortiOS 7.4.x usa il glob `*PATTERN*`, non il
regex `~` (bug del parser su quella build).
- **Cisco IOS**: il path canonico ARGOS prevede Cisco → Graylog → `gelf-syslog-bridge`
Wazuh. Se i tuoi switch inviano **syslog diretto**, va verificato che il decoder
`cisco-ios` parsi quel formato: in caso contrario o si interpone Graylog, o si adatta il
decoder sui log reali.
- **3CX**: stub nel registry — il decoder canonico va costruito su 3-5 righe di syslog
reali prima di abilitarlo.
---
## Opzioni certificato SSL (console ARGOS)
- **Let's Encrypt** — automatico, richiede DNS pubblico già puntato alla VM.