Per chi ama la comodità dell’interfaccia grafica di Wireshark, con la quale si può non solo verificare in tempo reale il traffico di rete ma anche impostare filtri dinamici e tutta una nutrita serie di funzioni, possono esserci problemi quando si tratta di dover monitorare il traffico su server remoti dove non vi è interfaccia grafica.
Fortunatamente, grazie ad ssh (Secure SHell) ed ai “pipe”, è possibile eseguire Wireshark sulla nostra macchina “sniffando” il traffico di rete su un server remoto.
Il tutorial completo ed “ufficiale” è disponibile, in inglese, a questa pagina: https://wiki.wireshark.org/CaptureSetup/PipesCome prima cosa verifichiamo di avere dumpcap (parte di Wireshark) ed il server ssh installato sul server remoto. Nel caso, possiamo installare entrambi con:
sudo apt-get install wireshark openssh-server
una volta installati e verificato che la connessione ssh dal nostro pc al server funziona correttamente, possiamo creare la nostra “pipe” locale aprendo un terminale e digitando il comando:
mkfifo /tmp/sharkfin
Wireshark in attesa di ricevere dati dalla pipe
e successivamente lanciare Wireshark indicando a riga di comando di attendere l’input dalla nostra “pipe” FIFO (First In First Out – “il primo che arriva è il primo che esce”):
wireshark -k -i /tmp/sharkfin &
La ‘&’ a fine comando indica di restituire il controllo alla consolle senza attendere il termine dell’esecuzione, così da permetterci di aprire il tunnel ssh con il server remoto senza dover aprire una ulteriore shell:
ssh [utente]@[ip server remoto] "dumpcap -P -i [interfaccia] -w - -f 'not tcp port 22'" > /tmp/sharkfin
Questo comando apre una connessione SSH con il server [ip server remoto] usando il nome utente [utente] ed eseguendo, sempre sul server remoto, il comando “dumpcap -P -i [interfaccia] -w – -f ‘not tcp port 22′“: il filtro -f ‘not tcp port 22′ esclude dal monitoraggio il traffico ssh, evitando un antipatico loop.
Nella consolle saranno visualizzate alcune informazioni:
Capturing on eth1 File: - Packets: 1645
mentre il nostro Wireshark visualizzerà tutti i frame catturati sull’interfaccia [interfaccia] del server remoto. Per interrompere il monitoraggio potete premere Ctrl-C in consolle e, se volete, cancellare la pipe con un semplice ‘rm /tmp/sharkfin‘.