From f1fe6cd9cae793cbd1dd70fae00e2ef7da02704b Mon Sep 17 00:00:00 2001 From: tecnotel Date: Thu, 25 Jun 2026 18:52:33 +0200 Subject: [PATCH] =?UTF-8?q?docs:=20Parte=20C=20=E2=80=94=20configurazione?= =?UTF-8?q?=20Wazuh=20per=20ARGOS=20(decoder,=20M365/Entra,=20anti-rumore)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 96 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 96 insertions(+) diff --git a/README.md b/README.md index e5cbacc..8e74731 100644 --- a/README.md +++ b/README.md @@ -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à `` syslog 514, i moduli + `` e ``, e il `` 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 +yes +yes +no +``` + +(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 `` e `` 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 · 111000–111199 | syslog 514 | ✅ production | +| Cisco IOS (switch) | switch · 118000–118199 | syslog (vedi nota) | ✅ production | +| Ubiquiti UniFi (WiFi/AP) | wireless · 119200–119299 | syslog 514 | ✅ production | +| QNAP NAS | applications · 120200–120299 | syslog 514 | ✅ production-v1 | +| ESET | endpoint · 116000–116199 | docker `eset-integration` | ✅ production | +| Entra ID | identity · 114000–114099 | wodle `ms-graph` | ✅ production | +| Microsoft 365 | cloud · 113000–113099 | wodle `office365` | ✅ production | +| 3CX | voip · 117000–117099 | 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.