Linux è dotato di una pletora di utilità di rete tra cui scegliere. tcpdump è uno di questi potenti strumenti di rete in grado di acquisire e analizzare il traffico di rete nel caso in cui sia necessario risolvere gli errori di rete su Linux.
Diamo un'occhiata al comando tcpdump ed esploriamo come utilizzarlo per acquisire il traffico di rete.
Installazione di tcpdump in Linux
tcpdump di solito viene preinstallato con tutte le principali distribuzioni Linux e alternative basate sulla sicurezza. Quindi dovresti essere in grado di usarlo subito digitando tcpdump con un sudo prefisso.
Nel caso in cui non sei in grado di eseguire il comando tcpdump e sei bloccato su "tcpdump: comando non trovato" errore, impariamo come installare tcpdump sulla tua macchina Linux.
Per installare tcpdump, avvia il terminale ed esegui il comando corrispondente alla distribuzione Linux che stai attualmente utilizzando:
Sui derivati Debian/Ubuntu, esegui:
sudo apt-ottenere installa tcpdump
SU Sistemi basati su archi, correre:
sudo pacman -S tcpdump
Per installare l'utilità tcpdump su Fedora, CentOS e RHEL, emettere il seguente comando:
sudo dnf installare tcpdump
Nota che se ti viene chiesto di installare libcap, digitare sì o Y poiché è una dipendenza principale, senza la quale tcpdump rifiuterà di avviarsi. Questo dovrebbe installare l'utilità tcpdump e risolvere l'errore "comando non trovato".
Ora che tcpdump è stato installato sul tuo sistema, esploriamo le diverse opzioni e funzionalità che offre.
Catturare il traffico di rete con tcpdump
tcpdump offre molti flag per modificarne l'esecuzione, ma può essere eseguito anche come comando autonomo. Tuttavia, eseguire tcpdump senza flag o argomenti trascurerebbe il suo pieno potenziale. È sempre meglio usare alcuni flag per modificare l'esecuzione e l'output secondo necessità.
Digita questo comando per monitorare le trasmissioni di rete con tcpdump:
sudo tcpdump
Ora tcpdump inizierà a catturare automaticamente i pacchetti di rete fino a un segnale di interruzione viene inviato con CTRL+Z per interrompere manualmente il processo. Per limitare il numero totale di pacchetti acquisiti, utilizzare il -c contrassegnare e digitare il limite di pacchetti desiderato accanto ad esso:
sudo tcpdump -c 5
Se non riesci a dare un senso all'output in questo momento, devi farlo familiarizzare con il formato di output tcpdump primo.
Controlla le interfacce di rete disponibili con tcpdump
Per impostazione predefinita, tcpdump acquisisce il traffico da qualsiasi interfaccia di rete disponibile. Se hai più interfacce di rete attive in uso, potresti voler definire l'interfaccia di rete da cui tcpdump dovrebbe acquisire i pacchetti. Per avviare tcpdump su un'interfaccia specifica, dovrai prima conoscere il nome dell'interfaccia.
Ecco come elencare tutte le interfacce di rete disponibili con tcpdump:
sudo tcpdump -D
Oppure puoi aggiungere il --list-interfaces flag al comando:
sudo tcpdump --elenco-interfacce
L'output restituito contiene un elenco di tutte le interfacce di rete attive che tcpdump può ascoltare. Per configurare tcpdump per acquisire le trasmissioni da una particolare interfaccia di rete, digitare questo comando:
sudo tcpdump -i interface_id
Oppure puoi aggiungere il --interfaccia flag al comando:
sudo tcpdump --interfacciaID_interfaccia
Ora che abbiamo catturato alcuni pacchetti, studiamoli da vicino e impariamo come modificare l'output per renderlo più leggibile.
Esplorazione dei filtri tcpdump
tcpdump è in grado di catturare un'enorme quantità di traffico in una singola esecuzione. Tale sovraccarico di informazioni può farti perdere la strada durante l'analisi o la risoluzione dei problemi con un host o un protocollo di rete specifico.
È qui che entrano in gioco i filtri tcpdump. È possibile aggiungere al comando tcpdump determinati flag per filtrare il traffico di rete e acquisire pacchetti specifici. È quindi possibile archiviare quei pacchetti e successivamente analizzarli per arrivare alla radice di eventuali problemi relativi alla rete. Impariamo come usare i filtri in tcpdump.
Filtra i pacchetti in base al protocollo di rete in uso
Per filtrare i pacchetti trasmessi tramite un protocollo specifico, digita il nome del protocollo con il comando tcpdump e catturerà solo i pacchetti che viaggiano tramite il protocollo di rete definito.
Ad esempio, per acquisire pacchetti basati su ICMP, devi semplicemente allegare icmp alla fine del comando tcpdump. Il processo è lo stesso se desideri acquisire solo pacchetti UDP o TCP.
sudo tcpdump -c 5 icmp
Questo comando restituirà output solo se c'è uno scambio di dati tramite il protocollo ICMP.
Filtra i pacchetti in base all'host
È possibile configurare tcpdump per acquisire i pacchetti relativi a un singolo host con ospite parametro. Ciò è particolarmente utile quando tutti i sistemi della rete funzionano tranne uno. Questo filtro ti consente di eseguire indagini mirate e velocizza il flusso di lavoro generale per la risoluzione dei problemi poiché non sei distratto da dati non necessari.
Per acquisire i pacchetti relativi a un host specifico, definire l'indirizzo di rete dell'host con il ospite parametro:
sudotcpdump-c 5 ospite 192.168.2.1
Simile al filtro del protocollo di rete, questo comando restituirà l'output solo se una trasmissione in corso è correlata all'host definito.
Filtra i pacchetti in base alla porta attiva
tcpdump è dotato di un parametro che consente di filtrare il traffico di rete e acquisire solo i pacchetti che vengono trasmessi da o verso una porta specifica.
Per acquisire i pacchetti provenienti da una porta specifica, aggiungere il file porta contrassegnare il comando tcpdump e definire il numero di porta accanto ad esso. Ad esempio, per acquisire il traffico HTTP in entrata o in uscita, definire la porta 80:
sudo tcpdump -c 5 porta 80
tcpdump ascolterà sulla porta 80, in attesa di trasmissioni HTTP. Una volta rilevati i pacchetti HTTP nella rete, li catturerà.
Combina i filtri insieme per l'ordinamento avanzato
Le sezioni precedenti hanno discusso di come filtrare il traffico in base a porta, protocollo o host, ma se volevi catturare il traffico da una singola porta di un host specifico utilizzando una rete particolare protocollo? Bene, sei fortunato perché questo è possibile, attribuendo alla possibilità di utilizzare operatori logici con il comando tcpdump.
Per acquisire pacchetti da un singolo host utilizzando la porta 443, utilizzare questo comando:
sudotcpdump-c 5 ospite 192.168.2.1eporta 443
Ispeziona il contenuto dei pacchetti acquisiti
Per impostazione predefinita, tcpdump visualizza le intestazioni di un pacchetto nell'output. Sebbene nella maggior parte dei casi sia più che sufficiente, a volte potresti voler o dover esaminare più a fondo i dati acquisiti. È possibile passare determinati parametri con il comando tcpdump per ispezionare il contenuto del pacchetto acquisito.
Ecco come visualizzare il contenuto dei pacchetti:
sudo tcpdump -c 5 -x
Questo comando restituisce la versione esadecimale del contenuto in un pacchetto acquisito. Se desideri visualizzare il modulo ASCII dei dati, puoi passare il -UN parametro con:
sudo tcpdump -A
Salva l'output di tcpdump in un file
Come quasi tutti gli altri strumenti da riga di comando di Linux, puoi archiviare l'output prodotto da tcpdump in un file a cui fare riferimento in seguito.
Questo può essere fatto aggiungendo il -w flag al comando. Al momento dell'esecuzione, tcpdump memorizzerà i dati acquisiti in un file .pcap file che può essere successivamente analizzato con tcpdump o altri strumenti di monitoraggio della rete come Wireshark.
Digita questo comando per archiviare l'output del tuo comando tcpdump in un file:
sudotcpdump-wcatturare.pcap
Per leggere un .pcap file, puoi usare tcpdump con il -r parametro:
sudotcpdump-rcatturare.pcap
Linux viene fornito con una pletora di strumenti di rete in grado di risolvere ogni problema di rete purché sia dal lato software delle cose. Sapere come utilizzare alcuni dei migliori strumenti di rete in Linux sarà sicuramente utile, sia che tu sia un amministratore di sistema che gestisce reti per vivere o solo un utente Linux quotidiano.
Poiché l'elenco effettivo dei comandi di rete disponibili può essere troppo da capire, ecco un elenco di alcuni degli strumenti di rete Linux più importanti che dovresti conoscere.