TCPflow - Analizați și depanați traficul de rețea în Linux


TCPflow este un instrument gratuit, cu sursă deschisă, puternic, bazat pe linie de comandă, pentru analiza traficului de rețea pe sisteme asemănătoare Unix, cum ar fi Linux. Captează datele primite sau transferate prin conexiuni TCP și le stochează într-un fișier pentru analiza ulterioară, într-un format util care permite analiza și depanarea protocolului.

Citiți și: 16 cele mai bune instrumente de monitorizare a lățimii de bandă pentru a analiza utilizarea rețelei în Linux

Este de fapt un instrument asemănător tcpdump, deoarece procesează pachete din fir sau dintr-un fișier stocat. Acceptă aceleași expresii de filtrare puternice acceptate de omologul său. Singura diferență este că tcpflow pune toate pachetele TCP în ordine și asamblează fiecare flux într-un fișier separat (un fișier pentru fiecare direcție de flux) pentru analiza ulterioară.

Setul său de caracteristici include un sistem plug-in avansat pentru decomprimarea conexiunilor HTTP comprimate, anularea codificării MIME sau invocarea programelor terțe pentru post-procesare și multe altele.

Există multe cazuri de utilizare pentru tcpflow, care includ înțelegerea fluxurilor de pachete de rețea și, de asemenea, suporturi pentru efectuarea criminalisticii rețelei și divulgarea conținutului sesiunilor HTTP.

Cum se instalează TCPflow în sistemele Linux

TCPflow este disponibil în depozitele oficiale ale distribuțiilor GNU/Linux mainstream, îl puteți instala folosind managerul de pachete, așa cum se arată.

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

După instalarea tcpflow, îl puteți rula cu privilegii de superutilizator, altfel utilizați comanda sudo. Rețineți că ascultă pe interfața de rețea activă (de exemplu, enp0s3).

sudo tcpflow

tcpflow: listening on enp0s3

În mod implicit, tcpflow stochează toate datele capturate în fișiere care au nume în formular (acest lucru poate fi diferit dacă utilizați anumite opțiuni, cum ar fi marca temporală).

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

Acum să facem o listă de director pentru a vedea dacă fluxul tcp a fost capturat în orice fișier.

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

După cum am menționat mai devreme, fiecare flux TCP este stocat în propriul fișier. Din rezultatul de mai sus, puteți vedea că există trei fișiere de transcriere, care indică tcpflow în două direcții opuse, unde IP-ul sursă în primul fișier și IP-ul de destinație în al doilea fișier și invers.

Primul fișier 192.168.043.031.52920-216.058.210.034.00443 conține date transferate de la gazda 192.168.043.031 (gazda locală pe care a fost rulat tcpflow) prin portul 52920, pentru a găzdui 216.058.210.034 (gazdă la distanță) prin portul 443.

Iar al doilea fișier 216.058.210.034.00443-192.168.043.031.52920 conține date trimise de la gazda 216.058.210.034 (gazdă la distanță) prin portul 443 pentru a găzdui 192.168.043.031 (gazda locală pe care a fost rulat tcpflow) prin portul 52920.

Există, de asemenea, un raport XML generat, care conține informații despre program, cum ar fi modul în care a fost compilat și computerul pe care a fost rulat și o înregistrare a fiecărei conexiuni tcp.

După cum probabil ați observat, tcpflow stochează fișierele de transcriere în directorul curent în mod implicit. Opțiunea -o vă poate ajuta să specificați directorul de ieșire în care vor fi scrise fișierele de transcriere.

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

De asemenea, puteți imprima conținutul pachetelor pe stdout pe măsură ce sunt primite, fără a stoca date capturate în fișiere, utilizând marcatorul -c după cum urmează.

Pentru a testa acest lucru în mod eficient, deschideți un al doilea terminal și executați un ping sau navigați pe internet. Ar trebui să puteți vedea detaliile ping sau detaliile dvs. de navigare capturate de tcpflow.

sudo tcpflow -c

Este posibil să captați tot traficul pe un anumit port, de exemplu portul 80 (HTTP). În cazul traficului HTTP, veți putea vedea anteturile HTTP urmate de conținutul tot pe stdout sau într-un singur fișier dacă comutatorul -c este eliminat.

sudo tcpflow port 80

Pentru a captura pachete dintr-o interfață de rețea specifică, utilizați indicatorul -i pentru a specifica numele interfeței.

sudo tcpflow -i eth0 port 80

De asemenea, puteți specifica o gazdă țintă (valorile acceptate sunt adresa IP, numele gazdei sau domeniile), așa cum se arată.

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

Puteți activa toată procesarea folosind toate scanerele cu marcatorul -a, aceasta este echivalentă cu comutatorul -e all.

sudo tcpflow -a  
OR
sudo tcpflow -e all

Se poate activa și un scanner specific; scanerele disponibile includ md5, http, netviz, tcpdemux și wifiviz (rulați tcpflow -H pentru a vedea informații detaliate despre fiecare scaner).

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

Următorul exemplu arată cum să activați toate scanerele, cu excepția tcpdemux.

sudo tcpflow -a -x tcpdemux 

TCPflow încearcă de obicei să pună interfața de rețea în modul promiscuu înainte de a captura pachete. Puteți preveni acest lucru folosind steag-ul -p așa cum se arată.

sudo tcpflow -p -i eth0

Pentru a citi pachete dintr-un fișier tcpdump pcap, utilizați indicatorul -r.

sudo tcpflow -f file.pcap

Puteți activa modul verbose folosind opțiunile -v sau -d 10.

sudo tcpflow -v
OR
sudo tcpflow -d 10

Important: o limită a tcpflow este că, în prezent, nu înțelege fragmentele IP, deci datele transmise ca parte a conexiunilor TCP care conțin fragmente IP nu vor fi capturate corect.

Pentru mai multe informații și opțiuni de utilizare, consultați pagina de manual tcpflow.

man tcpflow 

Depozitul Github TCPflow: https://github.com/simsong/tcpflow

Asta este tot pentru acum! TCPflow este un înregistrator de flux TCP puternic, care este util pentru înțelegerea fluxurilor de pachete din rețea și pentru efectuarea analizei criminalistice a rețelei și multe altele. Încercați-l și împărtășiți-vă părerile despre el cu noi în comentarii.