Snort come ids
SNORT, il re degli IDS liberi
SNORT è un Network based IDS real-time, leggero, con risposta passiva alle intrusioni e con un’elevata accuratezza nel rilevamento delle intrusioni. Questo IDS ha caratteristiche real-time, in quanto è in continuo ascolto sul segmento di rete a cui è stato assegnato ed è in grado di contattare l’amministratore di sistema attraverso molteplici meccanismi come Syslog. La leggerezza di SNORT dipende da due fattori:
- L’efficienza nella scansione dei pacchetti, dal momento che usa poche risorse di sistema;
- Le dimensioni dei sorgenti del NIDS.
La semplicità del tool e la sua struttura modulare hanno fatto in modo che non dovesse mai essere reimplementato o modificato per poter identificare nuove tipologie di attacco. Inoltre, la linearità di scrittura delle regole ed il basso livello di rete in cui opera lo rendono uno strumento particolarmente duttile, anche come tool di analisi per attacchi sconosciuti.
SNORT può esaminare i protocolli più diffusi, può individuare una varietà di attacchi e di probes, così come buffer overflow, port scanning, attacchi CGI e probes SMB. Guardando i file di log si riesce a determinare a quale tipo di attacco si è stati soggetti. Ricordate, un uso efficace di meccanismi di logging è fondamentale per la sicurezza del vostro sistema, con o senza IDS.
Altra caratteristica importante di questo NIDS è la portabilità; i sistemi operativi su cui si può installare SNORT sono: Linux, OpenBSD, FreeBSD, NetBSD, Solaris, SunOS 4.1.X, HP-UX, AIX, IRIX, Tru64 (tutti sistemi Unix like), MacOS (su sistemi Macintosh), Win32 (Win9x/NT/XP e 2000). Una volta installato SNORT, si possono scaricare ed installare gratuitamente i file di regole aggiornati regolarmente.
Questi file comprendono tutte le regole per riconoscere una serie di attacchi già noti, ma nessuno vieta di crearvi un proprio file di regole se avete esigenze specifiche. Ultima particolarità, non marginale, di questo IDS è il suo rilascio sotto licenza GNU/GPL, che ha permesso, e permette, ad un nutrito gruppo di sviluppatori di contribuire al suo perfezionamento.
Le regole di SNORT
Una regola è una precisa sequenza di istruzioni che permette di istruire l’IDS, consentendogli così di riconoscere attacchi ed anomalie nella rete. Ogni regola è scritta in un’unica riga, infatti, il parser (cioè il componente che interpreta le regole) di SNORT non è in grado di riconoscere le regole scritte su più righe. Ogni regola è composta da due sezioni distinte:
- Header (intestazione);
- Options (opzioni).
La prima sezione comprende le azioni delle regole: protocollo, indirizzo IP (di origine e di destinazione) e le informazioni relative alle porte. La seconda sezione, options, contiene invece i messaggi di alert e le informazioni su quali parti dei pacchetti devono essere analizzate per determinare se le regole di azione devono essere eseguite. Esempio di una tipica regola per SNORT è il seguente:
alert tcp any any -> 192.168.61.190/23 (content: "Last login"; msg: "Attenzione: tentativo di connessione via telnet alla macchina!";)
questa regola indica a SNORT di mostrare un messaggio di avvertimento se viene individuato del traffico TCP, proveniente da qualsiasi porta e da qualsiasi IP, che tenti di stabilire una connessione sulla porta 23 all’indirizzo 192.168.61.190. Non è scopo di questo articolo analizzare dettagliatamente la sintassi delle regole di SNORT, ma da questo piccolo esempio si può comprendere la facilità e la flessibilità usata nella creazione delle regole. La genialità di SNORT, quindi, sta proprio nella semplicità della sintassi delle regole; in pochi secondi potete creare regole ad hoc e renderle operative, senza spendere un solo euro.
Modalità operative di SNORT
SNORT è un programma dalla mille risorse, non funziona solo ed esclusivamente come NIDS, può operare in tre diverse modalità:
- SNORT come IDS: SNORT può essere posizionato tra il firewall, che controlla una rete, e la linea Internet non sicura, analizzando in questo modo sia il traffico diretto al firewall, sia il traffico nella rete controllata. Il piccolo sistema di firme, di cui è dotato, offre un tool di alerting per gli amministratori quando vengono individuate delle attività sospette;
- SNORT come packet sniffer: il programma è capace di ispezionare il carico dei pacchetti sulla rete, decodificando il livello di applicazione di un pacchetto e catalogando il traffico basato su un determinato contenuto di dati;
- SNORT come packet logger: SNORT può anche effettuare il log dei pacchetti, da linea di comando, indirizzati ad una specifica macchina inviando direttamente alert a video. Uno dei più grandi vantaggi è che SNORT effettua il logging in formato leggibile.
Installazione di SNORT
Passiamo adesso all’installazione di SNORT. Scaricate l’archivio compresso, dell’ultima versione di SNORT, dal sito del progetto; al momento della stesura dell’articolo è la 2.6.1.5. Assumete l’identità di root e decomprime il pacchetto usando i comandi gzip e tar da linea di comando:
# gzip -d -c snort-2.6.1.5.tar.gz | tar xf -
successivamente, spostatevi nella directory appena creata dalla decompressione del pacchetto:
# cd snort-2.6
ed avviate il comando configure con:
# ./configure
L’operazione eseguita dall’utility configure sarà quella di determinare tutte le caratteristiche e gli attributi del vostro sistema per generare un appropriato Makefile. Una volta terminata la configurazione bisogna compilare i file partendo dalle informazioni raccolte precedentemente con il comando configure; per far questo digitiamo il comando:
# make
infine, per installare i file binari e le guide del programma eseguiamo:
# make install
Tutto qui, come avete visto non c’è nulla di difficile nell’installazione di SNORT. Un ultimo consiglio, anche se lo spazio occupato dall’eseguibile è di pochi bytes, è preferibile installare SNORT su una macchina ad esso dedicata, con nessun altro servizio attivo.
Uso di SNORT
SNORT non è difficile da usare, tuttavia l’uso non è sempre tanto immediato. Il tutto sta nello scegliere, in maniera appropriata, quali parametri dare in input a SNORT per renderlo efficiente.
Figura 1: I comandi di Snort

