Come usare tcpdump e 6 esempi

Come usare tcpdump e 6 esempi

Stai cercando di acquisire pacchetti di dati per analizzare il traffico sulla tua rete? Forse sei un amministratore di server che si è imbattuto in un problema e desidera monitorare i dati trasmessi sulla rete. Qualunque sia la situazione, l'utility Linux tcpdump è ciò di cui hai bisogno.





In questo articolo, discuteremo in dettaglio il comando tcpdump, insieme ad alcune guide su come installare e utilizzare tcpdump sul tuo sistema Linux.





Che cos'è il comando tcpdump?

Tcpdump è un potente strumento di monitoraggio della rete che consente a un utente di filtrare i pacchetti e il traffico su una rete in modo efficiente. È possibile ottenere informazioni dettagliate relative a TCP/IP e ai pacchetti trasmessi sulla rete. Tcpdump è un'utilità della riga di comando, il che significa che puoi eseguirla su server Linux senza display.





Gli amministratori di sistema possono anche integrare l'utility tcpdump con cron per automatizzare varie attività come la registrazione. Poiché le sue numerose funzionalità lo rendono abbastanza versatile, tcpdump funziona come strumento di risoluzione dei problemi e di sicurezza.

Come installare tcpdump su Linux

Sebbene la maggior parte delle volte troverai tcpdump preinstallato sul tuo sistema, alcune distribuzioni Linux non vengono fornite con il pacchetto. Pertanto, potrebbe essere necessario installare manualmente l'utilità sul sistema.



Puoi controllare se tcpdump è installato sul tuo sistema usando il pulsante quale comando.

which tcpdump

Se l'output mostra un percorso di directory ( /usr/bin/tcpdump ), quindi il tuo sistema ha installato il pacchetto. Tuttavia, in caso contrario, puoi farlo facilmente utilizzando il gestore di pacchetti predefinito sul tuo sistema.





Per installare tcpdump su distribuzioni basate su Debian come Ubuntu:

sudo apt-get install tcpdump

Anche l'installazione di tcpdump su CentOS è facile.





sudo yum install tcpdump

Sulle distribuzioni basate su Arch:

sudo pacman -S tcpdump

Per installare su Fedora:

sudo dnf install tcpdump

Nota che il pacchetto tcpdump richiede libcap come dipendenza, quindi assicurati di installarlo anche sul tuo sistema.

Esempi di Tcpdump per acquisire pacchetti di rete su Linux

Ora che hai installato con successo tcpdump sulla tua macchina Linux, è il momento di monitorare alcuni pacchetti. Poiché tcpdump richiede i permessi di superutente per eseguire la maggior parte delle operazioni, dovrai aggiungere sudo ai tuoi comandi.

1. Elenca tutte le interfacce di rete

Per verificare quali interfacce di rete sono disponibili per l'acquisizione, utilizzare il -D flag con il comando tcpdump.

tcpdump -D

passando il --list-interfaces flag come argomento restituirà lo stesso output.

tcpdump --list-interfaces

L'output sarà un elenco di tutte le interfacce di rete presenti sul sistema.

Dopo aver ottenuto l'elenco delle interfacce di rete, è il momento di monitorare la rete catturando i pacchetti sul sistema. Sebbene sia possibile specificare quale interfaccia si desidera utilizzare, il qualunque argomento comanda tcpdump per catturare i pacchetti di rete utilizzando qualsiasi interfaccia attiva.

tcpdump --interface any

Il sistema visualizzerà il seguente output.

come aggiornare i servizi di google play

Imparentato: Che cos'è il modello di interconnessione dei sistemi aperti?

2. Il formato di output tcpdump

A partire dalla terza riga, ogni riga dell'output denota uno specifico pacchetto catturato da tcpdump. Ecco come appare l'output di un singolo pacchetto.

17:00:25.369138 wlp0s20f3 Out IP localsystem.40310 > kul01s10-in-f46.1e100.net.https: Flags [P.], seq 196:568, ack 1, win 309, options [nop,nop,TS val 117964079 ecr 816509256], length 33

