Wireshark è uno strumento potente, ma ha i suoi limiti. A meno che tu non abbia apparecchiature di rete professionali, è difficile analizzare il traffico che non coinvolge il tuo computer. A volte la soluzione più semplice è utilizzare tcpdump per acquisire il traffico sul server remoto, quindi eseguire Wireshark per dare un’occhiata.
Cosa sono Wireshark e tcpdump?
Wireshark è un analizzatore di protocollo, un software che cattura e presenta i dati che fluiscono attraverso la rete in modo leggibile. Utilizzando Wireshark, è possibile analizzare input e output da servizi di rete e applicazioni Web.
Mentre Wireshark fa un ottimo lavoro nel catturare tutti i pacchetti che lo attraversano, in alcuni casi dovrai analizzare una sessione da un server remoto. A meno che tu non abbia attrezzature di rete speciali, questo può essere difficile. A volte è più semplice acquisire il traffico sul server remoto, quindi analizzarlo sul desktop.
tcpdump è un analizzatore di pacchetti a riga di comando. Non è facile da usare come Wireshark, ma è altrettanto capace di catturare il traffico. Poiché tcpdump viene eseguito in una modalità terminale, è possibile avviarlo tramite una sessione SSH. Con le opzioni appropriate della riga di comando, puoi esportare una sessione di tcpdump compatibile con Wireshark.
SolarWinds porta Wireshark al livello successivo
Wireshark e tcpdump sono potenti utility, ma hanno alcuni punti deboli. In particolare, è molto difficile individuare i problemi di latenza in tutta la rete utilizzando Wireshark immediatamente. Ad esempio, potresti avere tempi di ping elevati nella tua LAN e non c’è molto che Wireshark può fare per aiutare.
Visualizzatore dei tempi di risposta di SolarWinds per Wireshark (STRUMENTO GRATUITO)
In tal caso, mi raccomando Visualizzatore dei tempi di risposta di SolarWinds per Wireshark. Questo plugin estende Wireshark, consentendoti di diagnosticare la causa dei picchi di ping e della velocità generale della rete.
Visualizzatore dei tempi di risposta di SolarWinds per Wireshark Scarica lo strumento GRATUITO al 100%
SolarWinds Network Performance Monitor (PROVA GRATUITA)
SolarWinds è anche un’ottima soluzione all-in-one per la tua rete. Si chiama Network Performance Monitor (NPM) e semplifica notevolmente l’amministrazione di una rete. Ad esempio, utilizzando SolarWinds Network Performance Monitor, è possibile monitorare e gestire la LAN wireless, generare una linea di base delle prestazioni e ricevere avvisi di sicurezza in tempo reale.
SolarWinds Network Performance Monitor è disponibile per provare senza rischi per 30 giorni. Iscriviti qui gratuitamente.
SolarWinds Network Performance Monitor Scarica la versione di prova GRATUITA di 30 giorni
Prima di iniziare
Per seguire le indicazioni in questa guida, devi disporre di quanto segue:
- Un computer remoto con un server SSH e tcpdump installati
- Accesso alla radice
- Servizi che generano traffico di rete, come Apache o node.js, in esecuzione sul computer remoto
- Un computer locale con un client SSH e Wireshark installati
L’obiettivo è utilizzare tcpdump sul computer remoto, tramite SSH, per acquisire il traffico di rete. Quindi il traffico acquisito può essere copiato sul computer locale per l’analisi con Wireshark.
Ciò è utile quando non si ha accesso fisico al computer remoto o lo si esegue “senza testa”, ovvero senza tastiera e monitor.
Acquisizione di pacchetti con tcpdump
Per acquisire il traffico con tcpdump, dovrai connetterti al computer remoto tramite SSH. Avrai anche bisogno dell’accesso root, altrimenti il tcpdump non sarà in grado di catturare il traffico e vedrai un errore che indica Non sei autorizzato a catturare su quel dispositivo.
Una volta connesso, esegui il comando seguente per iniziare a catturare il traffico con tcpdump:
sudo tcpdump -s 0 -i eth0 -w tcpdump.pcap
Le opzioni della riga di comando che ho usato per catturare questa sessione saranno spiegate di seguito. In breve, il comando sopra acquisirà tutto il traffico sul dispositivo Ethernet e lo scriverà in un file chiamato tcpdump.pcap in un formato compatibile con Wireshark.
Dopo aver acquisito il traffico, termina la sessione di tcpdump con Ctrl + C. Vedrai una breve lettura che mostra alcune informazioni sulla sessione di acquisizione.
Prima di poter copiare il traffico dal tuo computer remoto a quello locale per l’analisi con Wireshark, dovrai modificare le autorizzazioni. Per impostazione predefinita, le sessioni tcpdump acquisite dalla radice utilizzata non possono essere copiate. Usa questo comando:
sudo chmod 644 tcpdump.pcap
Ciò ti consentirà di copiare il file sul tuo computer locale usando scp, come indicato nel passaggio successivo.
Copia di una sessione tcpdump per analisi
Una volta terminata una sessione di acquisizione con tcpdump, rimane un problema. Come lo copi sulla macchina che esegue Wireshark per l’analisi? Ci sono molti modi, ma penso che il più semplice sia con scp. Dato che hai già acquisito pacchetti su un computer senza testa usando SSH, tutto ciò che ti serve per usare scp è già installato e funzionante.
Gli utenti Windows dovranno scaricare pscp, quindi copiare il file in C: \ Windows \ System32. La maggior parte degli utenti Mac e Linux ha già tutto ciò di cui hanno bisogno.
In Mac o Linux, aprire una finestra del terminale ed eseguire il comando seguente per copiare il file di acquisizione della sessione:
scp [email protected]: / percorso / to / file ./
O in Windows, apri PowerShell ed esegui questo comando:
pscp.exe [email protected]: / percorso / in / file. \
Sostituisci con le tue informazioni ove appropriato. Ti verrà richiesto di inserire la password. I comandi che ho usato sono nello screenshot sopra per riferimento.
Verifica che il file sia stato copiato come previsto e sei pronto per analizzare la sessione di tcpdump con Wireshark.
Analizzare una sessione tcpdump catturata con Wireshark
L’analisi funziona allo stesso modo di qualsiasi acquisizione Wireshark tradizionale; l’unica cosa che devi sapere è come importare il file.
Avviare Wireshark, quindi importare la sessione tcpdump acquisita utilizzando File -> Aperto e cerca il tuo file. Puoi anche doppio click il file di acquisizione per aprirlo in Wireshark, purché abbia l’estensione * .pcap. Se hai usato il -w quando si esegue tcpdump, il file verrà caricato normalmente e verrà visualizzato il traffico.
Nel mio caso, sto eseguendo un server Apache sull’host remoto e sono interessato a guardare i dati HTTP. Ho impostato il filtro di visualizzazione Wireshark appropriato e posso sfogliare i frame acquisiti come al solito.
Come test, ho incorporato un elemento nel codice HTML che non è visualizzato nella pagina. Dovrei essere in grado di individuarlo nel flusso di dati e visualizzarlo con Wireshark.
Come puoi vedere, Wireshark è in grado di analizzare ogni frame e visualizzare i dati bene. L’elemento che ho nascosto appare nell’esempio sopra. Il processo di acquisizione è un po ‘più complicato quando si utilizza tcpdump, ma tutto in Wireshark funziona come al solito.
Utilizzo delle opzioni della riga di comando per tcpdump
La maggior parte delle volte, quando avvii tcpdump avrai bisogno di un certo controllo su come catturare i pacchetti e su dove memorizzi la sessione. Puoi controllare cose del genere usando le opzioni della riga di comando. Queste sono alcune delle opzioni più utili della riga di comando per tcpdump.
tcpdump -w
Il -w l’opzione della riga di comando abilita l’output compatibile di Wireshark. Prende una singola variabile, che è il nome del file di output. I log di acquisizione salvati utilizzando questa opzione non saranno leggibili dall’uomo al di fuori di Wireshark, poiché sono archiviati in formato binario anziché ASCII.
tcpdump -C
Il -C l’opzione della riga di comando consente di impostare una dimensione massima del file in byte. Questa opzione funziona solo a fianco -w. Ad esempio, il comando tcpdump -C 1048576 -w capture.pcap specifica una dimensione di acquisizione massima di 1 MB (1.048.576 byte) di output nel file capture.pcap.
Se la sessione genera una quantità maggiore di output, creerà nuovi file in cui archiviarlo. Pertanto, una cattura da 3 MB genererebbe capture.pcap, capture1.pcap, e capture2.pcap ciascuno con una dimensione del file di 1 MB.
tcpdump -s
Il -S l’opzione della riga di comando imposta una lunghezza massima per ogni pacchetto in byte e tronca il pacchetto quando viene raggiunto il massimo. Il comando tcpdump -s 0 imposta una lunghezza illimitata per garantire che l’intero pacchetto venga acquisito.
tcpdump -i
Il -io l’opzione della riga di comando specifica quale dispositivo di rete desideri monitorare da tcpdump. Se non viene specificata alcuna interfaccia, per impostazione predefinita è l’interfaccia con il numero più basso attualmente in esecuzione.
tcpdump -list-interfaces
L’opzione della riga di comando tcpdump -list-interfaces stamperà un elenco di tutte le interfacce disponibili per il collegamento di tcpdump. Tieni presente che questo non avvia una sessione di acquisizione, ma ti fornirà un elenco di interfacce da utilizzare con -io opzione sopra.
tcpdump -c
Il -c l’opzione della riga di comando dice a tcpdump di uscire dalla sessione dopo aver acquisito un numero specificato di pacchetti.
tcpdump -n
Il -n l’opzione della riga di comando indica tcpdump non per risolvere gli indirizzi IP in nomi host. Ciò è utile per la risoluzione dei problemi dei siti Web dietro un server di bilanciamento del carico e in una manciata di altri casi quando si utilizza un nome host si ottengono risultati ambigui.
tcpdump -v | -vv | -vvv
Le tre opzioni della riga di comando, -v, -vv, e -vvv consentire di aumentare la verbosità della sessione di acquisizione. -v salverà i valori TTL per ogni pacchetto, insieme alle informazioni ToS. -vv produrrà TTL e ToS insieme a informazioni aggiuntive nei pacchetti NFS. E -vvv registrerà tutto ciò che fanno le prime due opzioni, insieme a informazioni aggiuntive dalle sessioni telnet.
tcpdump -F
Il -F L’opzione della riga di comando indica a tcpdump di utilizzare i filtri di acquisizione dal file specificato. Ulteriori informazioni sulla scrittura di un file di acquisizione sono disponibili nella sezione successiva.
Utilizzo dei filtri di acquisizione per tcpdump
I filtri di acquisizione consentono di restringere i dati archiviati da tcpdump in una sessione. Sono un modo utile per rendere un po ‘più semplice l’analisi e mantenere piccoli i file di acquisizione. Ecco alcuni dei filtri di acquisizione più utili per tcpdump.
ospite
Questo filtro specifica che deve essere acquisito solo il traffico da e verso l’host di destinazione. Prende un indirizzo IP o un nome host come argomento.
netto
Il filtro di rete dirà al tuo computer di acquisire il traffico solo su una determinata sottorete e accetta un indirizzo IP come argomento. Ad esempio, 192.168.1.0/24 specifica che verrà acquisito il traffico verso o da tutti gli host sulla sottorete. Si noti che è richiesta una subnet mask nella notazione della barra.
dst host
Simile a ospite, questo filtro di acquisizione specifica che verrà acquisito solo il traffico con una destinazione dell’host specificato. Può anche essere usato con netto.
host src
Come sopra, ma questo filtro cattura solo il traffico proveniente dall’host o dall’indirizzo IP specificato. Può anche essere usato con netto.
porta
Questo filtro dice a tcpdump di acquisire il traffico da e verso un determinato numero di porta. Per esempio, porta 443 acquisirà il traffico TLS.
portrange
Simile al filtro delle porte, portrange stabilisce un intervallo di porte su cui viene catturato il traffico. Per utilizzare il filtro portrange, specificare la porta iniziale e quella finale separate da un trattino. Per esempio, portrange 21-23.
porta
Il filtro gateway specifica che il computer deve acquisire solo il traffico che utilizzava un determinato nome host come gateway. Il nome host deve essere trovato in / etc / hosts.
trasmissione
Il filtro broadcast specifica che tcpdump deve acquisire solo il traffico che viene trasmesso a tutti gli host su una sottorete.
IP multicast
Questo filtro dice a tcpdump di acquisire solo il traffico multicast sulla sottorete della macchina host.
e / o / non operatori
I filtri possono essere concatenati insieme usando il e, o, o no operatori. Ad esempio, per acquisire tutto il traffico Web su un determinato host è possibile utilizzare il filtro porta 80 o porta 443. Oppure è possibile acquisire tutto il traffico su una determinata sottorete tranne i pacchetti di trasmissione utilizzando il filtro rete 192.168.1.0/24 e non trasmessa.
È molto comune utilizzare gli operatori di filtri in pratica poiché forniscono un ulteriore livello di granularità alle acquisizioni. Puoi catturare esattamente il traffico di cui hai bisogno, senza molte chiacchiere di rete extra.
Espressioni complesse con più operatori
È possibile creare espressioni anche più complesse circondando più operazioni in singoli apostrofi e parentesi. Ad esempio, puoi monitorare tutto il traffico di posta, inclusi SMTP, IMAP, IMAP su TLS, POP3 e POP3 su TLS, su più host e sottoreti, usando un comando come questo:
tcpdump “(host 10.0.0.1 e rete 192.168.1.0/24) e ((porta 25 o porta 143 o porta 443 o porta 993 o porta 995))”
Le espressioni complesse con più operatori possono essere molto utili, ma in genere vengono salvate in un file di filtro per essere riutilizzate poiché un singolo errore di battitura provoca il fallimento dell’acquisizione. Spesso devono essere preparati in anticipo e sottoposti a debug.
Utilizzo dei file di filtro per tcpdump
I filtri sopra possono essere eseguiti dalla riga di comando all’avvio di tcpdump, ma spesso è utile creare un file filtro. Un file filtro semplifica la riproduzione delle impostazioni del filtro tra le acquisizioni poiché è riutilizzabile. Ecco i passaggi per scrivere e utilizzare un file filtro.
Scrivi il file del filtro
I file di filtro usano esattamente la stessa notazione della riga di comando. Non richiedono caratteri speciali o numeri magici nella parte superiore del file.
Ad esempio, ecco un file di filtro che ho scritto che acquisirà tutto il traffico web in uscita dal mio server Apache a un determinato host. In questo caso, il Chromebook su cui sto scrivendo.
Finché il file è leggibile dall’utente che esegue tcpdump, il programma tenterà di analizzare tutto nel file di filtro e utilizzarlo come filtro valido. Quando un il file di filtro viene utilizzato insieme al filtro della riga di comando, tutto il filtro della riga di comando verrà ignorato.
Indicare a tcpdump di utilizzare un determinato file di filtro utilizzando il -F opzione della riga di comando, seguita dal percorso del file. Nell’esempio sopra, il file di filtro si trova nella stessa directory in cui sto eseguendo tcpdump.
Ecco l’output non elaborato della sessione filtrata. Puoi vedere che i soli pacchetti che vengono registrati provengono da porta 80 o 443, e sono in uscita verso l’host a 192.168.1.181.
Quando vedi che il tuo filtro funziona come previsto, cattura una sessione da analizzare con Wireshark usando un comando simile al seguente:
sudo tcpdump -i eth0 -s 0 -w cableshark.pcap -F filtro-file
Wireshark e tcpdump
A meno che tu non stia eseguendo uno switch gestito con una porta di amministrazione, prima o poi dovrai acquisire il traffico su un server remoto. Quando Wireshark da solo non farà il lavoro, Wireshark con tcpdump è una scelta popolare. I due lavorano davvero bene insieme e, con alcune semplici opzioni da riga di comando, tcpdump esporterà sessioni di acquisizione che possono essere facilmente analizzate in Wireshark.
Wireshark installato e configurato per la cattura dei pacchetti di rete
Wireshark è sicuramente uno strumento molto potente per lanalisi del traffico di rete, ma come si è detto ha i suoi limiti. In particolare, può essere difficile analizzare il traffico che non coinvolge direttamente il proprio computer, ma che passa attraverso un server remoto. In questi casi, può essere utile utilizzare tcpdump per acquisire il traffico sul server remoto e poi analizzarlo con Wireshark sul proprio desktop.
Come si è visto, tcpdump è un analizzatore di pacchetti a riga di comando che può essere eseguito tramite una sessione SSH. Con le opportune opzioni della riga di comando, è possibile esportare una sessione di tcpdump compatibile con Wireshark.
Tuttavia, se si vuole andare oltre e individuare i problemi di latenza in tutta la rete, può essere utile utilizzare strumenti come il Visualizzatore dei tempi di risposta di SolarWinds per Wireshark o il SolarWinds Network Performance Monitor. Questi strumenti consentono di diagnosticare la causa dei picchi di ping e della velocità generale della rete, semplificando notevolmente lamministrazione di una rete.
In ogni caso, per utilizzare questi strumenti è necessario disporre di un computer remoto con un server SSH e tcpdump installati, accesso alla radice e servizi che generano traffico di rete in esecuzione sul computer remoto, oltre che di un computer locale con Wireshark installato e configurato per la cattura dei pacchetti di rete.