TCPflow - Analisis dan Debug Lalu Lintas Jaringan di Linux


TCPflow adalah alat berbasis baris perintah yang gratis, sumber terbuka, dan canggih untuk menganalisis lalu lintas jaringan pada sistem mirip Unix seperti Linux. Ini menangkap data yang diterima atau ditransfer melalui koneksi TCP, dan menyimpannya dalam file untuk analisis nanti, dalam format berguna yang memungkinkan analisis protokol dan debugging.

Baca Juga: 16 Alat Pemantauan Bandwidth Terbaik untuk Menganalisis Penggunaan Jaringan di Linux

Ini sebenarnya adalah alat seperti tcpdump karena memproses paket dari kabel atau dari file yang disimpan. Ini mendukung ekspresi pemfilteran kuat yang sama yang didukung oleh mitranya. Satu-satunya perbedaan adalah tcpflow mengurutkan semua paket TCP dan menyusun setiap aliran dalam file terpisah (file untuk setiap arah aliran) untuk dianalisis nanti.

Rangkaian fiturnya mencakup sistem plug-in canggih untuk mendekompresi koneksi HTTP terkompresi, membatalkan pengkodean MIME, atau menjalankan program pihak ketiga untuk pasca-pemrosesan dan banyak lagi.

Ada banyak kasus penggunaan tcpflow yang mencakup untuk memahami aliran paket jaringan dan juga mendukung untuk melakukan forensik jaringan dan membocorkan konten sesi HTTP.

Cara Menginstal TCPflow di Sistem Linux

TCPflow tersedia di repositori resmi distribusi GNU/Linux mainstream, Anda dapat menginstalnya menggunakan manajer paket seperti yang ditunjukkan.

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

Setelah menginstal tcpflow, Anda dapat menjalankannya dengan hak pengguna super, jika tidak, gunakan perintah sudo. Perhatikan bahwa ia mendengarkan pada antarmuka jaringan yang aktif (misalnya enp0s3).

sudo tcpflow

tcpflow: listening on enp0s3

Secara default, tcpflow menyimpan semua data yang diambil dalam file yang memiliki nama dalam formulir (ini mungkin berbeda jika Anda menggunakan opsi tertentu seperti cap waktu).

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

Sekarang mari kita lakukan daftar direktori untuk melihat apakah aliran tcp telah ditangkap dalam file apa pun.

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

Seperti yang kami sebutkan sebelumnya, setiap aliran TCP disimpan dalam filenya sendiri. Dari output diatas terlihat terdapat tiga file transkrip yang menunjukkan tcpflow dalam dua arah berlawanan, dimana IP sumber pada file pertama dan IP tujuan pada file kedua dan sebaliknya.

File pertama 192.168.043.031.52920-216.058.210.034.00443 berisi data yang ditransfer dari host 192.168.043.031 (localhost tempat tcpflow dijalankan) melalui port 52920, untuk menghosting 216.058.210.034 (host jarak jauh) melalui port 443.

Dan file kedua 216.058.210.034.00443-192.168.043.031.52920 berisi data yang dikirim dari host 216.058.210.034 (host jarak jauh) melalui port 443 untuk menghosting 192.168.043.031 (localhost tempat tcpflow dijalankan) melalui port 52920.

Ada juga laporan XML yang dihasilkan, yang berisi informasi tentang program seperti cara kompilasinya, dan komputer yang menjalankannya serta catatan setiap koneksi tcp.

Seperti yang mungkin Anda ketahui, tcpflow menyimpan file transkrip di direktori saat ini secara default. Opsi -o dapat membantu Anda menentukan direktori keluaran tempat file transkrip akan ditulis.

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

Anda juga dapat mencetak isi paket ke stdout saat diterima, tanpa menyimpan data apa pun yang diambil ke file, menggunakan flag -c sebagai berikut.

Untuk mengujinya secara efektif, buka terminal kedua dan jalankan ping, atau jelajahi internet. Anda seharusnya dapat melihat detail ping atau detail penelusuran Anda ditangkap oleh tcpflow.

sudo tcpflow -c

Dimungkinkan untuk menangkap semua lalu lintas pada port tertentu, misalnya port 80 (HTTP). Dalam kasus lalu lintas HTTP, Anda akan dapat melihat Header HTTP diikuti dengan konten, semuanya di stdout atau dalam satu file jika sakelar -c dihilangkan.

sudo tcpflow port 80

Untuk menangkap paket dari antarmuka jaringan tertentu, gunakan flag -i untuk menentukan nama antarmuka.

sudo tcpflow -i eth0 port 80

Anda juga dapat menentukan host target (nilai yang diterima adalah alamat IP, nama host, atau domain), seperti yang ditunjukkan.

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

Anda dapat mengaktifkan semua pemrosesan menggunakan semua pemindai dengan tanda -a, ini setara dengan tombol -e all.

sudo tcpflow -a  
OR
sudo tcpflow -e all

Pemindai tertentu juga dapat diaktifkan; pemindai yang tersedia mencakup md5, http, netviz, tcpdemux, dan wifiviz (jalankan tcpflow -H untuk melihat informasi detail tentang setiap pemindai).

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

Contoh berikut menunjukkan cara mengaktifkan semua pemindai kecuali tcpdemux.

sudo tcpflow -a -x tcpdemux 

TCPflow biasanya mencoba menempatkan antarmuka jaringan ke mode promiscuous sebelum menangkap paket. Anda dapat mencegah hal ini menggunakan tanda -p seperti yang ditunjukkan.

sudo tcpflow -p -i eth0

Untuk membaca paket dari file tcpdump pcap, gunakan flag -r.

sudo tcpflow -f file.pcap

Anda dapat mengaktifkan mode verbose menggunakan opsi -v atau -d 10.

sudo tcpflow -v
OR
sudo tcpflow -d 10

Penting: Salah satu batasan tcpflow adalah, saat ini ia tidak memahami fragmen IP, sehingga data dikirimkan sebagai bagian dari koneksi TCP berisi fragmen IP tidak akan ditangkap dengan benar.

Untuk informasi lebih lanjut dan opsi penggunaan, lihat halaman manual tcpflow.

man tcpflow 

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

Itu saja untuk saat ini! TCPflow adalah perekam aliran TCP canggih yang berguna untuk memahami aliran paket jaringan dan melakukan forensik jaringan, dan banyak lagi. Cobalah dan bagikan pendapat Anda tentang hal itu kepada kami di komentar.