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.