Con il termine packet ci riferiamo a dei dati che viaggiano tra i vari sistemi: per poter navigare in internet, per esempio, inviamo e riceviamo continue informazioni dal e sul nostro pc. Un packet sniffer allora è un programma che ci permette di analizzare questo tipo di dati.
Tempo fa ti avevo parlato di Wireshark che è un Network general sniffer, oggi ho pensato di dare un’occhiata a Snort dal simpatico logo maialesco.
Snort, infatti, è ben più di un semplice sniffer: è un IDS (Intrusion Detection System), ovvero un sistema in grado di rilevare tentativi di intrusione o attività sospette all’interno di una rete. Questo lo rende uno strumento potentissimo per amministratori di sistema e professionisti della sicurezza informatica, ma anche un ottimo punto di partenza per chi sta iniziando a esplorare il mondo della network security.
A differenza di Wireshark, che è pensato principalmente per l’analisi manuale del traffico, Snort lavora in tempo reale e può essere configurato per reagire automaticamente a determinati pattern o minacce. È in grado di riconoscere firme specifiche (detti rules, cioè regole) associate a virus, attacchi di tipo DDoS, tentativi di scanning e molto altro. Queste regole possono essere scritte a mano o scaricate da repository ufficiali e community specializzate.
Una delle caratteristiche più interessanti di Snort è la sua flessibilità: può essere usato in tre modalità principali:
- Sniffer Mode – In questa modalità, Snort si comporta proprio come un packet sniffer classico, mostrando in tempo reale i pacchetti che attraversano l’interfaccia di rete.
- Packet Logger Mode – Snort registra i pacchetti su file, permettendo un’analisi successiva. Utile per chi vuole raccogliere dati per auditing o investigazioni post-evento.
- Network Intrusion Detection System Mode (NIDS) – Questa è la modalità più potente, in cui Snort analizza il traffico in tempo reale confrontandolo con un set di regole per identificare attività malevole.
Installazione e utilizzo base
Snort è disponibile per Linux, macOS e Windows, anche se le distribuzioni Linux (come Ubuntu o CentOS) sono sicuramente quelle più usate in ambito professionale.
Per installarlo su una macchina Debian/Ubuntu, è sufficiente aprire il terminale e digitare:
sudo apt update
sudo apt install snortDurante l’installazione ti verrà chiesta l’interfaccia di rete da monitorare (es. eth0 o wlan0) e l’indirizzo di rete da proteggere.
Una volta installato, puoi far partire Snort in modalità sniffer con:
sudo snort -vOppure in modalità IDS specificando una configurazione:
sudo snort -c /etc/snort/snort.conf -i eth0Scrivere una regola personalizzata in Snort
Le regole di Snort si scrivono in un linguaggio semplice e leggibile. Vediamo un esempio base:
alert tcp any any -> 192.168.1.100 80 (msg:"Tentativo di accesso HTTP"; sid:1000001; rev:1;)Cosa fa questa regola?
- alert: dice a Snort di generare un avviso quando la regola viene soddisfatta.
- tcp: si applica solo al traffico TCP.
- any any: sorgente IP e porta qualsiasi.
- ->: direzione del traffico (da sorgente a destinazione).
- 192.168.1.100 80: destinazione IP e porta (in questo caso, il nostro server web locale sulla porta 80).
- msg: messaggio che comparirà nel log.
- sid: ID univoco della regola (Snort rule ID).
- rev: numero di revisione della regola.
Questa regola, quindi, genera un avviso ogni volta che c’è un tentativo di connessione TCP verso la porta 80 del nostro server locale. È un esempio basilare, ma è così che si inizia a costruire un set di regole personalizzate.
Per testarla:
- Aggiungi la regola a un file
.rules, ad esempio:/etc/snort/rules/local.rules - Assicurati che nel file di configurazione
snort.confsia inclusa questa riga:
include $RULE_PATH/local.rules - Avvia Snort in modalità IDS:
sudo snort -A console -q -c /etc/snort/snort.conf -i eth0 - Prova ad aprire un browser e collegarti a
http://192.168.1.100(sostituisci con l’IP corretto).
Analisi di un log di Snort
Quando Snort rileva un evento, lo registra in un log come questo:
[**] [1:1000001:1] Tentativo di accesso HTTP [**]
[Priority: 0]
08/08-10:23:45.123456 192.168.1.50:54321 -> 192.168.1.100:80
TCP TTL:64 TOS:0x0 ID:12345 IpLen:20 DgmLen:60 DF
***A**** Seq: 0x12345678 Ack: 0x87654321 Win: 65535 TcpLen: 20Come leggerlo:
- [1:1000001:1] → ID della regola (sid 1000001, rev 1)
- “Tentativo di accesso HTTP” → messaggio definito nella regola
- 192.168.1.50:54321 -> 192.168.1.100:80 → IP e porta sorgente/destinazione
- TCP TTL, Seq, Ack, Win → parametri TCP del pacchetto
In questo caso, vediamo che un client (IP 192.168.1.50, porta 54321) ha tentato una connessione HTTP al nostro server (192.168.1.100, porta 80). Se non ci aspettavamo questo tipo di traffico o proveniva da una macchina sospetta, questo log potrebbe essere un primo segnale da investigare.
Risorse utili e strumenti a supporto
Per ottenere il massimo da Snort, è utile sapere che esistono numerose fonti da cui scaricare regole già pronte, aggiornate e mantenute dalla community o da enti ufficiali. Il punto di riferimento principale è:
Registrandoti gratuitamente, puoi accedere a regole aggiornate quotidianamente, suddivise per categorie (malware, scansioni, attacchi web, ecc.). Queste regole possono essere facilmente integrate nel tuo sistema Snort.
PulledPork
Uno strumento molto comodo per gestire automaticamente le regole è PulledPork. Si occupa di scaricarle, organizzarle e mantenerle aggiornate, risparmiandoti noiose operazioni manuali.
Con PulledPork puoi:
- Scaricare le regole dal sito di Snort (o Emerging Threats)
- Gestire whitelist/blacklist
- Disabilitare regole specifiche
- Integrazione facile con Snort.conf
Installazione tipica (su sistemi Debian/Ubuntu):
sudo apt install pulledporkDovrai poi configurare il file pulledpork.conf con il tuo oinkcode (una sorta di chiave API che ricevi da Snort.org) e il percorso delle regole.
Snorby
Un altro strumento interessante è Snorby, un’interfaccia web che permette di visualizzare e gestire gli alert di Snort in maniera molto più comoda rispetto ai semplici file di log.
Con Snorby puoi:
- Visualizzare grafici e statistiche degli alert
- Filtrare per priorità, tipo, IP, ecc.
- Assegnare e commentare gli eventi (utile in team)
Tuttavia, è bene sapere che Snorby è un progetto meno attivo negli ultimi anni. In alternativa, si possono considerare soluzioni moderne come Security Onion (una distribuzione completa per il monitoraggio della sicurezza che include Snort, Suricata, Kibana, Elasticsearch e altro).
🔍 Snort 2 vs Snort 3: cosa cambia?
Snort 2 è stato per anni lo standard di riferimento nel mondo IDS open source, ma con l’arrivo di Snort 3, Cisco ha introdotto una riscrittura completa del motore per adattarsi alle nuove sfide della sicurezza di rete.
Ecco le principali differenze tra Snort 2 e Snort 3:
| Caratteristica | Snort 2.x | Snort 3.x |
|---|---|---|
| 🛠 Architettura | Monolitica | Modulare e plug-in based |
| 📜 Sintassi regole | Classica, semplice | Nuova sintassi più espressiva (Lua-like) |
| ⚡ Prestazioni | Buone | Migliorate grazie a un’elaborazione multithread |
| 🧱 IPS (inline mode) | Possibile, ma richiede configurazioni extra | Supportato nativamente |
| 🧩 Modularità | Limitata | Elevata: i componenti si possono abilitare/disabilitare |
| 🔧 Configurazione | File .conf classici | Struttura a blocchi, file .lua |
| 🧠 Learning Mode | Non disponibile | Presente: aiuta a generare regole in base al traffico |
| 🔄 Compatibilità con regole | Regole Snort 2 | Compatibile con regole 2.x + nuova sintassi |
| 🕸 Supporto ufficiale | Ancora supportato ma in fase calante | Attivamente sviluppato |
Quale scegliere?
- ✅ Snort 2 è ancora largamente usato e supportato in molte distribuzioni. Ideale se vuoi iniziare subito con guide e documentazione ampia.
- 🚀 Snort 3 è il futuro della piattaforma. Se stai partendo da zero o vuoi prestazioni migliori e maggior flessibilità, vale la pena provarlo.
🔗 Nota: Puoi scaricare entrambe le versioni da snort.org. Per Snort 3, trovi anche esempi di configurazione e documentazione aggiornata.
Mini-guida: installare Snort 3 su Ubuntu
Passo 1: Prerequisiti
Aggiorna il sistema e installa i pacchetti necessari:
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential libpcap-dev libpcre3-dev libdumbnet-dev bison flex zlib1g-dev libluajit-5.1-dev libssl-dev pkg-configPasso 2: Scarica il codice sorgente di Snort 3
Vai su https://www.snort.org/downloads e scarica l’ultima versione di Snort 3 oppure usa wget per esempio:
wget https://www.snort.org/downloads/snort/snort3-<version>.tar.gz
tar -xzvf snort3-<version>.tar.gz
cd snort3-<version>(Sostituisci <version> con l’ultima versione disponibile.)
Passo 3: Compila e installa
./configure_cmake.sh --prefix=/usr/local/snort
cd build
make
sudo make installPasso 4: Verifica l’installazione
/usr/local/snort/bin/snort -VDovresti vedere la versione di Snort 3 installata.
Esempio di regola Snort 3
Snort 3 usa una sintassi diversa, basata su Lua. Ecco un esempio base per un alert TCP verso la porta 80:
alert tcp any any -> 192.168.1.100 80 (msg:"Tentativo di accesso HTTP Snort3"; sid:1000001; rev:1;)In Snort 3 puoi scrivere regole classiche come questa, ma la nuova sintassi permette configurazioni più avanzate. Un esempio di regola più “moderna” in Snort 3 potrebbe essere:
alert tcp any any -> 192.168.1.100 80 (msg:"Tentativo di accesso HTTP Snort3"; sid:1000002; rev:1; flow:to_server,established;)Inoltre, il file di configurazione usa Lua e permette di abilitare, disabilitare o personalizzare facilmente le regole.
Snort su Windows: considerazioni tecniche
Snort è originariamente sviluppato per sistemi Unix-like, e sebbene sia disponibile una build nativa di Snort 2.x per Windows, questa presenta alcune limitazioni importanti:
- Prestazioni ridotte: L’implementazione Windows soffre di performance inferiori rispetto a Linux, soprattutto in ambienti di rete ad alto traffico, a causa di driver di rete meno efficienti e minore ottimizzazione del sistema.
- Meno strumenti di gestione: Molti tool di supporto e script per l’aggiornamento e la gestione delle regole sono pensati per ambienti Linux/Unix, limitando l’automazione su Windows.
- Supporto di Snort 3 su Windows: Attualmente, non esiste una build ufficiale di Snort 3 compilata nativamente per Windows. Il motore di Snort 3 è progettato con un’architettura modulare che sfrutta librerie e tool tipici di Linux.
Per eseguire Snort 3 su Windows, l’approccio consigliato è tramite Windows Subsystem for Linux (WSL 2), che consente di eseguire un ambiente Linux completo all’interno di Windows 10 o 11 con accesso diretto all’hardware di rete tramite virtualizzazione leggera. Questo permette:
- Installazione e compilazione di Snort 3 come su un sistema Linux nativo.
- Accesso a tutti gli strumenti di gestione, aggiornamento regole e logging.
- Maggior compatibilità con i pacchetti di rete e moduli software.
Nota: L’utilizzo di Snort 3 in WSL richiede la configurazione corretta delle interfacce di rete e delle permessioni di accesso al dispositivo di cattura pacchetti (ad esempio, tramite tcpdump o libpcap).
Per maggiori dettagli sull’installazione di WSL e configurazione di rete, consultare la documentazione ufficiale Microsoft:
https://learn.microsoft.com/en-us/windows/wsl/install
Mini-guida: installare e configurare Snort 3 su WSL 2
Come anticipato, Snort 3 non dispone di una build nativa per Windows, ma è possibile eseguirlo utilizzando Windows Subsystem for Linux 2 (WSL 2). Questa soluzione consente di avere un ambiente Linux completo all’interno di Windows, con supporto per le librerie e i driver necessari per Snort.
Ecco una mini-guida passo passo per configurare Snort 3 su WSL 2:
1. Abilitare WSL 2 su Windows 10/11
Apri PowerShell come amministratore e lancia:
wsl --installSe WSL è già installato, assicurati che la versione sia 2:Se WSL è già installato, assicurati che la versione sia 2:
wsl --set-default-version 2Riavvia il sistema se richiesto.
2. Installare una distribuzione Linux (es. Ubuntu)
Dal Microsoft Store, installa Ubuntu (versione LTS consigliata).
Avvia Ubuntu e crea un utente.
3. Aggiornare il sistema e installare dipendenze
Dentro Ubuntu, esegui:
sudo apt update && sudo apt upgrade -y
sudo apt install -y build-essential libpcap-dev libpcre3-dev libdumbnet-dev bison flex zlib1g-dev libluajit-5.1-dev libssl-dev pkg-configScaricare e compilare Snort 3
wget https://www.snort.org/downloads/snort/snort3-<version>.tar.gz
tar -xzvf snort3-<version>.tar.gz
cd snort3-<version>
./configure_cmake.sh --prefix=/usr/local/snort
cd build
make
sudo make install(Sostituisci <version> con la versione più recente.)
5. Configurare l’accesso alle interfacce di rete
Snort necessita di accedere alle interfacce per catturare il traffico. Su WSL questo può richiedere configurazioni di rete aggiuntive, poiché l’accesso diretto alle interfacce fisiche può essere limitato. Potresti dover configurare un bridge di rete o utilizzare driver come Npcap su Windows con forwarding verso WSL.
- Installa
tcpdumpolibpcap:
sudo apt install tcpdump- Verifica che l’interfaccia di rete sia visibile (es.
eth0).
Nota: L’accesso diretto a interfacce di rete fisiche può essere limitato da WSL. Per catturare traffico reale potresti dover configurare un bridge di rete o utilizzare strumenti aggiuntivi su Windows (come WinPcap/Npcap) con forwarding.
6. Eseguire Snort 3
Esempio di comando base:
sudo /usr/local/snort/bin/snort -c /usr/local/snort/etc/snort/snort.lua -i eth0Puoi modificare il file snort.lua per personalizzare regole e configurazioni.
Questa configurazione ti permette di sfruttare le funzionalità avanzate di Snort 3 direttamente su una macchina Windows, mantenendo però l’ambiente Linux necessario per una piena compatibilità e performance.
Conclusione
Snort, con le sue regole personalizzabili e la capacità di analizzare il traffico in tempo reale, rappresenta uno strumento potente per la difesa delle reti. Nonostante possa sembrare un po’ spartano rispetto a interfacce grafiche come quella di Wireshark, la sua vera forza è nella flessibilità e nel controllo totale sul monitoraggio della rete.
Che tu stia iniziando adesso o voglia rafforzare la sicurezza della tua rete, Snort è un alleato solido e potente. Abbinato a regole aggiornate e strumenti di supporto, può offrirti una visione chiara e proattiva di ciò che accade nei tuoi sistemi. Come sempre, la chiave è sperimentare, leggere i log, scrivere regole e… imparare dai pacchetti!
⚡ Questo nodo della rete è alimentato da conoscenza libera e caffeina.
Se hai trovato qualcosa di utile, puoi supportarci con un caffè digitale.
👉 Offrimi un caffè
Powered by Buttondown