Leggendo la guida del NIDS potrete conoscere le tantissime opzioni offerte dal programma (figura 1), ma per comodità riporto un breve elenco delle opzioni più importanti ed usate:
- -A alert-mode effettua un alert usando uno specifico alert-mode (fast, full, none, unsock). Fast scrive gli alert sul file di alert di default in una singola linea; full scrive gli alert sul file di alert decodificando completamente l’header; none disabilita gli alert; unsock è una modalità che manda gli alert su socket UNIX;
- -a mostra i pacchetti arp quando vengono decodificati;
- -b effettua il log dei pacchetti in formato tcpdump;
- -c “rules-file” usa il file di regole nel percorso indicato in rules-file;
- -C stampa solamente i caratteri del payload del pacchetto;
- -d visualizza il livello applicazione dei dati quando mostra i pacchetti;
- -D esegue SNORT in daemon mode (cioè come demone);
- -e visualizza l’header dei pacchetti ethernet;
- -h “home-net” setta la “home network” al valore home-net. Il formato di questo indirizzo è un prefisso di rete più un blocco cidr, come ad es: 192.168.2.0/24;
- -i “interface” mette in ascolto SNORT sull’interfaccia specificata;
- -l “log-dir” indirizza i log di SNORT in una directory specifica. Per default è impostato il valore /var/log/snort;
- -n “packet-count” processa solo un numero di pacchetti pari al valore packet-count ed esce;
- -N smette di loggare i pacchetti. Il programma continua normalmente a generare gli alert;
- -o cambia l’ordine in cui le regole sono applicate ai pacchetti. Invece dell’ordine d’inizio applicato nello standard Alert-> Pass-> Log, le regole verranno applicate nell’ordine Pass-> Alert -> Log;
- -p termina la modalità promiscua di sniffing;
- -q non visualizza i messaggi e le informazioni di inizializzazione;
- -r “tcpdump-file” mostra il file tcpdump-file formattato;
- -s manda messaggi di alert al Syslog;
- -S “n=v” setta la variabile “n” al valore “v”. Utile per settare il valore di una variabile definita nel file di regole di SNORT con un valore specificato nella linea di comando;
- -v stampa i pacchetti;
- -V mostra la versione dell’applicazione ed esce.
SNORT come IDS
Abbiamo parlato di SNORT e visto come installarlo in una Linux box. Ora mettiamoci all’opera.
Figura 2: L’avvio di Snort

Per prima cosa (figura 2) avviamo SNORT con le opzioni:
# snort -i -lo -v -d -l log -c /etc/snort.conf
Ora SNORT è attivo e pronto. Dopo aver creato la nostra regola testiamone l’efficienza. Proviamo ad accedere alla macchina, indicata nella nostra regola, usando telnet. Dalla console aperta potrete visualizzare sia il rilevamento dei pacchetti, sia i risultati. In questa occasione abbiamo usato SNORT come IDS passandogli (con l’opzione -c), da linea di comando, il file contenente le regole.
Considerazioni su SNORT
I vantaggi di SNORT sono tanti. Ha una struttura modulare, richiede poco tempo per l’installazione, se ci sono nuovi attacchi l’amministratore può facilmente sviluppare nuove regole per rilevarli ed è estendibile usando i plug-in. Gli svantaggi di SNORT, ovviamente, sono quelli comuni agli IDS basati sul pattern matching. Se volete usare una GUI, per lavorare più agevolmente con SNORT, potete installare http://sguil.sourceforge.net/. Sebbene ancora giovane come progetto questo frontend è davvero molto promettente.

Commenti recenti