Con il comando Linux tcpdump è possibile ana­liz­za­re i pacchetti inviati nella propria rete. Questa analisi può essere ul­te­rior­men­te ot­ti­miz­za­ta con numerose opzioni e filtri.

Cos’è tcpdump su Linux?

Per ana­liz­za­re il traffico di rete su Linux ed even­tual­men­te risolvere i problemi di rete, tcpdump è uno strumento par­ti­co­lar­men­te prezioso. Il programma a riga di comando è pre­in­stal­la­to in quasi tutte le più comuni di­stri­bu­zio­ni Linux, come Debian o Ubuntu, e trasmette in­for­ma­zio­ni sui pacchetti di dati inviati o ricevuti nella rete. No­no­stan­te il nome, tcpdump non è adatto solo per i pacchetti TCP, ma può anche ana­liz­za­re i pacchetti UDP e ICMP. Per uti­liz­zar­lo, tuttavia, è ne­ces­sa­rio disporre dei permessi di root.

Come funziona il comando tcpdump?

L’analisi che tcpdump esegue è chiamata anche “sniffing”. Con l’aiuto del comando tcpdump su Linux, si specifica l’in­ter­fac­cia di rete che il programma deve con­trol­la­re. Esistono numerosi filtri, con i quali è possibile regolare e ot­ti­miz­za­re il processo. Il comando viene eseguito nella riga di comando, dove vengono ri­pro­dot­ti anche i risultati dell’analisi.

Qual è la sintassi di tcpdump?

La sintassi di tcpdump su Linux è molto semplice e si presenta così:

$ tcpdump [opzioni] [filtri]
bash

Non è ne­ces­sa­rio spe­ci­fi­ca­re alcuna opzione, ma per garantire che tcpdump prenda in con­si­de­ra­zio­ne anche l’in­ter­fac­cia di rete corretta, queste sono comunque con­si­glia­te. Anche i filtri sono fa­col­ta­ti­vi. Tuttavia, se non viene spe­ci­fi­ca­to alcun filtro, il comando ana­liz­ze­rà tutti i pacchetti pro­ve­nien­ti da tutti gli host, il che può creare ra­pi­da­men­te con­fu­sio­ne.

Quali opzioni e filtri ha il comando tcpdump di Linux?

Il comando tcpdump dispone di numerose opzioni e filtri. Le opzioni più im­por­tan­ti sono le seguenti:

  • -A: in questo modo viene vi­sua­liz­za­to il contenuto di un pacchetto come ASCII.
  • -c [numero]: in questo modo tcpdump viene terminato au­to­ma­ti­ca­men­te quando è stato ana­liz­za­to un certo numero di pacchetti.
  • -D: questa opzione elenca tutte le in­ter­fac­ce di­spo­ni­bi­li.
  • -i [in­ter­fac­cia]: con questa opzione determini quale in­ter­fac­cia deve essere re­gi­stra­ta.
  • -s [numero]: questa opzione determina quanti byte per pacchetto devono essere re­gi­stra­ti.

È possibile uti­liz­za­re questi filtri per tcpdump:

  • dst: analizza solo i pacchetti la cui de­sti­na­zio­ne ha il valore spe­ci­fi­ca­to, che può essere host, net, port o portrange.
  • host: questo filtro ga­ran­ti­sce che vengano presi in con­si­de­ra­zio­ne solo i pacchetti che hanno come origine o de­sti­na­zio­ne un indirizzo IP specifico o, in al­ter­na­ti­va, un nome host specifico.
  • net: questo filtro prende in con­si­de­ra­zio­ne solo i pacchetti che hanno come sorgente o de­sti­na­zio­ne un indirizzo IP ap­par­te­nen­te a un in­ter­val­lo di rete spe­ci­fi­ca­to.
  • port: con questo filtro si definisce una porta specifica tra 0 e 65535 che deve essere ana­liz­za­ta esclu­si­va­men­te.
  • portrange: questo filtro contiene un in­ter­val­lo di porte compreso tra 0 e 65535 che viene con­si­de­ra­to esclu­si­va­men­te.
  • proto: questo filtro considera esclu­si­va­men­te i pacchetti con uno specifico pro­to­col­lo di rete. Il filtro può avere i seguenti valori: arp, decnet, ether, fddi, ip, ip6, rarp, tcp, udp o wlan.
  • src: con questo filtro vengono ana­liz­za­ti solo i pacchetti la cui origine ha un de­ter­mi­na­to valore, che può essere host, net, port o portrange.

Esempi per l’utilizzo del comando tcpdump

Infine, ti mostriamo come uti­liz­za­re tcpdump. Nei nostri esempi, uti­liz­zia­mo il comando sudo su Linux.

$ sudo tcpdump -D
bash

Così verifichi in­nan­zi­tut­to quali in­ter­fac­ce di rete sono presenti.

$ sudo tcpdump -i wlx14a3c782966b
bash

In questo modo analizzi solo l’in­ter­fac­cia con il nome spe­ci­fi­ca­to.

$ sudo tcpdump -c 5 -i wlx14a3c782966b
bash

Così fai in modo che tcpdump catturi solo cinque pacchetti.

Vai al menu prin­ci­pa­le