Weboldal keresés

TCPflow – A hálózati forgalom elemzése és hibakeresése Linuxban


A TCPflow egy ingyenes, nyílt forráskódú, hatékony parancssori alapú eszköz a hálózati forgalom elemzésére Unix-szerű rendszereken, például Linuxon. Rögzíti a TCP-kapcsolaton keresztül fogadott vagy továbbított adatokat, és egy fájlban tárolja későbbi elemzés céljából, olyan hasznos formátumban, amely lehetővé teszi a protokollelemzést és a hibakeresést.

Olvassa el még: A 16 legjobb sávszélesség-figyelő eszköz a Linux hálózathasználatának elemzéséhez

Valójában egy tcpdump-szerű eszköz, mivel a vezetékről vagy egy tárolt fájlból származó csomagokat dolgoz fel. Ugyanazokat a hatékony szűrési kifejezéseket támogatja, amelyeket a megfelelője is támogat. Az egyetlen különbség az, hogy a tcpflow az összes TCP-csomagot sorrendbe állítja, és minden egyes folyamatot külön fájlba (egy fájlba minden áramlási irányhoz) állít össze későbbi elemzés céljából.

Funkciókészlete tartalmaz egy fejlett beépülő rendszert a tömörített HTTP-kapcsolatok kitömörítésére, a MIME-kódolás visszavonására, vagy harmadik féltől származó programok utófeldolgozásra való meghívására és még sok másra.

A tcpflow-nak számos felhasználási módja létezik, beleértve a hálózati csomagfolyamok megértését, valamint támogatja a hálózati kriminalisztika végrehajtását és a HTTP-munkamenetek tartalmának közzétételét.

A TCPflow telepítése Linux rendszereken

A TCPflow elérhető a mainstream GNU/Linux disztribúciók hivatalos tárolóiban, telepítheti csomagkezelőjével az ábrán látható módon.

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

A tcpflow telepítése után futtathatja szuperfelhasználói jogosultságokkal, ellenkező esetben használja a sudo parancsot. Vegye figyelembe, hogy az aktív hálózati interfészen figyel (például enp0s3).

sudo tcpflow

tcpflow: listening on enp0s3

Alapértelmezés szerint a tcpflow az összes rögzített adatot olyan fájlokban tárolja, amelyeknek neve szerepel az űrlapon (ez bizonyos beállítások, például az időbélyeg használata esetén eltérő lehet).

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

Most készítsünk egy könyvtárlistát, hogy megnézzük, hogy a tcp flow-t rögzítették-e valamelyik fájlban.

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

Amint azt korábban említettük, minden TCP-folyamat a saját fájljában tárolódik. A fenti kimenetből láthatja, hogy három átiratfájl van, amelyek két ellentétes irányba jelzik a tcpflow-t, ahol a forrás IP az első fájlban, a cél IP a második fájlban és fordítva.

Az első fájl 192.168.043.031.52920-216.058.210.034.00443 a 192.168.043.031 gazdagépről (a helyi gazdagépről, amelyen a tcpflow fut) a porton keresztül továbbított adatokat tartalmaz. 52920, a 216.058.210.034 gazdagéphez (a távoli gazdagéphez) a 443-as porton keresztül.

A második fájl pedig 216.058.210.034.00443-192.168.043.031.52920 a 216.058.210.034 gazdagépről (a távoli gazdagépről) a 443-as porton keresztül küldött adatokat tartalmazza. a 192.168.043.031 gazdagéphez (az a helyi gazdagép, amelyen a tcpflow fut) az 52920 porton keresztül.

Létrejön egy XML jelentés is, amely információkat tartalmaz a programról, például a fordítás módjáról és a számítógépről, amelyen fut, valamint minden tcp-kapcsolat rekordját.

Amint azt már észrevette, a tcpflow alapértelmezés szerint az aktuális könyvtárban tárolja az átiratfájlokat. A -o opció segíthet meghatározni azt a kimeneti könyvtárat, ahová az átírási fájlok kerülnek.

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

A csomagok tartalmát az stdout-ra is kinyomtathatja a fogadásukkor anélkül, hogy a rögzített adatokat fájlokban tárolná, a -c jelző használatával az alábbiak szerint.

Ennek hatékony teszteléséhez nyisson meg egy második terminált, és futtasson egy pinget, vagy böngésszen az interneten. Látnia kell a ping részleteit vagy a böngészési adatokat, amelyeket a tcpflow rögzít.

sudo tcpflow -c

Lehetőség van egy adott port teljes forgalmának rögzítésére, például a 80 portra (HTTP). HTTP-forgalom esetén láthatja a HTTP-fejléceket, majd a tartalmat az stdout-on, vagy egyetlen fájlban, ha eltávolítja a -c kapcsolót.

sudo tcpflow port 80

Ha egy adott hálózati interfészről szeretne csomagokat rögzíteni, használja a -i jelzőt az interfész nevének megadásához.

sudo tcpflow -i eth0 port 80

Megadhat egy célgépet is (az elfogadott értékek az IP-cím, a gazdagépnév vagy a tartományok), az ábrán látható módon.

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

A -a kapcsolóval engedélyezheti az összes feldolgozást az összes szkennerrel, ez egyenértékű a -e all kapcsolóval.

sudo tcpflow -a  
OR
sudo tcpflow -e all

Egy adott szkenner is aktiválható; a rendelkezésre álló szkennerek közé tartozik az md5, http, netviz, tcpdemux és wifiviz (futtassa a tcpflow -H parancsot az egyes szkennerek részletes információinak megtekintéséhez).

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

A következő példa bemutatja, hogyan engedélyezheti az összes szkennert, kivéve a tcpdemuxot.

sudo tcpflow -a -x tcpdemux 

A TCPflow általában a csomagok rögzítése előtt megpróbálja a hálózati interfészt promiscuous módba állítani. Ezt megakadályozhatja a -p jelzővel, ahogy az ábrán látható.

sudo tcpflow -p -i eth0

A tcpdump pcap fájlból származó csomagok olvasásához használja a -r jelzőt.

sudo tcpflow -f file.pcap

A részletes módot a -v vagy a -d 10 opciókkal engedélyezheti.

sudo tcpflow -v
OR
sudo tcpflow -d 10

Fontos: A tcpflow egyik korlátja, hogy jelenleg nem érti az IP-töredékeket, így a TCP-kapcsolatok részeként továbbított adatokat. IP-töredékeket tartalmaz a rendszer nem rögzíti megfelelően.

További információkért és használati lehetőségekért tekintse meg a tcpflow kézikönyvoldalt.

man tcpflow 

TCPflow Github-tárház: https://github.com/simsong/tcpflow

Ez minden most! A TCPflow egy hatékony TCP-folyamrögzítő, amely hasznos a hálózati csomagfolyamok megértéséhez és a hálózati kriminalisztika elvégzéséhez, és még sok máshoz. Próbáld ki, és kommentben oszd meg velünk gondolataidat.