TCPflow - Analizirajte i otklanjajte greške mrežnog prometa u Linuxu


TCPflow je besplatan, otvoreni izvor, moćan alat baziran na komandnoj liniji za analizu mrežnog prometa na sistemima sličnim Unixu kao što je Linux. Snima podatke primljene ili prenesene preko TCP konekcija i pohranjuje ih u datoteku za kasniju analizu, u korisnom formatu koji omogućava analizu protokola i otklanjanje grešaka.

Pročitajte također: 16 najboljih alata za praćenje propusnosti za analizu korištenja mreže u Linuxu

To je zapravo alat sličan tcpdumpu jer obrađuje pakete sa žice ili iz pohranjene datoteke. Podržava iste moćne izraze za filtriranje koje podržava njegov kolega. Jedina razlika je u tome što tcpflow postavlja sve TCP pakete u red i sastavlja svaki tok u posebnu datoteku (fajl za svaki smjer toka) za kasniju analizu.

Njegov skup funkcija uključuje napredni plug-in sistem za dekompresiju komprimiranih HTTP veza, poništavanje MIME kodiranja ili pozivanje programa treće strane za naknadnu obradu i još mnogo toga.

Postoji mnogo slučajeva upotrebe za tcpflow koji uključuju razumijevanje tokova mrežnih paketa i također podržava izvođenje mrežne forenzike i otkrivanje sadržaja HTTP sesija.

Kako instalirati TCPflow u Linux sisteme

TCPflow je dostupan u zvaničnim repozitorijumima mainstream GNU/Linux distribucija, možete ga instalirati koristeći svoj menadžer paketa kao što je prikazano.

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

Nakon instaliranja tcpflow, možete ga pokrenuti sa privilegijama superkorisnika, u suprotnom koristite sudo komandu. Imajte na umu da sluša na aktivnom mrežnom sučelju (na primjer enp0s3).

sudo tcpflow

tcpflow: listening on enp0s3

Prema zadanim postavkama, tcpflow pohranjuje sve snimljene podatke u datoteke koje imaju imena u obrascu (ovo može biti drugačije ako koristite određene opcije kao što je vremenska oznaka).

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

Sada napravimo listu direktorija da vidimo da li je tcp tok uhvaćen u bilo kojoj datoteki.

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

Kao što smo ranije spomenuli, svaki TCP tok je pohranjen u vlastitom fajlu. Iz gornjeg izlaza možete vidjeti da postoje tri datoteke transkripta, koje ukazuju na tcpflow u dva suprotna smjera, gdje je izvorna IP adresa u prvoj datoteci i odredišna IP adresa u drugoj i obrnuto.

Prva datoteka 192.168.043.031.52920-216.058.210.034.00443 sadrži podatke prenesene sa hosta 192.168.043.031 (lokalnog hosta na kojem je pokrenut tcpflow) preko porta 52920, na host 216.058.210.034 (udaljeni host) preko porta 443.

A druga datoteka 216.058.210.034.00443-192.168.043.031.52920 sadrži podatke poslane sa hosta 216.058.210.034 (udaljeni host) preko porta 443 na host 192.168.043.031 (lokalni host na kojem je pokrenut tcpflow) preko porta 52920.

Takođe je generisan XML izveštaj, koji sadrži informacije o programu kao što je način na koji je kompajliran, računar na kome je pokrenut i zapis o svakoj tcp konekciji.

Kao što ste možda primijetili, tcpflow po defaultu pohranjuje datoteke transkripta u trenutni direktorij. Opcija -o vam može pomoći da odredite izlazni direktorij u koji će se zapisivati datoteke transkripta.

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

Također možete odštampati sadržaj paketa na stdout kako su primljeni, bez pohranjivanja snimljenih podataka u datoteke, koristeći -c zastavicu kako slijedi.

Da biste ovo efikasno testirali, otvorite drugi terminal i pokrenite ping ili pretražujte internet. Trebali biste biti u mogućnosti da vidite detalje pinga ili vaše detalje pretraživanja koje tcpflow bilježi.

sudo tcpflow -c

Moguće je uhvatiti sav promet na određenom portu, na primjer port 80 (HTTP). U slučaju HTTP prometa, moći ćete vidjeti HTTP zaglavlja praćena svim sadržajem na stdout-u ili u jednoj datoteci ako se ukloni prekidač -c.

sudo tcpflow port 80

Da biste uhvatili pakete sa određenog mrežnog interfejsa, koristite oznaku -i da biste naveli ime interfejsa.

sudo tcpflow -i eth0 port 80

Također možete odrediti ciljni host (prihvaćene vrijednosti su IP adresa, ime hosta ili domeni), kao što je prikazano.

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

Možete omogućiti svu obradu koristeći sve skenere sa zastavicom -a, ovo je ekvivalentno prekidaču -e all.

sudo tcpflow -a  
OR
sudo tcpflow -e all

Može se aktivirati i određeni skener; dostupni skeneri uključuju md5, http, netviz, tcpdemux i wifiviz (pokrenite tcpflow -H da vidite detaljne informacije o svakom skeneru).

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

Sljedeći primjer pokazuje kako omogućiti sve skenere osim tcpdemuxa.

sudo tcpflow -a -x tcpdemux 

TCPflow obično pokušava staviti mrežni interfejs u promiskuitetni način prije hvatanja paketa. Ovo možete spriječiti pomoću oznake -p kao što je prikazano.

sudo tcpflow -p -i eth0

Za čitanje paketa iz tcpdump pcap datoteke, koristite oznaku -r.

sudo tcpflow -f file.pcap

Možete omogućiti opširni način rada koristeći opcije -v ili -d 10.

sudo tcpflow -v
OR
sudo tcpflow -d 10

Važno: Jedno od ograničenja tcpflow je to što trenutno ne razumije IP fragmente, pa se podaci prenose kao dio TCP veza koji sadrže IP fragmente neće biti pravilno snimljeni.

Za više informacija i mogućnosti korištenja, pogledajte stranicu priručnika tcpflow.

man tcpflow 

TCPflow Github spremište: https://github.com/simsong/tcpflow

To je sve za sada! TCPflow je moćan snimač TCP toka koji je koristan za razumijevanje tokova mrežnih paketa i izvođenje mrežne forenzike i još mnogo toga. Isprobajte ga i podijelite s nama svoje mišljenje o tome u komentarima.