GNU/Linux >> Linux Esercitazione >  >> Linux

Analisi del traffico di rete con tcpdump

tcpdump è un programma per computer di analisi di pacchetti di rete dati. Consente all'utente di visualizzare i pacchetti di rete (incluso TCP/IP) trasmessi o ricevuti su una rete. In questo breve articolo mostrerò come acquisire alcuni pacchetti per l'analisi del traffico di rete con tcpdump.

Elenca le interfacce di rete

Tcpdump ha bisogno di accedere alla tua scheda di rete, quindi esegui i seguenti comandi come root (con su o sudo ). Per stampare l'elenco delle interfacce di rete disponibili sul sistema e su cui tcpdump può catturare i pacchetti eseguiti

# tcpdump -D

Nel mio caso, userò il nic "reale", enp3s0.

Acquisizione di pacchetti

Apri un browser web (solo per generare un po' di traffico di rete) ed esegui il seguente comando:

# tcpdump -i <interface>

Anche senza un sito aperto forse vedrai qualche attività di rete. Forse quel "qualcuno" significa molta attività di rete. Esci con ctrl-c e dai un'occhiata ai risultati. L'output mostra un pacchetto per riga, con le seguenti informazioni:

  • Data e ora
  • Protocollo (IP6 per IPv6, IP per IPv4)
  • Host di origine (ip o nome host) e porta
  • Host di destinazione (anche ip o hostname) e porta
  • Bandiere TCP
  • Numero di sequenza
  • Numero ACK
  • Dimensioni della finestra
  • Opzioni TCP
  • Lunghezza dati

Limitazione dell'output

tcpdump -i <interface> -c <n>

Con questo comando il programma uscirà dopo aver ricevuto n pacchetti

Nello screenshot puoi vedere un sonno 2 comando in esecuzione prima di tcpdump. Questo era solo per darmi 2 secondi per caricare wikipedia sul mio browser. Ma è lo stesso tipo di output di prima.

Nascondi nomi

tcpdump -i <interface> -n

Con l'opzione -n, tcpdump non convertirà l'indirizzo IP oi numeri di porta in nomi.

Filtri

Puoi indicare a tcpdump di acquisire solo determinati pacchetti. Ad esempio, per acquisire solo pacchetti https, o più precisamente pacchetti sulla porta 443, aggiungi l'espressione:

tcpdump -i <interface> port <portnumber or portname>

Possiamo anche acquisire pacchetti da o verso un host con la seguente espressione

tcpdump -i <interface> host <ip address or hostname>

Oppure possiamo acquisire pacchetti di qualche protocollo con:

tcpdump -i <interface> proto <protocol>

Dove il protocollo può essere uno tra:icmp, icmp6, igmp, igrp, pim, ah, esp, vrrp, udp o tcp. Per icmp, tcp e udp puoi omettere la parola chiave proto.

Possiamo anche combinare diverse espressioni con 'and' (o '&&'), 'or' (o '||') e not (o '!') e raggrupparle tra parentesi. Ci sono molti più filtri che puoi creare, controlla la manpage di pcap-filter (man pcap-filter ) per ottenere aiuto sulla sintassi.

Aumenta la verbosità dell'output

Utilizzare il parametro -v per aumentare la verbosità. Dalla manpage di tcpdump:

-v Durante l'analisi e la stampa, produrre un output (leggermente più) dettagliato. Ad esempio, vengono stampati il ​​tempo di vita, l'identificazione, la lunghezza totale e le opzioni in un pacchetto IP. Consente inoltre ulteriori controlli dell'integrità dei pacchetti, come la verifica del checksum dell'intestazione IP e ICMP.
-vv Output ancora più dettagliato. Ad esempio, dai pacchetti di risposta NFS vengono stampati campi aggiuntivi e i pacchetti SMB vengono completamente decodificati.
-vvv Output ancora più dettagliato. Ad esempio, le opzioni telnet SB … SE vengono stampate per intero. Con -X anche le opzioni Telnet vengono stampate in esadecimale.

Salva l'acquisizione in un file

Per scrivere i pacchetti in un file per un'analisi successiva, aggiungi -w alla riga di comando:

tcpdump -i <interface> -w <filename>

Puoi leggere quel file in seguito con il flag -r

tcpdump -r <file>

Oppure puoi aprire quel file in un secondo momento con qualche strumento GUI, come wireshark.

Aspetta un secondo... wireshark può anche acquisire pacchetti di rete, perché non l'ho usato dall'inizio?

È vero, wireshark può acquisire pacchetti e anche l'output è molto più chiaro e più facile da seguire e leggere. Con wireshark non devo nemmeno memorizzare una riga di comando, o tenere in mano la manpage, l'articolo del blog o almeno un cheatsheet. Vero anche. Avrei potuto usare wireshark piuttosto che eseguire l'analisi del traffico di rete con tcpdump. Ma a volte ho bisogno di eseguire l'acquisizione su un server o un router, e in quel tipo di computer non voglio sprecare alcuni preziosi cicli della CPU o bit di memoria nel disegnare finestre, colori, pulsanti o altri widget della GUI.

Ed è per questo che scelgo di eseguire l'analisi del traffico di rete con tcpdump sulla riga di comando se ho fretta. Oppure salva l'output in un file che trasferisco per farlo con wireshark.


Linux
  1. Inizia con NetworkManager su Linux

  2. Risolvi i problemi della tua rete con tcpdump

  3. Test dei servizi di rete con Netcat

  4. Mergecap e Tshark:unisci i dump dei pacchetti e analizza il traffico di rete

  5. Miglioramento delle prestazioni TCP su una rete gigabit con molte connessioni e traffico elevato di piccoli pacchetti

Monitora il traffico di rete con Ntopng su Ubuntu 18.04 LTS

Come utilizzare Wireshark per acquisire e analizzare i pacchetti di rete

Esempi di Tcpdump - Cattura il traffico di rete in Linux

Network Manager su Linux con esempi

comando Linux tcpdump

Analizzatore di pacchetti:15 esempi di comandi TCPDUMP