lunedì 10 giugno 2013

Catturare pacchetti con pfSense

La cattura dei pacchetti (o sniffing) può essere estremamente utile per risolvere problemi di rete. 
Analizzare i pacchetti in transito permette di verificare quel che passa esattamente sul cavo o quel che per qualche motivo ci aspettiamo di veder passare ma, è inspiegabilmente assente.

pfSense mette a disposizione due modi per catturare i pacchetti: uno attraverso l'interfaccia grafica ed uno da riga di comando. Una volta ottenuti i pacchetti è possibile analizzarli tramite software come Wireshark.


L'interfaccia web

Il modo più semplice per catturare dei pacchetti su un sistema pfSense è tramite l'interfaccia web accedendo a:

Diagnostics > Packet capture

Per avviare una sessione di sniffing è sufficiente impostare alcuni semplici filtri:

Interface: Indica l'interfaccia su cui si vuole attivare il monitor.

Address Family: consente la selezione del protocollo, le possibili scelte sono Any, IPv4 Only ed IPv6 Only.

Host Address: è l'indirizzo di uno degli endpoint di cui si vuole analizzare l'invio o la ricezione dei pacchetti. I valori ammessi dal campo sono un nome dns, un ip o una sottorete.

Port: è la porta utilizzata dal protocollo per cui si sta conducendo l'analisi.

Packet Length: è la lunghezza in bytes di ogni pacchetto che dovrà essere catturato.

Count: è il numero dei pacchetti che si vuole catturare

Level of Detail: è il livello di dettaglio che si vuole avere al termine della cattura nella finestra sottostante.

Reverse DNS Lookup: consente di tradurre ogni ip address nel rispettivo nome dns.

molti di questi campi se lasciati vuoti o impostati a 0 hanno l'effetto di inibire quella tipologia di filtro.


Una volta avviata la sessione di cattura dei pacchetti è possibile cambiare pagina nel browser e la cattura continuerà senza fermarsi. Una sessione di cattura termina premendo il pulsante stop presente in fondo alla pagina o raggiunto il numero massimo di pacchetti (Parametro Count).

Terminata la sessione di cattura, nel riquadro Packet Captured apparirà l'elenco dei paccehtti catturati e si attiverà il pulsante Download Capture

Cliccando sul pulsante Download Capture, verrà scaricato il file packetcapture.cap.
Questo file può essere importato in Wireshark per essere analizzato. Di wireshark abbiamo già parlato nell'articolo "Il troubleshooting di pfSense"


Wireshark mette a disposizione numerosi filtri e strumenti per analizzare i pacchetti catturati.

 

La shell dei comandi

Oltre all'interfaccia web è possibile attivare il processo di cattura dei file tramite la console. Per prima cosa occorre procurarsi un client SSH, il più famoso ed utilizzato è sicuramente Putty

Ovviamente occorre anche ricordarsi di attivare l'accesso in SSH accedendo al menù System > Advanced e spuntando la voce Enable Secure Shell.

Dopo aver effettuato il login, occorre selezionare la voce n°8 Shell
Il comando da utilizzare è TcpDump, a differenza dell'interfaccia web, TcpDump per individuare una porta utilizza il nome (em0, em1, rl0 ecc...) visibile nella schermata del menù.

Alcuni semplici esempi della sintassi di TcpDump sono i seguenti:

tcpdump -i em0 -w packetcapture.cap
Cattura tutti i pacchetti che attraversano l'interfaccia em0 e salva i dati nel file packetcapture.cap
tcpdump -i em0 -host 192.168.0.12
Cattura tutti i pacchetti che attraversano l'interfaccia em0 che hanno come sorgente o destinazione l'IP 192.168.0.12

tcpdump -i em0 icmp
Cattura tutti i pacchetti che attraversano l'interfaccia em0 che corrispondono al protocollo icmp.





Analogamente all'interfaccia web, per poter analizzare in modo semplice e preciso i pacchetti catturati occorre scaricarli da pfSense per analizzarli con Wireshark.
Per scaricare il file creato abbiamo due possibilità: la prima è tramite l'interfaccia web utilizzando il menù Diagnostics > Execute command > Download e la seconda utilizzando un client come WinSCP.
Se non viene diversamente indicato, il file viene creato per default in /root.

Per capire dove andare a catturare dei pacchetti vi consiglio la lettura dell'articolo "Ordine di applicazione delle regole di NAT e Firewall"
Posta un commento