GNU/Linux sunucunuz var ve bu sunucunuz üzerindeki ağ trafiğini incelemek istiyorsunuz. Bu gibi bir durumda kullanılabilecek bir çok uygulama bulunmakta.
Alternatiflere bakalım
Ağ trafiğini takip etme uygulamalarından belki de en önemlisini tcpdump olarak söyleyebilirim. Bu uygulama ile belirli ağ arabirimi üzerinden geçen trafiği özellikle port ve IP bazlı olarak filtreleyerek toplayabiliyor ve detaylı inceleyebiliyorsunuz. Hatta pcap dosyası olarak kaydedip farklı ortamlarda (örneğin wireshark) sonradan da inceleyebiliyorsunuz. Ama bugünkü konumuz tcpdump değil, yani paketlerin içeriği çok da önemli değil.
Alternatif uygulamalara baktığımızda iftop'u görebiliriz. Bu uygulama canlı olarak belirli IP üzerindeki bandgenişliğini sunma özelinde detaylı bilgiler verebilmektedir. Yani hedefimiz IP bazlı olarak bandgenişliği de değil.
Bir başka kullanışlı uygulama da nload. Bu uygulamanın kullanım alanı ise gelen ve giden ağ trafiğini takip etmek diyebiliriz. Bu iş için diğerlerinden daha başarılı bir özet sunabilmektedir. Ama hedefimiz bu da değil.
Peki ne için IPTraf-ng?
Öncelikle IPTraf isimli bir uygulama bulunup, en son 3.0.0 sürümünü 2005 yılında duyurmuştur. Daha sonrasında "yeni jenerasyon" (ng) eki ile başka bir ekip tarafından güncellenerek şuanki sürecine devam etmiştir. Bu nedenle yazı içerisinde IPTraf isminden bahsetsem de IPTraf-ng olarak düşünülmelidir.
IPTraf-ng, konsol bazlı interaktif veya arkaplanda çalışan, ağ istatisik izleme aracıdır. En önemli özelliklerinden birisi loglamaya imkan vermesidir. Diğer uygulamalar gibi ağ arabirimlerine göre kısıtlayacak şekilde çalışabilmektedir. Belirli bir süre çalışıp durabilmektedir. Ve en önemlisi olarak TCP veya UDP trafiğin yönü ve taşınan paketin büyüklüğünü zamana göre sunmaktadır.
Kitabi bilgi olarak aşağıdaki protokolleri tanıyabilmektedir.
- IP, TCP, UDP, ICMP, IGMP, IGP, IGRP, OSPF, ARP, RARP, ESP, AH, GRE and L2TP.
Konsol üzerinde Arayüz uygulaması
Uygulama normal şekilde çalıştırıldığında bir arayüz açılarak bu arayüzde belirli filtrelere göre ağ izlemesi yapılabilmesini sağlamaktadır.
Komut satırı üzerinde çalışma
Arayüzdense daha çok sevdiğim kısım CLI (Komut Satırı) kısmıdır. Tüm özellikleri komut satırı uygulamasında olmasa da önemli kısımlardan bahsedeceğim.
Öncelikle komut satırı olarak iptraf-ng komutu kullanılmaktadır. Fakat tek başına çalıştırmak yerine aşağıdaki parametrelerle çalıştırmak gerekecektir.
Kurulum
Uygulamanın kurulum oldukça kolaydır. Hem iptraf hem de iptraf-ng paketleri hem DEB tabanlı sistemler hem de RPM sistemlerindeki güncel depolarda bulunmaktadır. Dolayısıyla aşağıdaki şekillerde kurulum yapabilirsiniz:
sudo apt install iptraf
veya
sudo yum install iptraf
Loglama yeteneği
Arayüz açılması yerine arkaplanda loglama yapılabilmesi için aşağıdaki şekilde log oluşturulacak yolun belirtilmesi gerekmektedir.
iptraf-ng -L /opt/orneklogdosyasi.txt
Bu kısımda en önemli nokta log dosyasının göreli yol (relative path) olarak değil mutlak yol (absolute path) olarak verilmesi gerekliliğidir.
Uygulamayı bu şekilde başlatmaya çalıştığınızda size yine bir araüz açılacak ve "Yapılandırma" da yapabileceğiniz, izlemeyi başlatacağınız bir arayüz çıkacak. Tabi ki buradaki adımları biraz sonraki parametrelerle seçili hale getirebiliriz.
Ağ arayüzü seçilmesi
Uygulamanın dinleyeceği ağ arayüzü spesifik olarak belirtilebilir veya tüm arayüzlerden, tüm ağ trafiğini analiz edebilirsiniz. Bunun için aşağıdaki gibi uygulama yapılması gerekmektedir:
iptraf-ng -i eno1 -L /opt/orneklogdosyasi.txt
veya
iptraf-ng -i all -L /opt/orneklogdosyasi.txt
Bu şekilde ağ arayüzünü de seçmiş olacağız. Fakat sürecin başlatılması için hala daha arayüzün açılmasını beklemekteyiz.
Arkaplanda açmak ve durdurmak
Uygulamanın arayüzünü hiç görmeden arkaplanda başlatmak için "-B" ile arkaplanda başlatabiliyoruz.
iptraf-ng -B -i eno1 -L /opt/orneklogdosyasi.txt
Bu şekilde arayüz açılmadan direkt olarak sürecin başlatıldığını görebiliriz. Bu süreci kapatmak için "-9" yerine "-USR2" ile süreç id'sini kapatmak daha doğru olacaktır. Nedeni -9 ile anında kapatılırken, USR2 ile şeffaf bir kapatma sağlanabilmektedir.
sudo kill -USR2 43537
Tabi ki bu adıma hiç gerek kalmadan belirli dakika sonrasında otomatik kapatılmasını sağlamak için "-t" parametresi de oldukça verimli olacaktır. Bunun için de dakika cinsinden değer girilmesi gerekmektedir.
iptraf-ng -t 5 -B -i eno1 -L /opt/orneklogdosyasi.txt
Log formatı ve okunması
İşlem başlatıldığında aşağıdaki gibi IP trafik izlenmesi başlandığı yönünde bir mesaj verilmektedir.
Sun Jun 12 00:57:21 2022; ******** IP traffic monitor started ********
Ve tabi ki işlem durdurulduğunda da aşağıdaki mesajı görmekteyiz.
Sun Jun 12 00:58:35 2022; ******** IP traffic monitor stopped ********
Trafik akışı sırasında ise aşağıdaki gibi UDP veya TCP paketlerini görebilmekteyiz.
un Jun 12 00:57:22 2022; UDP; eno1; 61 bytes; from 192.168.1.39:43386 to 216.58.206.202:443
Sun Jun 12 00:57:23 2022; UDP; eno1; 53 bytes; from 216.58.206.202:443 to 192.168.1.39:43386
Sun Jun 12 00:57:23 2022; TCP; eno1; 60 bytes; from 192.168.1.39:49708 to 192.168.1.66:8006; first packet (SYN)
Sun Jun 12 00:57:23 2022; TCP; eno1; 60 bytes; from 192.168.1.66:8006 to 192.168.1.39:49708; first packet (SYN)
Sun Jun 12 00:57:23 2022; TCP; eno1; 52 bytes; from 192.168.1.39:49708 to 192.168.1.66:8006; FIN sent; 6 packets, 867 bytes, avg flow rate 6,94 kbps
Sun Jun 12 00:57:23 2022; TCP; eno1; 52 bytes; from 192.168.1.66:8006 to 192.168.1.39:49708; FIN acknowleged
Sun Jun 12 00:57:23 2022; TCP; eno1; 52 bytes; from 192.168.1.66:8006 to 192.168.1.39:49708; FIN sent; 5 packets, 2050 bytes, avg flow rate 16,40 kbps
Sun Jun 12 00:57:23 2022; TCP; eno1; 52 bytes; from 192.168.1.39:49708 to 192.168.1.66:8006; FIN acknowleged
Sun Jun 12 00:57:23 2022; UDP; eno1; 61 bytes; from 192.168.1.39:43386 to 216.58.206.202:443
Sun Jun 12 00:57:23 2022; UDP; eno1; 53 bytes; from 216.58.206.202:443 to 192.168.1.39:43386
Sun Jun 12 00:57:23 2022; UDP; eno1; 61 bytes; from 192.168.1.39:43386 to 216.58.206.202:443
Sun Jun 12 00:57:23 2022; UDP; eno1; 53 bytes; from 216.58.206.202:443 to 192.168.1.39:43386
Özet
Bu şekilde temel bir şekilde loglanabilecek bir ağ istatistiği çıkartılabilmektedir. Eğer ihtiyaç bu seviyede ise bu uygulamanın kullanılması oldukça verimlidir. Daha üst ihtiyaçlar için başta bahsettiğim uygulamalar ve ntop gibi gelişkin aracı da deneyebilirsiniz. Ve tabi ki bunların dışında farklı seviyede zaman serisi veritabanı kullanarak ağ izlemesi de yapabilen daha gelişkin uygulamalar da kullanabilirsiniz.