Test di Suricata 🛡️
📋 Introduzione
Suricata è un motore open source ad alte prestazioni per Network Intrusion Detection (IDS), Intrusion Prevention (IPS) e Network Security Monitoring (NSM), sviluppato e mantenuto dalla Open Information Security Foundation (OISF).
Questo repository mette a disposizione un ambiente chiavi in mano, basato su Docker e Docker Compose, per schierare Suricata in modalità IDS (con opzione IPS) su una rete industriale simulata. Potrai così sperimentare regole di rilevamento personalizzate, generare traffico realistico e visualizzare gli allarmi in tempo reale.
🎯 Scopo
Configurare Suricata in modalità IDS (e IPS, se serve) per proteggere una rete industriale simulata.
🛠️ Caratteristiche principali
- Modalità flessibile: Suricata può funzionare in IDS per il monitoraggio passivo o in IPS inline per bloccare automaticamente il traffico sospetto.
- Regole personalizzate: Definisci e testa firme in
custom.rules
, da semplici scansioni di porte fino ad anomalie di protocolli industriali. - Simulazione del traffico: Gli script nella cartella
scripts/
creano traffico sia legittimo che malevolo, simulando workstation (A, B), host non autorizzati (U) e un nodo attaccante (M). - Architettura modulare: Ogni componente gira in un container dedicato, per estendere facilmente la topologia o sostituire parti con configurazioni più avanzate.
- Visualizzazione in tempo reale: Gli allarmi vengono inviati a Elasticsearch e mostrati in una dashboard Kibana (template inclusi), così da monitorare le rilevazioni e analizzare i trend di traffico.
🌐 Topologia di rete
+-----+ +-----+ +-----+
| A | | B | | U |
+-----+ +-----+ +-----+
\ / /
\ /---------
\ /
+-----+ +-----+
| S | --------- | M |
+-----+ +-----+
⇅ /
.~~~~~~~~~~~. /
.~~ INTERNET ~~.
'~~~~~~~~~~~~~~~~~~~'
- A e B: workstation legittime che generano traffico normale.
- U: host non autorizzato, le cui richieste dovrebbero scatenare allarmi.
- M: macchina malevola che esegue exploit e scansioni.
- S: container Suricata, funge da router e sensore IDS/IPS; il traffico è replicato verso Suricata senza modificare il flusso principale.
🚀 Avvio
-
Costruisci e avvia i container:
make
oppure:
docker-compose up -d --build
-
Apri l’interfaccia grafica:
Vai su http://localhost:3000.
⚙️ Funzionamento
- Cattura dei pacchetti: Suricata sfrutta AF‑Packet o NFQueue in modalità promiscua per replicare tutto il traffico dal router “S”.
- Verifica delle regole: Ogni pacchetto viene confrontato con le firme in
custom.rules
; le corrispondenze generano allarmi (o, in IPS, il blocco del pacchetto). - Ingestione dei log: Allarmi e flussi vengono scritti in JSON su
eve.json
, raccolti da Filebeat e inviati a Elasticsearch tramite Logstash. - Dashboard: Con i template Kibana inclusi puoi esplorare:
- Le firme più attivate
- Mappe di calore degli indirizzi IP
- Andamento temporale degli allarmi
- Suddivisione per protocollo
🧪 Test
Nel container Malicious (M
), esegui gli script .sh
presenti in scripts/
per simulare minacce ICS (fuzzing Modbus/TCP, scansioni di porte, ecc.) e verificare il rilevamento da parte di Suricata.
📊 Dashboard (GUI)
La GUI, disponibile su http://localhost:3000, offre una vista interattiva dei dati di Elasticsearch.
Per configurarla:
- Aggiungi una nuova fonte dati in Elasticsearch:
http://elasticsearch:9200
. - Importa il file JSON della dashboard (cartella
dashboards/
, se presente). - Personalizza i grafici (numero di allarmi, regole principali, volume di traffico).