TCPflow - Analyser og feilsøk nettverkstrafikk i Linux


TCPflow er et gratis, åpen kildekode, kraftig kommandolinjebasert verktøy for å analysere nettverkstrafikk på Unix-lignende systemer som Linux. Den fanger opp data som mottas eller overføres over TCP-tilkoblinger, og lagrer dem i en fil for senere analyse, i et nyttig format som tillater protokollanalyse og feilsøking.

Les også: 16 beste båndbreddeovervåkingsverktøy for å analysere nettverksbruk i Linux

Det er faktisk et tcpdump-lignende verktøy da det behandler pakker fra ledningen eller fra en lagret fil. Den støtter de samme kraftige filtreringsuttrykkene som støttes av motparten. Den eneste forskjellen er at tcpflow setter alle TCP-pakkene i rekkefølge og setter sammen hver flyt i en separat fil (en fil for hver strømningsretning) for senere analyse.

Funksjonssettet inkluderer et avansert plug-in-system for å dekomprimere komprimerte HTTP-forbindelser, angre MIME-koding eller påkalle tredjepartsprogrammer for etterbehandling og mye mer.

Det er mange brukstilfeller for tcpflow som inkluderer å forstå nettverkspakkeflyter og også støtter for å utføre nettverksetterforskning og avsløre innholdet i HTTP-økter.

Hvordan installere TCPflow i Linux-systemer

TCPflow er tilgjengelig i de offisielle repositoriene til vanlige GNU/Linux-distribusjoner, du kan installere den ved å bruke pakkebehandlingen som vist.

sudo apt install tcpflow	#Debian/Ubuntu
sudo yum install tcpflow	#CentOS/RHEL
sudo dnf install tcpflow	#Fedora 22+

Etter å ha installert tcpflow, kan du kjøre den med superbrukerrettigheter, ellers bruk sudo-kommandoen. Merk at den lytter på det aktive nettverksgrensesnittet (for eksempel enp0s3).

sudo tcpflow

tcpflow: listening on enp0s3

Som standard lagrer tcpflow alle fangede data i filer som har navn i skjemaet (dette kan være annerledes hvis du bruker visse alternativer som tidsstempel).

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

La oss nå lage en katalogoppføring for å se om tcp-flyt har blitt fanget opp i noen filer.

ls -1

total 20
-rw-r--r--. 1 root    root     808 Sep 19 12:49 192.168.043.031.52920-216.058.210.034.00443
-rw-r--r--. 1 root    root      59 Sep 19 12:49 216.058.210.034.00443-192.168.043.031.52920

Som vi nevnte tidligere, er hver TCP-flyt lagret i sin egen fil. Fra utgangen ovenfor kan du se at det er tre transkripsjonsfiler, som indikerer tcpflow i to motsatte retninger, der kilde-IP-en i den første filen og destinasjons-IP-en i den andre filen og omvendt.

Den første filen 192.168.043.031.52920-216.058.210.034.00443 inneholder data overført fra vert 192.168.043.031 (den lokale verten som tcpflow ble kjørt på) via porten 52920, for å være vert for 216.058.210.034 (den eksterne verten) via port 443.

Og den andre filen 216.058.210.034.00443-192.168.043.031.52920 inneholder data sendt fra verten 216.058.210.034 (den eksterne verten) via port 443 til vert 192.168.043.031 (den lokale vert som tcpflow ble kjørt på) via port 52920.

Det er også generert en XML-rapport, som inneholder informasjon om programmet, for eksempel hvordan det ble kompilert, og datamaskinen det ble kjørt på og en oversikt over hver tcp-tilkobling.

Som du kanskje har lagt merke til, lagrer tcpflow transkripsjonsfilene i gjeldende katalog som standard. Alternativet -o kan hjelpe deg med å spesifisere utdatakatalogen der transkripsjonsfilene skal skrives.

sudo tcpflow -o tcpflow_files
$ sudo ls -l tcpflow_files

