TCPflow – analizuokite ir derinkite tinklo srautą sistemoje „Linux“.


TCPflow yra nemokamas, atvirojo kodo, galingas komandų eilutės įrankis, skirtas tinklo srautui analizuoti Unix tipo sistemose, pvz., Linux. Jis fiksuoja gautus arba perkeltus duomenis per TCP ryšius ir išsaugo juos faile, kad būtų galima vėliau analizuoti, naudingu formatu, leidžiančiu analizuoti protokolą ir derinti.

Taip pat skaitykite: 16 geriausių pralaidumo stebėjimo įrankių tinklo naudojimui Linux sistemoje analizuoti

Tai iš tikrųjų yra į tcpdump panašus įrankis, nes jis apdoroja paketus iš laido arba iš saugomo failo. Jis palaiko tas pačias galingas filtravimo išraiškas, kurias palaiko jo atitikmuo. Vienintelis skirtumas yra tas, kad tcpflow sutvarko visus TCP paketus ir surenka kiekvieną srautą į atskirą failą (failą kiekvienai srauto krypčiai) vėliau analizei.

Į jo funkcijų rinkinį įtraukta pažangi papildinių sistema, skirta suglaudintų HTTP jungčių išglaudinimui, MIME kodavimo atšaukimui arba trečiųjų šalių programų iškvietimui tolesniam apdorojimui ir dar daugiau.

Yra daug tcpflow naudojimo atvejų, įskaitant tinklo paketų srautų supratimą, taip pat palaiko tinklo ekspertizę ir atskleidžia HTTP seansų turinį.

Kaip įdiegti TCPflow Linux sistemose

TCPflow pasiekiamas oficialiose pagrindinių GNU/Linux platinimų saugyklose. Jį galite įdiegti naudodami paketų tvarkyklę, kaip parodyta.

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

Įdiegę tcpflow, galite ją paleisti su supervartotojo teisėmis, kitu atveju naudokite komandą sudo. Atminkite, kad jis klausosi aktyvioje tinklo sąsajoje (pvz., enp0s3).

sudo tcpflow

tcpflow: listening on enp0s3

Pagal numatytuosius nustatymus tcpflow saugo visus užfiksuotus duomenis failuose, kurių pavadinimai formoje (tai gali skirtis, jei naudojate tam tikras parinktis, pvz., laiko žymą).

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

Dabar sudarykime katalogų sąrašą, kad pamatytume, ar tcp srautas buvo užfiksuotas kokiuose nors failuose.

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

Kaip minėjome anksčiau, kiekvienas TCP srautas saugomas savo faile. Iš aukščiau pateiktos išvesties matote, kad yra trys nuorašo failai, nurodantys tcpflow dviem priešingomis kryptimis, kur šaltinio IP pirmame faile ir paskirties IP antrame faile ir atvirkščiai.

Pirmajame faile 192.168.043.031.52920-216.058.210.034.00443 yra duomenys, perkelti iš prieglobos 192.168.043.031 (vietinės prieglobos, kurioje buvo paleistas tcpflow) per prievadą 52920, į prieglobą 216.058.210.034 (nuotolinį pagrindinį kompiuterį) per prievadą 443.

Antrajame faile 216.058.210.034.00443-192.168.043.031.52920 yra duomenys, išsiųsti iš prieglobos 216.058.210.034 (nuotolinio pagrindinio kompiuterio) per prievadą 443 į prieglobą 192.168.043.031 (vietinį prieglobą, kuriame buvo paleistas tcpflow) per prievadą 52920.

Taip pat sugeneruojama XML ataskaita, kurioje pateikiama informacija apie programą, pvz., kaip ji buvo sudaryta, kompiuteris, kuriame ji buvo paleista, ir kiekvieno tcp ryšio įrašas.

Kaip galbūt pastebėjote, tcpflow pagal numatytuosius nustatymus išsaugo nuorašo failus dabartiniame kataloge. Parinktis -o gali padėti nurodyti išvesties katalogą, kuriame bus rašomi nuorašo failai.

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

Taip pat galite spausdinti paketų turinį į stdout, kai jie gaunami, nesaugodami jokių užfiksuotų duomenų failuose, naudodami vėliavėlę -c, kaip nurodyta toliau.

Norėdami tai efektyviai išbandyti, atidarykite antrą terminalą ir paleiskite ping arba naršykite internete. Turėtumėte matyti išsamią ping arba naršymo informaciją, kurią užfiksuoja tcpflow.

sudo tcpflow -c

Galima užfiksuoti visą tam tikro prievado srautą, pvz., prievadą 80 (HTTP). Jei jungiklis -c bus pašalintas, HTTP srauto atveju galėsite matyti HTTP antraštes, po kurių eina visas turinys stdout arba viename faile.

sudo tcpflow port 80

Norėdami užfiksuoti paketus iš konkrečios tinklo sąsajos, naudokite vėliavėlę -i, kad nurodytumėte sąsajos pavadinimą.

sudo tcpflow -i eth0 port 80

Taip pat galite nurodyti tikslinį pagrindinį kompiuterį (priimtinos reikšmės yra IP adresas, pagrindinio kompiuterio pavadinimas arba domenai), kaip parodyta.

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

Galite įjungti visą apdorojimą naudodami visus skaitytuvus su vėliava -a, tai atitinka -e jungiklį.

sudo tcpflow -a  
OR
sudo tcpflow -e all

Taip pat galima aktyvuoti konkretų skaitytuvą; galimi skaitytuvai yra md5, http, netviz, tcpdemux ir wifiviz (paleiskite tcpflow -H, kad peržiūrėtumėte išsamią informaciją apie kiekvieną skaitytuvą).

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

Šiame pavyzdyje parodyta, kaip įjungti visus skaitytuvus, išskyrus tcpdemux.

sudo tcpflow -a -x tcpdemux 

Prieš gaudydamas paketus, TCPflow paprastai bando įjungti tinklo sąsają į neteisėtą režimą. Galite to išvengti naudodami vėliavėlę -p, kaip parodyta.

sudo tcpflow -p -i eth0

Norėdami nuskaityti paketus iš tcpdump pcap failo, naudokite vėliavėlę -r.

sudo tcpflow -f file.pcap

Išsamų režimą galite įjungti naudodami parinktis -v arba -d 10.

sudo tcpflow -v
OR
sudo tcpflow -d 10

Svarbu: vienas tcpflow apribojimų yra tas, kad šiuo metu jis nesupranta IP fragmentų, taigi duomenų, perduodamų kaip TCP ryšių dalis. su IP fragmentais nebus tinkamai užfiksuoti.

Daugiau informacijos ir naudojimo parinkčių rasite tcpflow vadovo puslapyje.

man tcpflow 

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

Tai kol kas viskas! TCPflow yra galingas TCP srauto įrašymo įrenginys, naudingas norint suprasti tinklo paketų srautus, atlikti tinklo ekspertizę ir dar daugiau. Išbandykite ir pasidalykite savo mintimis apie tai su mumis komentaruose.