Stack di monitoraggio della sicurezza di rete basato su ELK + Suricata, orchestrato con Docker Compose.
| Componente | Versione | Funzione |
|---|---|---|
| Elasticsearch | 7.15.0 | Motore di ricerca e analisi distribuito - storage dei log |
| Logstash | 7.15.0 | Pipeline di raccolta ed elaborazione dei log Suricata |
| Kibana | 7.15.0 | Dashboard web per visualizzazione e analisi degli alert |
| Suricata | latest | IDS/IPS - rilevamento intrusioni e analisi traffico di rete |
| Traffic Generator | Alpine | Genera traffico di test verso Kibana |
- Docker
- Docker Compose
- Almeno 4 GB di RAM disponibili (Elasticsearch richiede 512 MB di heap)
# Clona il repository
git clone https://github.com/GiulioSavini/Monitoring-Security-Project.git
cd Monitoring-Security-Project
# Avvia lo stack
docker-compose up -d
# Verifica che tutti i container siano running
docker-compose ps| Servizio | Porta | Protocollo | Descrizione |
|---|---|---|---|
| Elasticsearch | 9200 | HTTP | API REST Elasticsearch |
| Logstash | 5044 | TCP | Input Beats/Logstash |
| Kibana | 5601 | HTTP | Dashboard web |
┌─────────────────┐
│ Suricata │
│ (IDS/IPS) │
└────────┬────────┘
│ eve.json
▼
┌─────────────────┐
│ Logstash │
│ (parse JSON) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Elasticsearch │
│ (storage) │
└────────┬────────┘
│
▼
┌─────────────────┐
│ Kibana │
│ (dashboard) │
└─────────────────┘
- Suricata analizza il traffico di rete e scrive gli alert in
/var/log/suricata/eve.json - Logstash legge
eve.json, parsa il JSON, tagga gli alert e invia a Elasticsearch - Elasticsearch indicizza i dati in indici giornalieri (
suricata-YYYY.MM.dd) - Kibana permette di visualizzare, filtrare e creare dashboard sugli alert
La pipeline Logstash:
- Input: legge
/var/log/suricata/eve.json - Filter: parsa il JSON, aggiunge tag
suricata-alertper gli eventi di tipo alert - Output: invia a Elasticsearch con indice giornaliero
File di configurazione completo di Suricata. Le regole sono montate da /var/lib/suricata/rules/.
Il file emerging.rules.tar.gz contiene le regole Emerging Threats per il rilevamento delle intrusioni.
- Apri http://localhost:5601
- Vai su Discover
- Crea un index pattern:
suricata-* - Filtra per tag
suricata-alertper vedere solo gli alert di sicurezza
# Visualizza i log in tempo reale
docker-compose logs -f suricata
# Verifica stato Elasticsearch
curl http://localhost:9200/_cluster/health?pretty
# Conta gli alert indicizzati
curl http://localhost:9200/suricata-*/_count?pretty
# Ferma lo stack
docker-compose down
# Ferma e rimuovi i volumi (reset completo)
docker-compose down -vMIT License