GNU/Linux >> Linux Esercitazione >  >> Linux

comando Linux tcpdump

tcpdump è un'utilità della riga di comando che ci consente di acquisire e analizzare il traffico di rete che attraversa il nostro sistema. A seconda delle opzioni di filtro, possiamo utilizzare questo strumento per aiutare a risolvere efficacemente qualsiasi tipo di problema di rete. È uno strumento molto comunemente utilizzato dagli ingegneri di sistema per queste funzionalità.

In questo tutorial analizzeremo alcuni dei modi di utilizzare tcpdump , ma non tutto. Questo perché ci sono semplicemente troppe opzioni di filtro coinvolte in questo comando e non è possibile coprirle tutte. Qui esamineremo solo alcune delle opzioni comunemente utilizzate. Puoi trovare il resto nella pagina man.

Installazione del comando tcpdump

Puoi controllare se il tuo sistema ha il tcpdump comando, digitando

tcpdump --version

Se l'output mostra che non è installato, puoi ottenerlo direttamente utilizzando il gestore di pacchetti del tuo sistema.

NOTA :Dal momento che cattureremo i pacchetti, abbiamo bisogno di autorizzazioni elevate. (sudo è obbligatorio). Verrà prefissato tutto tcpdump comandi con sudo di conseguenza.

Elenca le interfacce per l'acquisizione dei pacchetti

Prima di acquisire attivamente i pacchetti, esamineremo le interfacce disponibili per tcpdump .

Possiamo elencare le interfacce usando il -D Opzione (Visualizza).

sudo tcpdump -D

Otterrai un elenco di tutte le interfacce disponibili sulla tua macchina. Dipende da sistema a sistema, quindi il mio ha alcune altre interfacce come Docker , poiché il servizio Docker è in esecuzione, a parte le tipiche interfacce di rete.

L'interfaccia speciale qualsiasi consente di acquisire in qualsiasi interfaccia attiva.

Ora che conosciamo le interfacce disponibili sulla nostra macchina, iniziamo a catturare i pacchetti!

Acquisisci pacchetti utilizzando tcpdump

Cattura tutti i pacchetti in qualsiasi interfaccia eseguendo questo comando:

sudo tcpdump -i any

Questo specificherà che l'interfaccia sia qualsiasi , l'interfaccia speciale menzionata in precedenza.

tcpdump continua a catturare i pacchetti finché non riceve un interrupt segnale. Puoi interrompere l'acquisizione premendo Ctrl+C .

L'output elencherà tutte le acquisizioni di pacchetti fino alla ricezione del segnale di interruzione per terminare tcpdump .

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
10:49:32.841984 IP 111.11.111.11.vultr.com.ssh > 123.45.678.90.48006: Flags [P.], seq 4132693749:4132693857, ack 3344962610, win 1002, options [nop,nop,TS val 135269404 ecr 1623818400], length 108
10:49:32.842057 IP 111.11.111.11.vultr.com.ssh > 123.45.678.90.48006: Flags [P.], seq 108:144, ack 1, win 1002, options [nop,nop,TS val 135269404 ecr 1623818400], length 36
10:49:32.842101 IP 111.11.111.11.vultr.com.ssh > 123.45.678.90.48006: Flags [P.], seq 144:260, ack 1, win 1002, options [nop,nop,TS val 135269404 ecr 1623818400], length 116
10:49:32.842135 IP 111.11.111.11.vultr.com.ssh > 123.45.678.90.48006: Flags [P.], seq 260:296, ack 1, win 1002, options [nop,nop,TS val 135269404 ecr 1623818400], length 36
...
...
^C
264 packets captured
361 packets received by filter
91 packets dropped by kernel

Come puoi osservare, tcpdump aveva catturato 264 pacchetti. Ad esempio, poiché sono connesso a questo server utilizzando ssh , tcpdump catturato tutti questi pacchetti.

Numero limite di acquisizioni di pacchetti

Per limitare il numero di pacchetti catturati e fermare tcpdump , usa il -c opzione (limite di acquisizione):

