In questa guida dimostreremo come installare tcpdump su un sistema Linux e come acquisire e analizzare i pacchetti TCP/IP utilizzando tcpdump.
Come installare Tcpdump
Tcpdump è preinstallato su molte distribuzioni Linux. Ma se non è già installato sul tuo sistema, puoi installare tcpdump sul tuo sistema Linux. Per installare tcpdump sul sistema Ubuntu 22.04, utilizzare il seguente comando:
$ sudo apt installa tcpdump
Per installare tcpdump su Fedora/CentOS, utilizzare il seguente comando:
$ sudo dnf installa tcpdump
Come acquisire i pacchetti utilizzando il comando Tcpdump
Per acquisire i pacchetti con tcpdump, avvia il terminale con privilegi sudo utilizzando 'Ctrl+Alt+t'. Questo strumento include diverse opzioni e filtri per acquisire i pacchetti TCP/IP. Se desideri acquisire tutti i pacchetti in flusso dell'interfaccia di rete corrente o predefinita, utilizza il comando 'tcpdump' senza alcuna opzione.
$ sudo tcpdump
Il comando fornito cattura i pacchetti dell'interfaccia di rete predefinita del tuo sistema.
Al termine dell'esecuzione di questo comando, sul terminale vengono visualizzati tutti i conteggi dei pacchetti catturati e filtrati.
Comprendiamo l'output.
Tcpdump consente l'analisi delle intestazioni dei pacchetti TCP/IP. Mostra una singola riga per ciascun pacchetto e il comando continua a essere eseguito finché non si preme 'Ctrl+C' per interromperlo.
Ogni riga fornita da tcpdump contiene i seguenti dettagli:
- Timestamp Unix (ad esempio, 02:28:57.839523)
- Protocollo (IP)
- Nome host o IP di origine e numero di porta
- Nome host o IP di destinazione e numero di porta
- Flag TCP (ad esempio, Flag [F.]) che indicano lo stato della connessione con valori come S (SYN), F (FIN). (ACK), P (SPINGERE), R (RST)
- Numero di sequenza dei dati nel pacchetto (ad esempio, seq 5829:6820)
- Numero di riconoscimento (ad esempio, ack 1016)
- Dimensione della finestra (ad esempio, win 65535) che rappresenta i byte disponibili nel buffer di ricezione seguiti dalle opzioni TCP
- Lunghezza del payload dei dati (ad esempio, lunghezza 991)
Per elencare tutte le interfacce di rete del tuo sistema, usa il comando 'tcpdump' con l'opzione '-D'.
$ sudo tcpdump -DO
$ tcpdump --list-interfacesQuesto comando elenca tutte le interfacce di rete connesse o in esecuzione sul tuo sistema Linux.
Cattura i pacchetti dell'interfaccia di rete specificata
Se desideri acquisire i pacchetti TCP/IP che passano attraverso un'interfaccia specifica, utilizza il flag '-i' con il comando 'tcpdump' e specifica il nome dell'interfaccia di rete.
$ sudo tcpdump -i lo
Il comando dato cattura il traffico sull'interfaccia “lo”. Se si desidera visualizzare informazioni dettagliate o dettagliate sul pacchetto, utilizzare il flag '-v'. Per stampare dettagli più completi, utilizzare il flag “-vv” con il comando “tcpdump”. L'uso e l'analisi regolari contribuiscono a mantenere un ambiente di rete robusto e sicuro.
Allo stesso modo, puoi acquisire il traffico su qualsiasi interfaccia utilizzando il seguente comando:
$ sudo tcpdump -i any
Cattura i pacchetti utilizzando una porta specifica
È possibile acquisire e filtrare i pacchetti specificando il nome dell'interfaccia e il numero di porta. Ad esempio, per catturare i pacchetti di rete che passano attraverso l'interfaccia “enp0s3” utilizzando la porta 22, utilizzare il seguente comando:
$ tcpdump -i enp0s3 porta 22Il comando precedente cattura tutti i pacchetti in flusso dall'interfaccia 'enp0s3'.
Cattura i pacchetti limitati con Tcpdump
È possibile utilizzare il flag '-c' con il comando 'tcpdump' per acquisire un numero specificato di pacchetti. Ad esempio, per acquisire quattro pacchetti sull'interfaccia 'enp0s3', utilizzare il seguente comando:
$ tcpdump -i enp0s3 -c 4
Sostituisci il nome dell'interfaccia utilizzando il tuo sistema.
Comandi Tcpdump utili per catturare il traffico di rete
Di seguito, abbiamo elencato alcuni utili comandi 'tcpdump' che ti aiuteranno a catturare e filtrare il traffico di rete o i pacchetti in modo efficiente:
Utilizzando il comando “tcpdump” è possibile catturare i pacchetti di un'interfaccia con un IP di destinazione o un IP di origine definito.
$ tcpdump -i {nome-interfaccia} dst {ip-destinazione}È possibile acquisire pacchetti con una dimensione di istantanea di 65535 byte che è diversa dalla dimensione predefinita di 262144 byte. Nelle versioni precedenti di tcpdump, la dimensione di acquisizione era limitata a 68 o 96 byte.
$ tcpdump -i enp0s3 -s 65535
Come salvare i pacchetti catturati in un file
Se desideri salvare i dati acquisiti in un file per ulteriori analisi, puoi farlo. Cattura il traffico su un'interfaccia specifica e quindi lo salva in un file '.pcap'. Utilizzare il comando seguente per archiviare i dati acquisiti in un file:
$ tcpdump -iAd esempio, abbiamo l'interfaccia 'enps03'. Salva i dati acquisiti nel seguente file:
$ sudo tcpdump -i enps03 -w dump.pcapIn futuro, potrai leggere questo file catturato utilizzando Wireshark o altri strumenti di analisi di rete. Quindi, se vuoi usare Wireshark per analizzare i pacchetti, usa l'argomento '-w' e salvalo in un file '.pcap'.
Conclusione
In questo tutorial, abbiamo dimostrato come acquisire e analizzare i pacchetti utilizzando tcpdump con l'aiuto di diversi esempi. Abbiamo anche imparato come salvare il traffico catturato in un file '.pcap' che puoi visualizzare e analizzare utilizzando Wireshark e altri strumenti di analisi di rete.