Esempi di tcpdump in Linux

Quando la rete non funziona come dovrebbe o è semplicemente necessario capire cosa viene trasmesso attraverso i cavi, tcpdump viene in tuo aiuto. È come uno stetoscopio per il tuo server, uno strumento che ti permette di “ascoltare” il traffico di rete in tempo reale. Può sembrare complicato solo a prima vista, ma in realtà è un assistente molto potente e affidabile per gli amministratori di sistema e per qualsiasi utente Linux curioso.

Redmagic WWRedmagic WW

In questo articolo non approfondiremo la teoria delle reti. Passiamo invece direttamente al sodo ed esaminiamo alcuni esempi concreti di comandi che potrete utilizzare nel vostro lavoro quotidiano. Imparerete a filtrare i pacchetti in base agli indirizzi IP, alle porte e ai tipi di protocollo, in modo da trovare rapidamente le informazioni necessarie nel mare dei dati di rete.

I nostri esempi vi aiuteranno a diagnosticare i problemi di connessione, a monitorare attività sospette o semplicemente a soddisfare la vostra curiosità su come i programmi comunicano tra loro. Cominciamo con i comandi più semplici e passiamo gradualmente a scenari di utilizzo più avanzati.

Tcpdump è un'utile utility di Linux per l'ascolto e l'analisi del traffico di rete, spesso utilizzata da amministratori e sviluppatori per capire cosa sta succedendo nella rete: ad esempio, perché un servizio non funziona, chi sta sovraccaricando il canale o se ci sono connessioni sospette. Con semplici comandi è possibile filtrare il traffico per IP, porte, protocolli o interfacce, salvarlo per un'ulteriore analisi o visualizzarlo in tempo reale. È come collegarsi a una conversazione tra computer e capire di cosa stanno parlando.

Installazione

Govee Many GEOsnubia Many GEOs

La maggior parte degli sviluppatori di sistemi operativi basati su Linux include l'utilità tcpdump nell'elenco di quelle preinstallate, ma se per qualche motivo non è presente nella vostra distribuzione, potete sempre scaricarla e installarla tramite “Terminale”. Se il sistema operativo è basato su Debian, ovvero Ubuntu, Linux Mint, Kali Linux e simili, è necessario eseguire questo comando:

sudo apt install tcpdump

Durante l'installazione è necessario inserire una password. Si noti che durante la digitazione non viene visualizzata, inoltre per confermare l'installazione è necessario inserire il simbolo «D» e premere Invio.

Se si utilizza Red Hat, Fedora o CentOS, il comando per l'installazione sarà il seguente:

sudo yam install tcpdump

Una volta installata l'utilità, è possibile utilizzarla immediatamente. Di questo e di molto altro si parlerà più avanti nel testo.

Sintassi

Italojewerly WWItalojewerly WW

Come qualsiasi altro comando, tcpdump ha una sua sintassi. Conoscendola, potrete impostare tutti i parametri necessari che saranno presi in considerazione durante l'esecuzione del comando. La sintassi è la seguente:

tcpdump opzioni -i interfaccia filtri

Quando si utilizza il comando, è necessario specificare l'interfaccia da monitorare. I filtri e le opzioni non sono variabili obbligatorie, ma consentono una configurazione più flessibile.

Opzioni

Sebbene non sia necessario specificare l'opzione, è comunque necessario elencare quelle disponibili. La tabella non mostra l'elenco completo, ma solo le più popolari, che sono comunque sufficienti per risolvere la maggior parte dei compiti assegnati.