sudo tcpdump -i any -c 2

Ciò farà sì che il comando tcpdump interrompa automaticamente l'acquisizione dopo 2 pacchetti. In questo caso non sarà necessario utilizzare il segnale di interruzione per terminarlo manualmente.

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
10:57:31.284198 IP 111.11.111.11.vultr.com.ssh > 123.45.678.90.48006: Flags [P.], seq 4132754245:4132754353, ack 3344963698, win 1002, options [nop,nop,TS val 135747845 ecr 1624296856], length 108
10:57:31.284275 IP 111.11.111.11.vultr.com.ssh > 123.45.678.90.48006: Flags [P.], seq 108:144, ack 1, win 1002, options [nop,nop,TS val 135747845 ecr 1624296856], length 36
2 packets captured
16 packets received by filter
8 packets dropped by kernel

Questa opzione può essere molto utile nel monitoraggio delle connessioni di rete per la risoluzione di eventuali problemi, se ci sono problemi di rete.

Disabilita nome e risoluzione porta

Per impostazione predefinita, tcpdump Il comando risolve gli indirizzi IP e le porte in nomi (come vultr.com.ssh , che esegue la risoluzione dei nomi dagli indirizzi IP e dalle porte).

Durante la risoluzione dei problemi di rete, è spesso più semplice utilizzare gli indirizzi IP ei numeri di porta; Possiamo disabilitare la risoluzione dei nomi usando l'opzione -n e risoluzione della porta con -nn .

sudo tcpdump -i any -c 2 -nn

Il comando precedente acquisisce 2 pacchetti su qualsiasi interfaccia, disabilitando la risoluzione della porta.

Quindi l'output interromperà qualsiasi risoluzione dei nomi e restituirà semplicemente gli indirizzi IP e i numeri di porta.

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
11:00:36.459922 IP 111.11.111.11.22 > 123.45.678.90.48006: Flags [P.], seq 4132755513:4132755621, ack 3344963838, win 1002, options [nop,nop,TS val 135933020 ecr 1624482048], length 108
11:00:36.459982 IP 111.11.111.11.22 > 123.45.678.90.48006: Flags [P.], seq 108:144, ack 1, win 1002, options [nop,nop,TS val 135933020 ecr 1624482048], length 36
2 packets captured
8 packets received by filter
0 packets dropped by kernel

Qui, esaminiamo una riga dell'output.

11:00:36.459922 IP 111.11.111.11.22 > 123.45.678.90.48006: Flags [P.], seq 4132755513:4132755621, ack 3344963838, win 1002, options [nop,nop,TS val 135933020 ecr 1624482048], length 108

Questo è un tipico TCP acquisizione di pacchetti. È possibile fare riferimento ad altri pacchetti e formati di protocollo nella pagina di manuale del comando tcpdump.

Il primo campo, 11:00:36.459922 , rappresenta il timestamp del pacchetto ricevuto secondo l'orologio locale.

Successivamente, IP rappresenta il protocollo del livello di rete, in questo caso IPv4 . Per IPv6 pacchetti, il valore è IP6 .

Il campo successivo, 111.11.111.11.22 , è l'indirizzo IP e la porta di origine. Segue l'indirizzo IP e la porta di destinazione, rappresentati da 123.45.678.90.48006 .

Ora che sappiamo come è il formato di output di base, analizziamo alcune opzioni di filtro per tcpdump

Filtraggio dei pacchetti

Uno di tcpdump la caratteristica più potente del comando è la sua capacità di filtrare i pacchetti catturati utilizzando una varietà di parametri, come indirizzi IP di origine e destinazione, porte, protocolli, ecc. Diamo un'occhiata ad alcuni dei più comuni.

Filtro basato su protocollo

Per filtrare i pacchetti in base al protocollo, dobbiamo specificare il protocollo nel comando.

Per acquisire ICMP solo pacchetti, possiamo filtrare in base a ICMP protocollo.

sudo tcpdump -i any -c 5 icmp

