Tcpdump è un'utilità da linea di comando che annna il pacchetto di rete. È più comunemente usato per la risoluzione dei problemi di reti e per i problemi di sicurezza dei test. Nonostante l'assenza di un'interfaccia utente grafica, è l'utilità più popolare, potente e versatile.
È originario di Linux in modo tale che la maggior parte delle distribuzioni Linux lo installassero come parte del sistema operativo standard. TCPDUMP è un programma interfacciato LiBPCAP, che è una libreria per l'acquisizione di dati di rete.
Questo articolo demistificerà TCPDump mostrando come catturare, leggere e analizzare il traffico di rete acquisito in questa utilità. In seguito useremo la nostra comprensione per ispezionare i pacchetti di dati con i filtri Flag TCP avanzati.
Installazione di TCPDump
L'installazione predefinita TCPDump nella tua distribuzione dipende dalle opzioni selezionate durante il processo di installazione. Nel caso dell'installazione personalizzata, è possibile che il pacchetto non sia disponibile. È possibile controllare l'installazione di TCPDUMP utilizzando il dpkg comando con il "-S" opzione.
Ubuntu $ ubuntu: ~ $ dpkg -s tcpdump
Oppure usa il comando "sudo apt-get install tcpdump" per installare TCPDump in Ubuntu Linux.
Cattura dei pacchetti in TCPDump:
Per iniziare il processo di acquisizione, dobbiamo prima trovare la nostra interfaccia di lavoro usando "ifconfig"Comando. Oppure possiamo elencare tutte le interfacce disponibili utilizzando il tcpdump comando con il "-D" opzione.
Ubuntu $ ubuntu: ~ $ tcpdump -d
Per iniziare il processo di acquisizione, è possibile utilizzare la sintassi;
tcpdump [-options] [espressione]
Ad esempio, nel comando seguente, utilizziamo "-io"Opzione per acquisire traffico sul"enp0s3”Interfaccia, con un"-C"Flag per limitare i pacchetti catturati e scrivere"-w"È a un test_capture.PCAP file.
Ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 -w /tmp /test_capture.PCAP
Allo stesso modo, è possibile utilizzare varie combinazioni di filtri per isolare il traffico secondo le tue esigenze. Uno di questi esempi include l'acquisizione di dati di rete che escono e arrivano all'host utilizzando il ospite comando per uno specifico porta. Inoltre, ho usato il "-N"Flag per impedire a TCPDump di catturare le ricerche DNS. Questa bandiera è molto utile per saturare il traffico durante la risoluzione dei problemi della rete.
Ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -c 20 host 10.0.2.Porta 15 e DST 80 -W /TMP /TEST_CAPTURE1.PCAP
TCPDUMP: ascolto su ENP0S3, Link-Type EN10MB (Ethernet), dimensione di acquisizione 262144 byte
20 pacchetti catturati
21 pacchetti ricevuti tramite filtro
0 pacchetti lasciati cadere da kernel
Noi usiamo il "E"Comando per acquisire solo pacchetti contenenti l'host 10.0.2.15 e porta di destinazione 80. Allo stesso modo, possono essere applicati vari altri filtri per facilitare le attività di risoluzione dei problemi.
Se non vuoi usare il "-C"Flag per limitare il traffico di acquisizione, puoi usare un segnale di interrupt, i.e., Ctrl+c, per fermare il processo di isolamento.
Leggendo i file TCPDump
Leggere i file catturati TCPDump può essere molto travolgente. Per impostazione predefinita, TCP assegna i nomi a indirizzi e porte IP. Useremo il “-R"Flag per leggere il nostro file già catturato test_capture.PCAP salvato nel /TMP cartella. Faremo l'uscita Awk comanda di emergere solo l'indirizzo IP di origine e le porte e pipiscilo al comando Testa per visualizzare solo le prime 5 voci.
Ubuntu $ ubuntu: ~ $ sudo tcpdump -r /tmp /test_capture1.PCAP | awk -f "" 'print $ 3' | Testa -5
Lettura da file /tmp /test_capture.PCAP, tipo Link EN10MB (Ethernet)
Ip ubuntu.53298
Ip ubuntu.53298
Ip ubuntu.53298
Ip ubuntu.53298
Ip ubuntu.53298
Tuttavia, si consiglia di utilizzare indirizzi IP e porte in numeri per risolvere i problemi di networking. Disabiliteremo la risoluzione dei nomi IP con "-N"Flag e nomi di porte con"-nn".
Ubuntu $ ubuntu: ~ $ sudo tcpdump -i enp0s3 -n
TCPDUMP: output verbosio soppresso, utilizzare -v o -vv per il decodifica del protocollo completo
Ascolto su ENP0S3, tipo Link EN10MB (Ethernet), dimensione di acquisizione 262144 byte
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: bandiere [P.], SEQ 1276027591: 1276027630, ACK 544039114, Win 63900, lunghezza 39
20:08:22.146745 IP 10.0.2.15.43456> 54.204.39.132.443: bandiere [P.], SEQ 3381018839: 3381018885, ACK 543136109, Win 65535, lunghezza 46
20:08:22.147506 IP 172.67.39.148.443> 10.0.2.15.54080: bandiere [.], Ack 39, vinci 65535, lunghezza 0
20:08:22.147510 IP 54.204.39.132.443> 10.0.2.15.43456: bandiere [.], Ack 46, vinci 65535, lunghezza 0
20:08:22.202346 IP 216.58.209.142.443> 10.0.2.15.41050: bandiere [P.], SEQ 502925703: 502925826, ACK 1203118935, vinci 65535, lunghezza 123
20:08:22.202868 IP 10.0.2.15.41050> 216.58.209.142.443: bandiere [P.], seq 1:40, Ack 123, vinci 65535, lunghezza 39
Comprensione dell'output catturato
TCPDump cattura molti protocolli, tra cui UDP, TCP, ICMP, ecc. Non è facile coprirli tutti qui. Tuttavia, è importante capire come vengono visualizzate le informazioni e quali parametri include.
TCPDump visualizza ogni pacchetto in una linea, con un timestamp e informazioni rispetto al protocollo. In generale, il formato di un protocollo TCP è il seguente:
. > . : , , , , ,
Spieghiamo uno dei campi di pacchetti catturati per campo:
20:08:22.146354 IP 10.0.2.15.54080> 172.67.39.148.443: bandiere [P.], SEQ 1276027591: 1276027630, ACK 544039114, Win 63900, lunghezza 39
Filtri avanzati
Ora possiamo utilizzare alcune opzioni di filtro di intestazione avanzate per visualizzare e analizzare solo i pacchetti di dati. In qualsiasi pacchetto TCP, le flag TCP iniziano dal 14 ° byte in modo tale che PSH e ACK siano rappresentati da 4 ° e 5 ° bit.
Possiamo usare queste informazioni accendendo questi bit 00011000 o 24 per visualizzare pacchetti di dati con solo flag PSH e ACK. Passiamo questo numero a TCPDump con il filtro "TCP [13] = 24“, Notare che l'indice di array in TCP inizia a zero.
Filtro questo pacchetto dal nostro text_capture.PCAP file e usa il file -UN Opzione per visualizzare tutti i dettagli del pacchetto per te.
Allo stesso modo, puoi filtrare alcuni altri pacchetti di flag utilizzando "TCP [13] = 8" e "TCP [13] = 2" solo per PSH e SYN FLAGS, ecc.
Ubuntu $ ubuntu: ~ $ sudo tcpdump -a 'tcp [13] = 24' -r /tmp /test_capture.PCAP
Lettura da file /tmp /test_capture.PCAP, tipo Link EN10MB (Ethernet)
19:26:17.827902 IP Ubuntu.53298> 32.121.122.34.avanti Cristo.GoogleUserContent.com.http: flags [p.], SEQ 4286571276: 4286571363, ACK 252096002, Win 64240, lunghezza 87: http: get / http / 1.1
E…:?@[email protected].
... "Zy .2.P ... p ... get / http / 1.1
Host: controllo della connettività.Ubuntu.com
Accetta: */ *
Connessione: chiudere
Conclusione
In questo articolo, ti abbiamo presentato alcuni degli argomenti più importanti di TCPDump. TCPDump, combinato con il potere della CLI, può essere di grande aiuto nella risoluzione dei problemi di rete, nell'automazione e nella gestione della sicurezza. Una volta studiati e combinati, i suoi filtri e le opzioni di riga di comando possono contribuire molto alle attività quotidiane per la risoluzione dei problemi e l'automazione e la comprensione generale della rete.