TCPflow - Linux'ta Ağ Trafiğini Analiz Edin ve Hata Ayıklayın


TCPflow, Linux gibi Unix benzeri sistemlerde ağ trafiğini analiz etmek için kullanılan ücretsiz, açık kaynaklı, güçlü bir komut satırı tabanlı araçtır. TCP bağlantıları üzerinden alınan veya aktarılan verileri yakalar ve daha sonra analiz edilmek üzere, protokol analizine ve hata ayıklamaya olanak tanıyan kullanışlı bir formatta bir dosyada saklar.

Ayrıca Okuyun: Linux'ta Ağ Kullanımını Analiz Etmek için En İyi 16 Bant Genişliği İzleme Aracı

Aslında, kablodan veya depolanan bir dosyadan gelen paketleri işlediği için tcpdump benzeri bir araçtır. Muadili tarafından desteklenen aynı güçlü filtreleme ifadelerini destekler. Tek fark, tcpflow'un tüm TCP paketlerini sıraya koyması ve daha sonra analiz edilmek üzere her akışı ayrı bir dosyada (her akış yönü için bir dosya) birleştirmesidir.

Özellik seti, sıkıştırılmış HTTP bağlantılarının sıkıştırmasını açmak, MIME kodlamasını geri almak veya işlem sonrası için üçüncü taraf programlarını çağırmak ve çok daha fazlası için gelişmiş bir eklenti sistemi içerir.

Tcpflow'un ağ paket akışlarını anlamayı ve ayrıca ağ adli bilişimi gerçekleştirmeyi ve HTTP oturumlarının içeriğini açıklamayı desteklemeyi içeren birçok kullanım durumu vardır.

Linux Sistemlerinde TCPflow Nasıl Kurulur

TCPflow ana akım GNU/Linux dağıtımlarının resmi depolarında mevcuttur; gösterildiği gibi paket yöneticinizi kullanarak yükleyebilirsiniz.

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

Tcpflow'u yükledikten sonra süper kullanıcı ayrıcalıklarıyla çalıştırabilirsiniz, aksi takdirde sudo komutunu kullanabilirsiniz. Etkin ağ arayüzünü (örneğin enp0s3) dinlediğini unutmayın.

sudo tcpflow

tcpflow: listening on enp0s3

Varsayılan olarak tcpflow, yakalanan tüm verileri formda adları olan dosyalarda saklar (zaman damgası gibi belirli seçenekleri kullanırsanız bu farklı olabilir).

sourceip.sourceport-destip.destport
192.168.043.031.52920-216.058.210.034.00443

Şimdi herhangi bir dosyada tcp akışının yakalanıp yakalanmadığını görmek için bir dizin listesi yapalım.

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

Daha önce de belirttiğimiz gibi her TCP akışı kendi dosyasında saklanır. Yukarıdaki çıktıdan, tcpflow'u iki zıt yönde gösteren üç transkript dosyası olduğunu görebilirsiniz; burada kaynak IP ilk dosyada ve hedef IP ikinci dosyadadır ve bunun tersi de geçerlidir.

İlk dosya 192.168.043.031.52920-216.058.210.034.00443, 192.168.043.031 ana bilgisayarından (tcpflow'un çalıştırıldığı localhost) bağlantı noktası aracılığıyla aktarılan verileri içerir. 52920, 443 bağlantı noktası üzerinden 216.058.210.034'ü (uzak ana makine) barındırmak için.

Ve ikinci dosya 216.058.210.034.00443-192.168.043.031.52920, 443 bağlantı noktası aracılığıyla 216.058.210.034 ana bilgisayarından (uzak ana bilgisayar) gönderilen verileri içerir. Strong>, 52920 bağlantı noktası aracılığıyla 192.168.043.031'i (tcpflow'un çalıştırıldığı localhost) barındırmak için.

Ayrıca programın nasıl derlendiği, çalıştırıldığı bilgisayar ve her TCP bağlantısının kaydı gibi bilgiler içeren oluşturulan bir XML raporu da bulunmaktadır.

Fark etmiş olabileceğiniz gibi tcpflow, transkript dosyalarını varsayılan olarak geçerli dizinde saklar. -o seçeneği, transkript dosyalarının yazılacağı çıktı dizinini belirtmenize yardımcı olabilir.

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

Ayrıca, aşağıdaki gibi -c bayrağını kullanarak, yakalanan verileri dosyalara kaydetmeden, paketlerin içeriğini alındıkları anda stdout'a yazdırabilirsiniz.

Bunu etkili bir şekilde test etmek için ikinci bir terminal açın ve bir ping çalıştırın veya internette gezinin. Tcpflow tarafından yakalanan ping ayrıntılarını veya tarama ayrıntılarınızı görebilmeniz gerekir.

sudo tcpflow -c

Belirli bir bağlantı noktasındaki tüm trafiği yakalamak mümkündür; örneğin 80 bağlantı noktası (HTTP). HTTP trafiği durumunda, -c anahtarı kaldırılırsa, HTTP Başlıklarını ve ardından içeriği stdout'ta veya tek bir dosyada görebileceksiniz.

sudo tcpflow port 80

Belirli bir ağ arayüzünden paketleri yakalamak için arayüz adını belirtmek üzere -i bayrağını kullanın.

sudo tcpflow -i eth0 port 80

Ayrıca gösterildiği gibi bir hedef ana bilgisayar da belirleyebilirsiniz (kabul edilen değerler IP adresi, ana bilgisayar adı veya etki alanlarıdır).

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

-a işaretiyle tüm tarayıcıları kullanarak tüm işlemleri etkinleştirebilirsiniz; bu, -e all anahtarına eşdeğerdir.

sudo tcpflow -a  
OR
sudo tcpflow -e all

Belirli bir tarayıcı da etkinleştirilebilir; mevcut tarayıcılar arasında md5, http, netviz, tcpdemux ve wifiviz bulunur (her tarayıcı hakkında ayrıntılı bilgi görüntülemek için tcpflow -H komutunu çalıştırın).

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şağıdaki örnek, tcpdemux dışındaki tüm tarayıcıların nasıl etkinleştirileceğini göstermektedir.

sudo tcpflow -a -x tcpdemux 

TCPflow genellikle paketleri yakalamadan önce ağ arayüzünü karışık moda geçirmeye çalışır. Gösterildiği gibi -p bayrağını kullanarak bunu önleyebilirsiniz.

sudo tcpflow -p -i eth0

Bir tcpdump pcap dosyasındaki paketleri okumak için -r işaretini kullanın.

sudo tcpflow -f file.pcap

-v veya -d 10 seçeneklerini kullanarak ayrıntılı modu etkinleştirebilirsiniz.

sudo tcpflow -v
OR
sudo tcpflow -d 10

Önemli: tcpflow'un bir sınırlaması şu anda IP parçalarını anlamaması, dolayısıyla verilerin TCP bağlantılarının bir parçası olarak iletilmesidir. IP parçaları içeren dosyalar düzgün şekilde yakalanmayacaktır.

Daha fazla bilgi ve kullanım seçeneği için tcpflow kılavuz sayfasına bakın.

man tcpflow 

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

Şimdilik bu kadar! TCPflow, ağ paket akışlarını anlamak, ağ adli bilişimi gerçekleştirmek ve çok daha fazlası için yararlı olan güçlü bir TCP akış kaydedicidir. Deneyin ve bu konudaki düşüncelerinizi yorumlarda bizimle paylaşın.