Opzione Definizione
-A Consente di ordinare i pacchetti in formato ASCII
-l Aggiunge la funzione di scorrimento
-i Dopo l'immissione, è necessario specificare l'interfaccia di rete che verrà monitorata. Per iniziare a monitorare tutte le interfacce, inserire la parola “any” dopo l'opzione.
-c Termina il processo di tracciamento dopo aver verificato il numero specificato di pacchetti
-w Genera un file di testo con il rapporto di verifica
-e Mostra il livello di connessione Internet del pacchetto dati
-L Visualizza solo i protocolli supportati dall'interfaccia di rete specificata
-C Crea un altro file durante la registrazione del pacchetto, se la sua dimensione è superiore a quella specificata
-r Apre il file di lettura creato con l'opzione -w
-j Per la registrazione dei pacchetti verrà utilizzato il formato TimeStamp
-J Consente di visualizzare tutti i formati TimeStamp disponibili
-G Serve per creare un file con i log. L'opzione richiede anche l'indicazione di un valore temporale, al termine del quale verrà creato un nuovo log
-v, -vv, -vvv A seconda del numero di caratteri nell'opzione, l'output del comando sarà più dettagliato (l'aumento è direttamente proporzionale al numero di caratteri)
-f Nel risultato mostra il nome di dominio degli indirizzi IP
-F Consente di leggere le informazioni non dall'interfaccia di rete, ma dal file specificato
-D Mostra tutte le interfacce di rete che possono essere utilizzate
-n Disattiva la visualizzazione dei nomi di dominio
-Z Imposta l'utente sotto il cui account verranno creati tutti i file
-K Omissione dell'analisi dei checksum
-q Mostra informazioni sintetiche
-H Consente di rilevare le intestazioni 802.11s
-I Utilizzato durante l'acquisizione dei pacchetti in modalità monitor

Dopo aver esaminato le opzioni, passeremo direttamente alle loro applicazioni. Per ora esamineremo i filtri.

Filtri

Come accennato all'inizio dell'articolo, è possibile aggiungere filtri alla sintassi di tcpdump. Di seguito vengono esaminati i più popolari:

Filtro Definizione
host Serve per specificare il nome dell'host
net Indica l'IP della sottorete e della rete
ip Serve per specificare l'indirizzo del protocollo
src Visualizza i pacchetti che sono stati inviati dall'indirizzo specificato
dst Visualizza i pacchetti che sono stati ricevuti dall'indirizzo specificato
arp, udp, tcp Filtraggio in base a uno dei protocolli
port Visualizza le informazioni relative a una determinata porta
and, or Serve per combinare più filtri in un comando
less, greater Output di pacchetti inferiori o superiori alla dimensione specificata

Tutti i filtri sopra elencati possono essere combinati tra loro, in modo che nel risultato del comando vedrete solo le informazioni che desiderate vedere. Per comprendere più dettagliatamente l'uso dei filtri sopra elencati, è opportuno fornire alcuni esempi.

Esempi di utilizzo

Homestyler WWSunsky-online WW

Di seguito sono riportate le opzioni di sintassi del comando tcpdump più utilizzate. Non è possibile elencarle tutte, poiché le loro varianti possono essere infinite.

Visualizzazione dell'elenco delle interfacce

Si consiglia a ogni utente di verificare inizialmente l'elenco di tutte le sue interfacce di rete che possono essere tracciate. Dalla tabella sopra riportata sappiamo che per farlo è necessario utilizzare l'opzione -D, pertanto, nel terminale eseguire il seguente comando:

sudo tcpdump -D

Esempio:

Come puoi notare, nell'esempio ci sono otto interfacce che possono essere visualizzate con il comando tcpdump. L'articolo fornirà esempi con ppp0, potete usare qualsiasi altro.

Acquisizione normale del traffico

Se è necessario monitorare una sola interfaccia di rete, è possibile farlo utilizzando l'opzione -i. Dopo averlo inserito, non dimenticare di specificare il nome dell'interfaccia. Ecco un esempio di esecuzione di tale comando:

sudo tcpdump -i ppp0

Attenzione: prima del comando stesso è necessario inserire “sudo”, poiché richiede i diritti di superutente.

Esempio:

Nota: dopo aver premuto Invio nel “Terminale”, i pacchetti intercettati verranno visualizzati ininterrottamente. Per interrompere il flusso, è necessario premere la combinazione di tasti Ctrl+C.

Se si esegue il comando senza opzioni e filtri aggiuntivi, verrà visualizzato il seguente formato di visualizzazione dei pacchetti tracciati:

22:18:52.597573 IP vrrp-topf2.p.mail.ru.https > 10.0.6.67.35482: Flags [P.], seq 1:595, ack 1118, win 6494, options [nop,nop,TS val 257060077 ecr 697597623], length 594

Dove è evidenziato in colore:

Blu Tempo di ricezione del pacchetto
Arancione Versione del protocollo
Verde Indirizzo del mittente
Viola Indirizzo del destinatario
Grigio Ulteriori informazioni su tcp
Rosso Dimensione del pacchetto (visualizzata in byte)

Questa sintassi può essere visualizzata nella finestra “Terminale” senza utilizzare opzioni aggiuntive.

Acquisizione del traffico con l'opzione -v

Come si può vedere dalla tabella, l'opzione -v permette di aumentare la quantità di informazioni. Analizziamo un esempio. Controlliamo la stessa interfaccia:

sudo tcpdump -v -i ppp0

Esempio:

Qui si può notare che nella stampa è apparsa la seguente riga:

IP (tos 0x0, ttl 58, id 30675, offset 0, flags [DF], proto TCP (6), length 52

Dove è evidenziato in colore:

In arancione Versione del protocollo
Blu Durata del protocollo
Verde Lunghezza dell'intestazione del campo
Viola Versione del pacchetto tcp
In rosso Dimensione del pacchetto (visualizzata in byte)

Inoltre, nella sintassi del comando è possibile specificare l'opzione -vv oppure -vvv, che consentirà di aumentare ulteriormente la quantità di informazioni visualizzate sullo schermo.

Opzioni -w e -r

Nella tabella delle opzioni è stata menzionata la possibilità di salvare tutti i dati visualizzati in un file separato, in modo da poterli visualizzare in un secondo momento. Ciò è possibile grazie all'opzione -w. Usarla è piuttosto semplice, basta specificarla nel comando e poi inserire il nome del futuro file con l'estensione “.pcap”. Esaminiamo tutto con un esempio:

sudo tcpdump -i ppp0 -w file.pcap

Esempio:

Nota: durante la registrazione dei log nel file, sullo schermo del “Terminale” non viene visualizzato alcun testo.

Quando si desidera visualizzare l'output registrato, è necessario utilizzare l'opzione -r, dopo di che scrivere il nome del file precedentemente registrato. Si applica senza altre opzioni e filtri:

sudo tcpdump -r file.pcap

Esempio:

Entrambe queste opzioni sono ideali nei casi in cui è necessario salvare grandi quantità di testo per una successiva analisi.

Filtraggio per IP

Dalla tabella dei filtri sappiamo che dst consente di visualizzare sulla console solo i pacchetti che sono stati ricevuti dall'indirizzo specificato nella sintassi del comando. In questo modo è molto comodo visualizzare i pacchetti ricevuti dal computer. Per farlo, è sufficiente specificare il proprio indirizzo IP nel comando:

sudo tcpdump -i ppp0 ip dst 10.0.6.67

Esempio:

Come si può notare, oltre a dst, nel comando abbiamo anche specificato il filtro ip. In altre parole, abbiamo detto al computer che durante la selezione dei pacchetti deve prestare attenzione al loro indirizzo IP e non ad altri parametri.

È possibile filtrare i pacchetti inviati tramite IP. Nell'esempio riportiamo nuovamente il nostro IP. In altre parole, ora monitoreremo quali pacchetti vengono inviati dal nostro computer ad altri indirizzi. A tal fine, è necessario eseguire il seguente comando:

sudo tcpdump -i ppp0 ip src 10.0.6.67

Esempio:

Come potete notare, nella sintassi del comando abbiamo modificato il filtro dst su src, dicendo così alla macchina di cercare il mittente tramite IP.

Filtraggio per HOST

Analogamente all'IP nel comando, possiamo specificare il filtro host, per filtrare i pacchetti con l'host di interesse. Cioè, nella sintassi, invece dell'indirizzo IP del mittente/destinatario, sarà necessario specificare il suo host. Il risultato sarà il seguente:

sudo tcpdump -i ppp0 dst host google-public-dns-a.google.com

Esempio:

Nell'immagine si può vedere che in “Terminale” vengono visualizzati solo i pacchetti che sono stati inviati dal nostro IP all'host google.com. Come si può capire, al posto dell'host google è possibile inserirne qualsiasi altro.

Come nel caso del filtraggio per IP, nella sintassi dst può essere sostituita con src, per visualizzare i pacchetti inviati al tuo computer:

sudo tcpdump -i ppp0 src host google-public-dns-a.google.com

Attenzione: il filtro host deve essere posizionato dopo dst o src, altrimenti il comando genererà un errore. Nel caso del filtraggio per IP, al contrario, dst e src precedono il filtro ip.

L'applicazione del filtro and e or

Se si rende necessario utilizzare più filtri contemporaneamente in un unico comando, è necessario applicare il filtro and oppure or (a seconda dei casi). Specificando i filtri nella sintassi e separandoli con questo operatore, li si “costringerà” a funzionare come uno solo. Nell'esempio, appare come segue:

sudo tcpdump -i ppp0 ip dst 95.47.144.254 or ip src 95.47.144.254

Esempio:

Dalla sintassi del comando si evince che desideriamo visualizzare sullo schermo «Terminale» tutti i pacchetti che sono stati inviati all'indirizzo 95.47.144.254 e i pacchetti ricevuti dallo stesso indirizzo. È anche possibile modificare alcune variabili in questa espressione. Ad esempio, invece di IP, specificare HOST o sostituire direttamente gli indirizzi stessi.

Filtro port e portrange

Filtro port è perfetto quando serve ottenere informazioni sui pacchetti con una porta specifica. Quindi, se vuoi vedere solo le risposte o le richieste DNS, devi specificare la porta 53:

sudo tcpdump -vv -i ppp0 port 53

Esempio:

Se si desidera visualizzare i pacchetti http, è necessario inserire la porta 80:

sudo tcpdump -vv -i ppp0 port 80

Esempio:

Tra le altre cose, è possibile monitorare contemporaneamente un intervallo di porte. A tal fine si utilizza un filtro portrange:

sudo tcpdump portrange 50-80

Come si può notare, in combinazione con il filtro portrange non è necessario specificare opzioni aggiuntive. È sufficiente impostare l'intervallo.

Filtraggio per protocollo

È anche possibile visualizzare solo il traffico che corrisponde a un determinato protocollo. A tal fine, è necessario utilizzare come filtro il nome del protocollo stesso. Analizziamo l'esempio udp:

sudo tcpdump -vvv -i ppp0 udp

Esempio:

Come si può vedere nell'immagine, dopo aver eseguito il comando in “Terminale” sono stati visualizzati solo i pacchetti con il protocollo udp. Di conseguenza, è possibile effettuare il filtraggio anche in base ad altri criteri, ad esempio arp:

sudo tcpdump -vvv -i ppp0 arp

o tcp:

sudo tcpdump -vvv -i ppp0 tcp

Filtro net

Operatore net aiuta a filtrare i pacchetti in base alla loro rete. È facile da usare come gli altri: basta specificare l'attributo nella sintassi net, dopo di che inserire l'indirizzo di rete. Ecco un esempio di tale comando:)

sudo tcpdump -i ppp0 net 192.168.1.1

Esempio:

Filtraggio in base alla dimensione del pacchetto

Non abbiamo ancora esaminato altri due filtri interessanti: less e greater. Dalla tabella dei filtri sappiamo che servono per visualizzare i pacchetti di dati più grandi ()less o inferiore (greater della dimensione specificata dopo l'inserimento dell'attributo.

Supponiamo di voler monitorare solo i pacchetti che non superano i 50 bit, quindi il comando sarà il seguente:

sudo tcpdump -i ppp0 less 50

Esempio:

Ora visualizziamo in “Terminale” pacchetti di dimensioni superiori a 50 bit:

sudo tcpdump -i ppp0 greater 50

Esempio:

Come si può notare, vengono utilizzati allo stesso modo, l'unica differenza è nel nome del filtro.

Come puoi vedere, tcpdump è uno strumento incredibilmente potente per chi ha bisogno di dare un'occhiata sotto il cofano dell'interazione di rete. Permette di vedere in tempo reale ciò che viene effettivamente trasmesso via cavo o via etere, trasformando i problemi di rete astratti in dati concreti che possono essere analizzati.

Inizia con comandi semplici, come il filtraggio per porta o indirizzo IP. Man mano che acquisisci esperienza, potrai creare filtri più complessi per intercettare con precisione i pacchetti desiderati. Non aver paura di sperimentare sul tuo computer di prova: è il modo migliore per capire come funziona tutto.

In definitiva, la capacità di utilizzare tcpdump è una superpotenza per un amministratore di sistema o uno sviluppatore. Offre indipendenza nella diagnosi dei problemi, che si tratti di un errore di connessione, di attività sospette o semplicemente del desiderio di comprendere la logica di funzionamento di un determinato servizio di rete. Questo strumento diventerà un affidabile alleato nel tuo arsenale.

Noracora WWNoracora WWJustfashionnow WWGshopper Many GEOsGshopper Many GEOsGshopper Many GEOs
Qual è la funzione che ritiene più importante in un nuovo smartphone??
Share to friends
Elena Sokolova

Mi occupo di giornalismo tecnologico da più di 7 anni. La mia attenzione è rivolta all'innovazione e al futuro della tecnologia. Mi piace parlare di come i gadget e la tecnologia possono cambiare il nostro mondo e condividere le notizie sugli sviluppi più avanzati.

Rate author
Appliances-News.com
Add a comment