Tieni presente che non tutti i pacchetti vengono catturati in questo modo, ma questo è il formato generale seguito dalla maggior parte di essi.

L'output contiene le seguenti informazioni.

  1. Timestamp del pacchetto ricevuto
  2. Nome interfaccia
  3. Flusso di pacchetti
  4. Nome del protocollo di rete
  5. Indirizzo IP e dettagli della porta
  6. Flag TCP
  7. Il numero di sequenza dei dati nel pacchetto
  8. Conferma dati
  9. Dimensione della finestra
  10. Lunghezza del pacchetto

Il primo campo ( 17:00: 25.369138 ) visualizza il timestamp quando il sistema ha inviato o ricevuto il pacchetto. L'ora registrata viene estratta dall'ora locale del sistema.

cosa fare quando hai dimenticato la password dell'iPhone

Il secondo e il terzo campo indicano l'interfaccia utilizzata e il flusso del pacchetto. Nel frammento sopra, wlp0s20f3 è il nome dell'interfaccia wireless e Fuori è il flusso di pacchetti.

Il quarto campo include informazioni relative al nome del protocollo di rete. In genere, troverai due protocolli: IP e IP6 , dove IP indica IPV4 e IP6 è per IPV6.

Il campo successivo contiene gli indirizzi IP o il nome del sistema di origine e di destinazione. Gli indirizzi IP sono seguiti dal numero di porta.

Il sesto campo nell'output è costituito da flag TCP. Ci sono vari flag che vengono usati nell'output di tcpdump.

Nome bandieraValoreDescrizione
VISTASConnessione avviata
FINEFConnessione terminata
SPINGEREPI dati vengono spinti
RSTRLa connessione viene ripristinata
ALAS.Riconoscimento

L'output può anche contenere una combinazione di più flag TCP. Per esempio, BANDIERA [f.] sta per un pacchetto FIN-ACK.

Spostandosi ulteriormente nello snippet di output, il campo successivo contiene il numero di sequenza ( seguito 196:568 ) dei dati nel pacchetto. Il primo pacchetto ha sempre un valore intero positivo e i pacchetti successivi utilizzano il relativo numero di sequenza per migliorare il flusso dei dati.

Il campo successivo contiene il numero di riconoscimento ( conferma 1 ), o un semplice numero di riconoscimento. Il pacchetto catturato nella macchina del mittente ha 1 come numero di conferma. All'estremità del destinatario, il numero Ack è il valore del pacchetto successivo.

Il nono campo nell'output contiene le dimensioni della finestra ( vincere 309 ), che è il numero di byte disponibili nel buffer di ricezione. Esistono molti altri campi che seguono la dimensione della finestra, inclusa la dimensione massima del segmento (MSS).

L'ultimo campo ( lunghezza 33 ) contiene la lunghezza dell'intero pacchetto catturato da tcpdump.

3. Limita il conteggio dei pacchetti acquisiti

Durante l'esecuzione del comando tcpdump per la prima volta, potresti notare che il sistema continua a catturare i pacchetti di rete finché non passi un segnale di interruzione. Puoi sovrascrivere questo comportamento predefinito specificando il conteggio dei pacchetti che vuoi catturare in anticipo usando il pulsante -C bandiera.

tcpdump --interface any -c 10

Il suddetto comando catturerà dieci pacchetti da qualsiasi interfaccia di rete attiva.

4. Filtra i pacchetti in base ai campi

Quando stai risolvendo un problema, ottenere un grosso blocco di testo in output sul tuo terminale non lo rende più facile. È qui che entra in gioco la funzionalità di filtraggio in tcpdump. È possibile filtrare i pacchetti in base a vari campi tra cui host, protocollo, numero di porta e altro.

Per acquisire solo i pacchetti TCP, digitare:

tcpdump --interface any -c 5 tcp

Allo stesso modo, se desideri filtrare l'output utilizzando il numero di porta:

tcpdump --interface any -c 5 port 50

