# 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. --- ## 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: ```bash curl -fsSL https://repo.argosdefense.io/tecnotel/argos-setup/raw/branch/main/bootstrap.sh | sudo bash ``` 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 > ``` ### B.3 Web Installer — wizard in 6 step 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: ```bash 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" ``` 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). A ARGOS installato, la console su `https://172.25.0.5` deve mostrare i conteggi eventi dal SIEM: è la conferma che backend ↔ indexer comunicano. --- ## Opzioni certificato SSL (console ARGOS) - **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). --- ## Hardening consigliato (post bring-up) - **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). --- ## 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 | ## Repository correlati - [`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). ## Versioning Questo repository segue lo stesso schema di versioning di `argos` (SemVer tag `vX.Y.Z`).