2026-04-20 10:28:40 +02:00
|
|
|
|
# ARGOS SOC — Setup & Installer
|
|
|
|
|
|
|
|
|
|
|
|
Tecnotel Servizi SRL — [www.tecnotelsrl.com](https://www.tecnotelsrl.com)
|
|
|
|
|
|
|
|
|
|
|
|
Repository pubblico contenente l'installer di prima fase e il Web Setup Wizard di ARGOS SOC.
|
|
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
---
|
2026-04-20 14:27:10 +02:00
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
## Architettura di riferimento: due VM sulla stessa VNet
|
|
|
|
|
|
|
|
|
|
|
|
ARGOS è la console SOC; **Wazuh/OpenSearch** è il SIEM che fa da normalizzatore e
|
|
|
|
|
|
store degli eventi. Il deployment standard è su **due VM Ubuntu 24.04 LTS** nella
|
|
|
|
|
|
**stessa VNet**: ARGOS interroga l'indexer Wazuh esclusivamente sull'**IP privato**,
|
|
|
|
|
|
nessun traffico SIEM transita su Internet.
|
|
|
|
|
|
|
|
|
|
|
|
```
|
|
|
|
|
|
VNet privata (es. 172.25.0.0/16)
|
|
|
|
|
|
┌────────────────────────────┐ ┌────────────────────────────┐
|
|
|
|
|
|
│ VM ARGOS │ │ VM WAZUH (SIEM) │
|
|
|
|
|
|
│ 172.25.0.5 │ 9200 │ 172.25.0.4 │
|
|
|
|
|
|
│ Flask + React + analytics │─────▶│ Indexer/OpenSearch │
|
|
|
|
|
|
│ console SOC :443 │ https│ Manager :1514/1515 │
|
|
|
|
|
|
│ web installer :8888 (temp) │ │ Syslog :514 │
|
|
|
|
|
|
└────────────────────────────┘ └────────────────────────────┘
|
|
|
|
|
|
▲ ▲
|
|
|
|
|
|
│ :443 (console) │ :514 / :1514 (log apparati/agenti)
|
|
|
|
|
|
tuo ufficio / VPN firewall, switch, endpoint
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
ARGOS si connette all'indexer in **HTTPS + Basic auth** e tollera il certificato
|
|
|
|
|
|
self-signed di Wazuh (verifica TLS disattivata lato client): non serve importare
|
|
|
|
|
|
alcuna CA per il primo bring-up.
|
|
|
|
|
|
|
|
|
|
|
|
### Matrice porte
|
|
|
|
|
|
|
|
|
|
|
|
| Servizio | VM | Porta | Sorgente consentita |
|
|
|
|
|
|
|---|---|---|---|
|
|
|
|
|
|
| Indexer / OpenSearch | Wazuh | 9200/tcp | **solo IP privato ARGOS** |
|
|
|
|
|
|
| Manager (agenti) | Wazuh | 1514/1515/tcp | VNet interna |
|
|
|
|
|
|
| Syslog (firewall/switch) | Wazuh | 514/udp+tcp | sorgenti interne / VNet |
|
|
|
|
|
|
| API Wazuh | Wazuh | 55000/tcp | localhost (ARGOS non la usa) |
|
|
|
|
|
|
| Dashboard Wazuh (opzionale) | Wazuh | 443/tcp | tuo IP ufficio (o disabilitata) |
|
|
|
|
|
|
| Console ARGOS | ARGOS | 443/tcp | tuo IP ufficio / VPN |
|
|
|
|
|
|
| Web installer ARGOS (temporaneo) | ARGOS | 8888/tcp | tuo IP ufficio (chiusa a fine setup) |
|
|
|
|
|
|
| SSH | entrambe | 22/tcp | solo IP admin |
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Prerequisiti
|
|
|
|
|
|
|
|
|
|
|
|
- Due VM **Ubuntu 24.04 LTS** (24.04 o 26.04 supportate), accesso root (sudo).
|
|
|
|
|
|
- **Sizing minimo** per VM: 2 vCPU / 8 GB RAM / 50 GB disco. Per la VM Wazuh sono
|
|
|
|
|
|
consigliati 4 vCPU / 16 GB e un disco da 128–256 GB (il DB vulnerabilità si espande
|
|
|
|
|
|
a ~7,5 GB in import: sotto i 50 GB l'installazione si corrompe).
|
|
|
|
|
|
- **IP privati statici** su entrambe le NIC (in Azure: allocazione *Static*).
|
|
|
|
|
|
- Connettività in uscita verso `repo.argosdefense.io` (codice/aggiornamenti) e
|
|
|
|
|
|
`license.argosdefense.io` (licenze/heartbeat) dalla VM ARGOS.
|
|
|
|
|
|
- Una **licenza ARGOS** valida emessa da Tecnotel per il `machine_id` della VM ARGOS.
|
|
|
|
|
|
|
|
|
|
|
|
> In tutta la guida si usano come esempio: **Wazuh `172.25.0.4`**, **ARGOS `172.25.0.5`**,
|
|
|
|
|
|
> VNet `172.25.0.0/16`. Sostituisci con i tuoi valori reali.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# Parte A — Installazione Wazuh (VM `172.25.0.4`)
|
|
|
|
|
|
|
|
|
|
|
|
### A.1 Network Security Group (Azure)
|
|
|
|
|
|
|
|
|
|
|
|
Apri l'indexer **solo verso l'IP privato di ARGOS**, mai pubblico. Le altre porte
|
|
|
|
|
|
SIEM restano interne alla VNet. SSH/dashboard solo dal tuo IP ufficio.
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
RG=il-tuo-resource-group
|
|
|
|
|
|
NSG=nsg-wazuh
|
|
|
|
|
|
ARGOS_PRIV_IP=172.25.0.5
|
|
|
|
|
|
VNET_CIDR=172.25.0.0/16
|
|
|
|
|
|
MY_OFFICE_IP=203.0.113.5 # il tuo IP pubblico ufficio
|
|
|
|
|
|
|
|
|
|
|
|
# Indexer 9200: SOLO da ARGOS
|
|
|
|
|
|
az network nsg rule create -g $RG --nsg-name $NSG -n allow-indexer-argos \
|
|
|
|
|
|
--priority 200 --access Allow --protocol Tcp --direction Inbound \
|
|
|
|
|
|
--source-address-prefixes ${ARGOS_PRIV_IP}/32 --destination-port-ranges 9200
|
|
|
|
|
|
|
|
|
|
|
|
# Agenti/syslog: dalla VNet interna
|
|
|
|
|
|
az network nsg rule create -g $RG --nsg-name $NSG -n allow-siem-vnet \
|
|
|
|
|
|
--priority 210 --access Allow --protocol Tcp --direction Inbound \
|
|
|
|
|
|
--source-address-prefixes $VNET_CIDR --destination-port-ranges 1514 1515 514
|
|
|
|
|
|
|
|
|
|
|
|
# SSH dal solo IP admin
|
|
|
|
|
|
az network nsg rule create -g $RG --nsg-name $NSG -n allow-ssh-admin \
|
|
|
|
|
|
--priority 220 --access Allow --protocol Tcp --direction Inbound \
|
|
|
|
|
|
--source-address-prefixes $MY_OFFICE_IP --destination-port-ranges 22
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### A.2 Installazione (all-in-one Wazuh 4.14)
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
sudo timedatectl set-timezone Europe/Rome
|
|
|
|
|
|
sudo apt update && sudo apt -y upgrade
|
|
|
|
|
|
sudo hostnamectl set-hostname wazuh
|
|
|
|
|
|
|
|
|
|
|
|
# Verifica la serie corrente su packages.wazuh.com se il download dà 404
|
|
|
|
|
|
curl -sO https://packages.wazuh.com/4.14/wazuh-install.sh
|
|
|
|
|
|
sudo bash ./wazuh-install.sh -a
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
L'assistente (10–15 min) installa indexer + manager + dashboard + filebeat, genera i
|
|
|
|
|
|
certificati con l'IP privato già nel SAN e stampa a fine corsa **User: admin / Password: …**.
|
|
|
|
|
|
|
|
|
|
|
|
### A.3 Tuning per 8 GB di RAM
|
|
|
|
|
|
|
|
|
|
|
|
L'installer assegna 4 GB di heap all'indexer: su una VM da 8 GB è troppo. Abbassa a 2 GB:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
sudo sed -i 's/^-Xms4g/-Xms2g/; s/^-Xmx4g/-Xmx2g/' /etc/wazuh-indexer/jvm.options
|
|
|
|
|
|
sudo systemctl restart wazuh-indexer
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
La **dashboard Wazuh non è necessaria** in un deployment ARGOS (la console SOC è ARGOS,
|
|
|
|
|
|
che interroga OpenSearch direttamente). Su 8 GB conviene disabilitarla:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
sudo systemctl disable --now wazuh-dashboard
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### A.4 Credenziali e verifica servizi
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
sudo tar -xf wazuh-install-files.tar
|
|
|
|
|
|
sudo grep -E "indexer_(username|password)" wazuh-install-files/wazuh-passwords.txt
|
|
|
|
|
|
sudo systemctl --no-pager status wazuh-indexer wazuh-manager filebeat | grep -E "●|Active:"
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### A.5 Verifica binding indexer
|
|
|
|
|
|
|
|
|
|
|
|
L'all-in-one imposta di norma `network.host` sull'IP privato. Controlla:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
grep -E "network.host|network.publish_host" /etc/wazuh-indexer/opensearch.yml
|
|
|
|
|
|
sudo ss -ltnp | grep 9200
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Solo se NON è l'IP privato né `0.0.0.0`, correggi e riavvia:
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
sudo sed -i 's/^network.host:.*/network.host: "172.25.0.4"/' /etc/wazuh-indexer/opensearch.yml
|
|
|
|
|
|
sudo systemctl restart wazuh-indexer
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
Se UFW è attivo (su Azure di norma è spento, il controllo è l'NSG):
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
sudo ufw allow from 172.25.0.5 to any port 9200 proto tcp
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
# Parte B — Installazione ARGOS (VM `172.25.0.5`)
|
|
|
|
|
|
|
|
|
|
|
|
### B.1 Network Security Group (Azure)
|
|
|
|
|
|
|
|
|
|
|
|
```bash
|
|
|
|
|
|
RG=il-tuo-resource-group
|
|
|
|
|
|
NSG=nsg-argos
|
|
|
|
|
|
MY_OFFICE_IP=203.0.113.5
|
|
|
|
|
|
|
|
|
|
|
|
# Console ARGOS :443 dal tuo IP ufficio
|
|
|
|
|
|
az network nsg rule create -g $RG --nsg-name $NSG -n allow-console \
|
|
|
|
|
|
--priority 200 --access Allow --protocol Tcp --direction Inbound \
|
|
|
|
|
|
--source-address-prefixes $MY_OFFICE_IP --destination-port-ranges 443
|
|
|
|
|
|
|
|
|
|
|
|
# Web installer :8888 TEMPORANEO (il setup la richiude da solo a fine wizard)
|
|
|
|
|
|
az network nsg rule create -g $RG --nsg-name $NSG -n allow-installer-temp \
|
|
|
|
|
|
--priority 210 --access Allow --protocol Tcp --direction Inbound \
|
|
|
|
|
|
--source-address-prefixes $MY_OFFICE_IP --destination-port-ranges 8888
|
|
|
|
|
|
|
|
|
|
|
|
# SSH dal solo IP admin
|
|
|
|
|
|
az network nsg rule create -g $RG --nsg-name $NSG -n allow-ssh-admin \
|
|
|
|
|
|
--priority 220 --access Allow --protocol Tcp --direction Inbound \
|
|
|
|
|
|
--source-address-prefixes $MY_OFFICE_IP --destination-port-ranges 22
|
|
|
|
|
|
```
|
|
|
|
|
|
|
|
|
|
|
|
### B.2 Bootstrap (one-liner)
|
|
|
|
|
|
|
|
|
|
|
|
Su Ubuntu 24.04/26.04 LTS vergine:
|
2026-04-20 14:27:10 +02:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-05-19 15:43:12 +02:00
|
|
|
|
curl -fsSL https://repo.argosdefense.io/tecnotel/argos-setup/raw/branch/main/bootstrap.sh | sudo bash
|
2026-04-20 14:27:10 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
Il bootstrap scarica il repository, esegue `first-setup.sh` (pacchetti, utente `argos`,
|
|
|
|
|
|
cartelle `/opt/argos`, firewall, nginx temporaneo) e avvia il **Web Installer** su
|
|
|
|
|
|
`http://172.25.0.5:8888`.
|
|
|
|
|
|
|
|
|
|
|
|
> Installazione manuale equivalente:
|
|
|
|
|
|
> ```bash
|
|
|
|
|
|
> sudo apt update && sudo apt install -y git
|
|
|
|
|
|
> git clone https://repo.argosdefense.io/tecnotel/argos-setup.git /opt/argos-setup-pkg
|
|
|
|
|
|
> cd /opt/argos-setup-pkg && sudo bash first-setup.sh
|
|
|
|
|
|
> ```
|
2026-04-20 14:27:10 +02:00
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
### B.3 Web Installer — wizard in 6 step
|
2026-04-20 14:27:10 +02:00
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
Apri `http://172.25.0.5:8888` e segui:
|
|
|
|
|
|
|
|
|
|
|
|
1. **Licenza ARGOS** — il wizard mostra il `machine_id` della VM. Invialo a Tecnotel,
|
|
|
|
|
|
ricevi `license.json`, caricalo.
|
|
|
|
|
|
2. **Informazioni cliente** (nome, dominio, logo, contesto AI opzionale).
|
|
|
|
|
|
3. **Rete & SSL** (hostname/FQDN, certificato: Let's Encrypt / caricamento / autofirmato —
|
|
|
|
|
|
per una VM in VNet senza DNS pubblico usa **autofirmato**).
|
|
|
|
|
|
4. **SIEM (OpenSearch)** — punta all'indexer Wazuh sull'IP privato:
|
|
|
|
|
|
- **URL**: `https://172.25.0.4:9200`
|
|
|
|
|
|
- **Utente**: `admin`
|
|
|
|
|
|
- **Password**: quella recuperata in A.4
|
|
|
|
|
|
5. **Utente admin** della console ARGOS.
|
|
|
|
|
|
6. **Riepilogo & Installazione** — il wizard clona il repository privato `tecnotel/argos`
|
|
|
|
|
|
con il token della licenza, crea il virtualenv, configura i servizi systemd
|
|
|
|
|
|
(`argos-backend/sync/ops/analytics/updater`) e avvia ARGOS.
|
|
|
|
|
|
|
|
|
|
|
|
Al termine il Web Installer si disattiva da solo e la porta 8888 viene chiusa.
|
|
|
|
|
|
Puoi rimuovere la regola NSG temporanea `allow-installer-temp`.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
|
|
|
|
|
## Verifica end-to-end
|
|
|
|
|
|
|
|
|
|
|
|
Dalla VM **ARGOS**, prima del wizard puoi già validare la rete verso il SIEM:
|
2026-04-20 14:27:10 +02:00
|
|
|
|
|
|
|
|
|
|
```bash
|
2026-06-25 18:20:22 +02:00
|
|
|
|
curl -k -u admin:'LA_PASSWORD' https://172.25.0.4:9200
|
|
|
|
|
|
curl -k -u admin:'LA_PASSWORD' "https://172.25.0.4:9200/_cat/indices/wazuh-alerts-*?v"
|
2026-04-20 14:27:10 +02:00
|
|
|
|
```
|
|
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
La prima deve restituire il JSON con `cluster_name`; la seconda elenca gli indici
|
|
|
|
|
|
`wazuh-alerts-*` (o segnala che non ce ne sono ancora — normale su un SIEM appena nato).
|
2026-04-20 10:28:40 +02:00
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
A ARGOS installato, la console su `https://172.25.0.5` deve mostrare i conteggi eventi
|
|
|
|
|
|
dal SIEM: è la conferma che backend ↔ indexer comunicano.
|
2026-04-20 10:28:40 +02:00
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
---
|
2026-04-20 10:28:40 +02:00
|
|
|
|
|
2026-06-25 18:52:33 +02:00
|
|
|
|
# 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 · 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.
|
|
|
|
|
|
|
|
|
|
|
|
---
|
|
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
## Opzioni certificato SSL (console ARGOS)
|
2026-04-20 14:27:10 +02:00
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
- **Let's Encrypt** — automatico, richiede DNS pubblico già puntato alla VM.
|
|
|
|
|
|
- **Certificato esistente** — caricamento `.crt` + `.key` (es. wildcard aziendale, CA interna).
|
|
|
|
|
|
- **Autofirmato** — RSA 4096, validità 10 anni, consigliato per VM in VNet senza DNS
|
|
|
|
|
|
pubblico. I browser segnaleranno il certificato come non attendibile (atteso).
|
2026-04-20 14:27:10 +02:00
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
---
|
2026-05-12 11:20:37 +02:00
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
## Hardening consigliato (post bring-up)
|
2026-05-12 11:20:37 +02:00
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
- **Utente OpenSearch dedicato ad ARGOS** con permessi limitati (read su `wazuh-alerts-*`,
|
|
|
|
|
|
write su `argos-alerts-enriched-*`) al posto dell'`admin` globale.
|
|
|
|
|
|
- **Normalizzazione `data.argos.*`** sul Wazuh manager (decoder + regole canoniche) per i
|
|
|
|
|
|
log dei tuoi apparati (FortiGate, Cisco, ESET): è il cuore dell'architettura ARGOS lato SIEM.
|
|
|
|
|
|
- **Backup** di `/opt/argos/config` e `/opt/argos/data` (la console ARGOS include
|
|
|
|
|
|
Backup & Restore dei file di configurazione).
|
2026-05-12 11:20:37 +02:00
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
---
|
2026-04-20 14:27:10 +02:00
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
## Contenuto del repository
|
|
|
|
|
|
|
|
|
|
|
|
| File | Scopo |
|
|
|
|
|
|
|---|---|
|
|
|
|
|
|
| `bootstrap.sh` | One-liner installer: scarica il repo e avvia first-setup.sh |
|
|
|
|
|
|
| `first-setup.sh` | Installer ambiente base: sistema, utenti, firewall, nginx temp, avvia wizard web |
|
|
|
|
|
|
| `setup_server.py` | Backend Python del Web Installer (porta 8888, self-contained) |
|
|
|
|
|
|
| `setup.html` | Frontend del Web Installer — wizard in 6 step |
|
2026-04-20 10:28:40 +02:00
|
|
|
|
|
|
|
|
|
|
## Repository correlati
|
|
|
|
|
|
|
2026-06-25 18:20:22 +02:00
|
|
|
|
- [`tecnotel/argos`](https://repo.argosdefense.io/tecnotel/argos) — codice runtime di
|
|
|
|
|
|
ARGOS SOC (privato, accessibile solo con licenza).
|
|
|
|
|
|
|
|
|
|
|
|
## Requisiti (sintesi)
|
|
|
|
|
|
|
|
|
|
|
|
- Ubuntu **24.04 LTS** o **26.04 LTS** (verificato dallo script).
|
|
|
|
|
|
- Accesso root (sudo).
|
|
|
|
|
|
- VM ARGOS: connettività in uscita verso `repo.argosdefense.io` e `license.argosdefense.io`;
|
|
|
|
|
|
raggiungibilità dell'indexer Wazuh su `:9200` (IP privato, VNet).
|
|
|
|
|
|
- Wazuh: serie corrente su [packages.wazuh.com](https://packages.wazuh.com) (4.14 al momento).
|
2026-04-20 10:28:40 +02:00
|
|
|
|
|
|
|
|
|
|
## Versioning
|
|
|
|
|
|
|
|
|
|
|
|
Questo repository segue lo stesso schema di versioning di `argos` (SemVer tag `vX.Y.Z`).
|