Dal ping comando utilizza ICMP pacchetti, possiamo analizzare i pacchetti in arrivo a causa di ping da un'altra macchina.

Eseguiamo il ping della nostra macchina attuale e catturiamo i pacchetti ping in arrivo.

Apri una sessione terminale su un'altra macchina e digita

ping IP_ADDRESS_MACHINE_1

Ora, nel nostro tcpdump sessione terminale, ora possiamo vedere che cattura quei pacchetti di risposta ping ICMP.

tcpdump: verbose output suppressed, use -v or -vv for full protocol decode
listening on any, link-type LINUX_SLL (Linux cooked), capture size 262144 bytes
11:18:47.947475 IP 123.45.678.90 > 111.11.111.11.vultr.com: ICMP echo request, id 6068, seq 1, length 64
11:18:47.947554 IP 111.11.111.11.vultr.com > 123.45.678.90: ICMP echo reply, id 6068, seq 1, length 64
11:18:48.947669 IP 123.45.678.90 > 111.11.111.11.vultr.com: ICMP echo request, id 6068, seq 2, length 64
11:18:48.947752 IP 111.11.111.11.vultr.com > 123.45.678.90: ICMP echo reply, id 6068, seq 2, length 64
11:18:49.947853 IP 123.45.678.90 > 111.11.111.11.vultr.com: ICMP echo request, id 6068, seq 3, length 64
5 packets captured
6 packets received by filter
0 packets dropped by kernel

Qui, 123.45.678.90 è l'indirizzo IP della macchina (Macchina 2) che invia il ping al nostro tcpdump sistema e 111.11.111.11 è l'indirizzo IP della macchina per il filtraggio dei pacchetti (Macchina 1).

Dato che stavo usando ssh per inviare le richieste di ping, esiste una risoluzione del dominio (ma nessuna risoluzione del nome) a vultr.com .

Filtro in base all'host

Per limitare l'acquisizione ai soli pacchetti relativi a un host specifico, possiamo utilizzare host filtro

sudo tcpdump -i any -c5 -nn host 192.168.1.2

In questo esempio, tcpdump acquisisce e visualizza solo i pacchetti da e verso l'host 192.168.1.2 .

Filtro in base alla porta

Per filtrare i pacchetti in base al servizio o alla porta desiderati, utilizza la port filtro. Ad esempio, acquisisci i pacchetti relativi a una sessione ssh utilizzando questo comando (porta 22 filtraggio):

sudo tcpdump -i any -c5 -nn port 22

Filtro basato su IP sorgente/nome host

Puoi anche filtrare i pacchetti in base all'indirizzo IP o al nome host di origine o destinazione. Ad esempio, per acquisire pacchetti dall'host 192.168.1.2

sudo tcpdump -i any -c 5 -nn src 192.168.1.2

Possiamo usare dst per filtrare anche per IP/nome host di destinazione.

sudo tcpdump -i any -c 5 -nn src 172.168.1.2

Salva le acquisizioni dei pacchetti

Possiamo salvare i risultati delle acquisizioni dei pacchetti in un file per un'analisi successiva.

Per salvare i pacchetti in un file invece di visualizzarli sullo schermo, usa l'opzione -w :

sudo tcpdump -i any -c 5 -nn -w sample.pcap port 22

Questo comando salva l'output in un file chiamato sample.pcap . Il .pcap l'estensione sta per "packet capture" ed è la convenzione per questo formato di file.

Conclusione

In questo tutorial, abbiamo imparato come eseguire l'acquisizione e il filtraggio dei pacchetti in base a diverse opzioni, utilizzando tcpdump comando.


Linux
  1. Come acquisire e analizzare i pacchetti con il comando tcpdump su Linux

  2. Comando Linux mv

  3. Linux du comando

  4. comando IP Linux

  5. comando cd di Linux

Comando Data in Linux

Comando W in Linux

Comando Tcpdump in Linux

Al comando in Linux

Comando Df in Linux

Analizzatore di pacchetti:15 esempi di comandi TCPDUMP