total 32
-rw-r--r--. 1 root root 1665 Sep 19 12:56 157.240.016.035.00443-192.168.000.103.45986
-rw-r--r--. 1 root root   45 Sep 19 12:56 169.044.082.101.00443-192.168.000.103.55496
-rw-r--r--. 1 root root 2738 Sep 19 12:56 172.217.166.046.00443-192.168.000.103.39954
-rw-r--r--. 1 root root   68 Sep 19 12:56 192.168.000.102.00022-192.168.000.103.42436
-rw-r--r--. 1 root root  573 Sep 19 12:56 192.168.000.103.39954-172.217.166.046.00443
-rw-r--r--. 1 root root 4067 Sep 19 12:56 192.168.000.103.45986-157.240.016.035.00443
-rw-r--r--. 1 root root   38 Sep 19 12:56 192.168.000.103.55496-169.044.082.101.00443
-rw-r--r--. 1 root root 3159 Sep 19 12:56 report.xml

Du kan også skrive ut innholdet av pakker til stdout etter hvert som de mottas, uten å lagre noen innhentede data i filer, ved å bruke -c-flagget som følger.

For å teste dette effektivt, åpne en annen terminal og kjør en ping, eller surf på internett. Du skal kunne se pingdetaljene eller nettlesingsdetaljene dine bli fanget opp av tcpflow.

sudo tcpflow -c

Det er mulig å fange opp all trafikk på en bestemt port, for eksempel port 80 (HTTP). Når det gjelder HTTP-trafikk, vil du kunne se HTTP-hodene etterfulgt av innholdet på standarden eller i én fil hvis -c-bryteren er fjernet.

sudo tcpflow port 80

For å fange pakker fra et spesifikt nettverksgrensesnitt, bruk -i-flagget for å spesifisere grensesnittnavnet.

sudo tcpflow -i eth0 port 80

Du kan også spesifisere en målvert (aksepterte verdier er IP-adresse, vertsnavn eller domener), som vist.

sudo tcpflow -c host 192.68.43.1
OR
sudo tcpflow -c host www.google.com 

Du kan aktivere all behandling ved å bruke alle skannere med -a-flagget, dette tilsvarer -e all-bryteren.

sudo tcpflow -a  
OR
sudo tcpflow -e all

En spesifikk skanner kan også aktiveres; de tilgjengelige skannerne inkluderer md5, http, netviz, tcpdemux og wifiviz (kjør tcpflow -H for å se detaljert informasjon om hver skanner).

sudo tcpflow -e http
OR
sudo tcpflow -e md5
OR
sudo tcpflow -e netviz
OR
sudo tcpflow -e tcpdemux
OR
sudo tcpflow -e wifiviz

Følgende eksempel viser hvordan du aktiverer alle skannere unntatt tcpdemux.

sudo tcpflow -a -x tcpdemux 

TCPflow prøver vanligvis å sette nettverksgrensesnittet i promiskuøs modus før pakker fanges opp. Du kan forhindre dette ved å bruke -p-flagget som vist.

sudo tcpflow -p -i eth0

For å lese pakker fra en tcpdump pcap-fil, bruk -r-flagget.

sudo tcpflow -f file.pcap

Du kan aktivere detaljert modus ved å bruke -v eller -d 10 alternativene.

sudo tcpflow -v
OR
sudo tcpflow -d 10

Viktig: En begrensning ved tcpflow er at den for øyeblikket ikke forstår IP-fragmenter, og dermed data som overføres som en del av TCP-tilkoblinger som inneholder IP-fragmenter vil ikke bli fanget opp på riktig måte.

For mer informasjon og bruksalternativer, se man-siden for tcpflow.

man tcpflow 

TCPflow Github-lager: https://github.com/simsong/tcpflow

Det er alt for nå! TCPflow er en kraftig TCP-flytskriver som er nyttig for å forstå nettverkspakkeflyter og utføre nettverksetterforskning, og mye mer. Prøv det og del tankene dine om det med oss i kommentarfeltet.