Il comando sopra menzionato recupererà solo i pacchetti trasmessi attraverso la porta specificata.

Per ottenere i dettagli del pacchetto per un particolare host:

tcpdump --interface any -c 5 host 112.123.13.145

Se vuoi filtrare i pacchetti inviati o ricevuti da un host specifico, usa il pulsante src o eccetera argomento con il comando.

tcpdump --interface any -c 5 src 112.123.13.145
tcpdump --interface any -c 5 dst 112.123.13.145

Puoi anche usare gli operatori logici e e o per combinare due o più espressioni insieme. Ad esempio, per ottenere pacchetti che appartengono all'IP di origine 112.123.13.145 e usa la porta 80 :

tcpdump --interface any -c 10 src 112.123.13.145 and port 80

Le espressioni complesse possono essere raggruppate usando parentesi come segue:

tcpdump --interface any -c 10 '(src 112.123.13.145 or src 234.231.23.234) and (port 45 or port 80)'

5. Visualizza il contenuto del pacchetto

Puoi usare il -A e -X flag con il comando tcpdump per analizzare il contenuto del pacchetto di rete. Il -A bandiera sta per ASCII formato e -X denota esadecimale formato.

Per visualizzare il contenuto del successivo pacchetto di rete catturato dal sistema:

tcpdump --interface any -c 1 -A
tcpdump --interface any -c 1 -x

Correlati: che cos'è la perdita di pacchetti e come risolverne la causa?

6. Salva i dati di acquisizione su un file

Se vuoi salvare i dati di acquisizione a scopo di riferimento, tcpdump è lì per aiutarti. Basta passare il -in flag con il comando predefinito per scrivere l'output su un file invece di visualizzarlo sullo schermo.

tcpdump --interface any -c 10 -w data.pcap

Il .pcap l'estensione del file sta per acquisizione di pacchetti dati. Puoi anche emettere il comando di cui sopra in modalità dettagliata usando il -v bandiera.

tcpdump --interface any -c 10 -w data.pcap -v

Per leggere un .pcap file usando tcpdump, usa il -R flag seguito dal percorso del file. Il -R sta per Leggi .

Apple Watch in alluminio vs acciaio inossidabile 2
tcpdump -r data.pcap

È inoltre possibile filtrare i pacchetti di rete dai dati dei pacchetti salvati nel file.

tcpdump -r data.pcap port 80

Monitoraggio del traffico di rete su Linux

Se ti è stato assegnato il compito di amministrare un server Linux, il comando tcpdump è un ottimo strumento da includere nel tuo arsenale. Puoi facilmente risolvere i problemi relativi alla rete acquisendo i pacchetti trasmessi sulla tua rete in tempo reale.

Ma prima di tutto questo, il tuo dispositivo deve essere connesso a Internet. Per i principianti di Linux, anche connettersi con il Wi-Fi tramite la riga di comando può essere un po' impegnativo. Ma se stai usando gli strumenti giusti, è un gioco da ragazzi.

Condividere Condividere Tweet E-mail Come connettersi al Wi-Fi tramite il terminale Linux con Nmcli

Vuoi connetterti a una rete Wi-Fi tramite la riga di comando di Linux? Ecco cosa devi sapere sul comando nmcli.

Leggi Avanti
Argomenti correlati
  • Linux
  • Sicurezza
  • Network Forensics
Circa l'autore Deepesh Sharma(79 articoli pubblicati)

Deepesh è l'editor junior per Linux del MUO. Scrive guide informative su Linux, con l'obiettivo di fornire un'esperienza felice a tutti i nuovi arrivati. Non sono sicuro dei film, ma se vuoi parlare di tecnologia, è il tuo ragazzo. Nel suo tempo libero, puoi trovarlo a leggere libri, ascoltare diversi generi musicali o suonare la sua chitarra.

Altro da Deepesh Sharma

Iscriviti alla nostra Newsletter

Iscriviti alla nostra newsletter per suggerimenti tecnici, recensioni, ebook gratuiti e offerte esclusive!

Clicca qui per iscriverti