Netflow ile Ağ Trafik Analizi: Kapsamlı Rehber

Ağ trafiğini gerçek zamanlı olarak görmek, bir sysadmin için en değerli yeteneklerden biridir. Bir sunucunun neden yavaş çalıştığını, hangi IP adresinin bant genişliğini tükettiğini ya da gece yarısı şüpheli bir bağlantının nereden geldiğini bulmak istediğinde, geleneksel araçlar çoğu zaman yetersiz kalır. İşte tam bu noktada Netflow devreye giriyor. Netflow, Cisco’nun geliştirdiği ama artık endüstri standardı haline gelmiş bir protokol olup ağ cihazlarından akış verisi toplayarak trafik analizi yapmanı sağlar.

Netflow Nedir ve Nasıl Çalışır

Netflow’u anlamak için önce “flow” kavramını kavramak gerekiyor. Bir flow, aynı kaynak IP, hedef IP, kaynak port, hedef port ve protokol kombinasyonuna sahip paket grubudur. Yani bir istemcinin web sunucusuna yaptığı HTTP isteği tek bir flow olarak tanımlanır. Netflow, bu flow bilgilerini paketlerin kendisini kaydetmek yerine özetleyerek saklar. Bu sayede depolama alanından tasarruf ederken trafik hakkında anlamlı veriler elde edersin.

Temel çalışma mantığı şöyle işler: Ağ cihazın (router, switch veya Linux sunucu) üzerinden geçen paketleri izleyerek flow kayıtları oluşturur. Bu kayıtlar bir Netflow Exporter aracılığıyla Netflow Collector‘a gönderilir. Collector bu verileri depolar ve analiz için hazır hale getirir. Son olarak bir Netflow Analyzer bu verileri görselleştirir ve raporlar.

Netflow’un farklı versiyonları vardır:

  • Netflow v5: En yaygın kullanılan versiyon, IPv4 destekler, yapısı sabittir
  • Netflow v9: Şablon tabanlı, IPv6 ve MPLS desteği sunar
  • IPFIX: v9 tabanlı IETF standardı, en esnek yapı
  • sFlow: Netflow’a alternatif, örnekleme tabanlı çalışır

Linux ortamlarında genellikle IPFIX veya sFlow kullanılırken, Cisco ekipmanlarında v5 ve v9 hala popülerliğini korur.

Gerekli Araçların Kurulumu

nfcapd ve nfdump Kurulumu

Linux tabanlı sistemlerde Netflow verisi toplamak ve analiz etmek için en yaygın kullanılan araç seti nfdump paketidir. Bu paket içinde hem collector (nfcapd) hem de analiz aracı (nfdump) bulunur.

# Ubuntu/Debian sistemlerde kurulum
sudo apt update
sudo apt install nfdump

# RHEL/CentOS sistemlerde
sudo yum install nfdump

# Fedora sistemlerde
sudo dnf install nfdump

Kurulumdan sonra collector’ı başlatmak için aşağıdaki komutu kullanabilirsin:

# Netflow v5/v9 için nfcapd başlatma
# -p: dinlenecek UDP port
# -l: log dizini
# -D: daemon olarak çalıştır
# -T all: tüm field'ları kaydet
# -t 300: her 5 dakikada bir yeni dosya oluştur

sudo nfcapd -p 2055 -l /var/log/netflow -D -T all -t 300

# Çalışıp çalışmadığını kontrol et
ps aux | grep nfcapd
netstat -unlp | grep 2055

Collector çalışmaya başladıktan sonra log dizinini oluşturmak ve izinleri ayarlamak gerekir:

# Log dizinini oluştur ve izinleri ayarla
sudo mkdir -p /var/log/netflow
sudo chown nfcapd:nfcapd /var/log/netflow
# ya da çalıştırdığın kullanıcı için
sudo chown $USER:$USER /var/log/netflow

Softflowd ile Linux’u Exporter Yapmak

Eğer Cisco router’ın yoksa ya da Linux sunucularından da flow verisi göndermek istiyorsan, softflowd tam aradığın araç. Kernel’dan paket verisi alarak Netflow kayıtları oluşturur ve collector’a gönderir.

# Kurulum
sudo apt install softflowd

# Yapılandırma - /etc/softflowd/default.conf düzenle
sudo nano /etc/softflowd/default.conf

Yapılandırma dosyasına şu satırları ekle:

# softflowd yapılandırma dosyası içeriği
interface=eth0
host=127.0.0.1
port=2055
proto=netflow9
timeout=3600
max-flows=8192

Servis başlatma ve otomatik başlatma:

sudo systemctl start softflowd
sudo systemctl enable softflowd
sudo systemctl status softflowd

nfdump ile Trafik Analizi

Veri toplamaya başladıktan sonra asıl iş olan analiz kısmına geçebiliriz. nfdump, SQL benzeri bir sorgulama dili sunar ve çok güçlü filtreleme seçenekleri içerir.

Temel Sorgular

# Son 1 saatin trafik özetini görüntüle
nfdump -R /var/log/netflow -t 2024-01-15/10:00:2024-01-15/11:00 -s record/bytes

# Top 10 kaynak IP adresini bant genişliğine göre listele
nfdump -R /var/log/netflow/2024/01/15 
  -s srcip/bytes 
  -n 10 
  -o "fmt:%saf %byt %pkt %fl"

# Belirli bir IP adresinin trafik detayları
nfdump -R /var/log/netflow -t 2024-01-15/10:00:2024-01-15/11:00 
  "src ip 192.168.1.100" 
  -o extended

# Port bazlı trafik analizi - hangi portlar en çok kullanılıyor
nfdump -R /var/log/netflow 
  -s dstport/bytes 
  -n 20 
  -o "fmt:%dp %byt %pkt %fl"

Gerçek Dünya Senaryo 1: Bant Genişliği Tüketen IP’yi Bulma

Patronun seni arar, “Ofis interneti çok yavaş” der. Firewall loglarına bakarsın ama net bir şey göremezsin. İşte burada Netflow seni kurtarır:

# Son 30 dakikada en fazla trafik üreten kaynak IP'leri bul
nfdump -R /var/log/netflow 
  -t 2024-01-15/14:00:2024-01-15/14:30 
  -s srcip/bytes 
  -n 10 
  -o "fmt:%-20saf %10byt %10pkt %fl" 
  "proto tcp or proto udp"

# Çıktıda şüpheli bir IP gördün, 192.168.1.57 diyelim
# Bu IP'nin hangi hedeflere bağlandığını görmek için
nfdump -R /var/log/netflow 
  -t 2024-01-15/14:00:2024-01-15/14:30 
  "src ip 192.168.1.57" 
  -s dstip/bytes 
  -n 20

Bu sorguları çalıştırdığında görürsün ki 192.168.1.57 numaralı makineden bir bulut depolama servisine 8 GB veri gönderilmiş. Kullanıcıyla konuşunca anlarsın ki o gün büyük bir video dosyası yedeklemiş. Sorun çözüldü.

Gerçek Dünya Senaryo 2: Port Taraması Tespiti

Güvenlik açısından en önemli kullanım senaryolarından biri port taraması tespiti. Bir saldırgan ağınızı taradığında Netflow verisi çok karakteristik bir pattern oluşturur.

# Tek bir kaynak IP'den çok fazla farklı porta bağlantı - port scan işareti
# Önce zaman bazlı özet al
nfdump -R /var/log/netflow 
  -t 2024-01-15/03:00:2024-01-15/04:00 
  -s srcip/flows 
  -n 10 
  -o "fmt:%-20saf %fl %byt"

# Şüpheli IP tespit ettikten sonra detay analizi
nfdump -R /var/log/netflow 
  -t 2024-01-15/03:00:2024-01-15/04:00 
  "src ip 203.0.113.45" 
  -s dstport/flows 
  -n 50 
  -o "fmt:%dp %fl %byt"

# Eğer flow sayısı çok yüksek ama byte sayısı çok düşükse bu port scan
# Her flow için çok az byte = SYN scan tipik işareti

Gece 3’te dışarıdan gelen 203.0.113.45 IP’sinin 2000’den fazla farklı porta bağlanmaya çalıştığını gördüğünde, her flow’da sadece 40-60 byte olduğunu fark edersin. Bu klasik bir SYN scan. Hemen firewall kuralı yazıp o IP’yi bloklamalısın.

NfSen ile Görsel Arayüz

Komut satırı güçlü olsa da yöneticilere görsel raporlar sunmak gerektiğinde NfSen web arayüzü işe yarar. PHP tabanlı bu araç nfdump’ın üzerine kurulur.

# NfSen bağımlılıkları kur
sudo apt install apache2 php php-mail php-rrd rrdtool librrds-perl

# NfSen kaynak kodunu indir ve kur
wget https://github.com/p-alik/nfsen/archive/refs/tags/1.3.8.tar.gz
tar -xzf 1.3.8.tar.gz
cd nfsen-1.3.8

# nfsen.conf dosyasını yapılandır
cp etc/nfsen-dist.conf etc/nfsen.conf
nano etc/nfsen.conf

NfSen yapılandırma dosyasında önemli parametreler:

  • $BASEDIR: NfSen’in kurulu olduğu ana dizin, genellikle /opt/nfsen
  • $BINDIR: nfdump binary dosyalarının yolu
  • $HTMLDIR: Web arayüzü dosyalarının yolu
  • %sources: Flow kaynaklarının tanımlandığı hash, her kaynak için port ve renk belirtilir
  • $WWWUSER: Apache’nin çalıştığı kullanıcı
  • $WWWGROUP: Apache’nin çalıştığı grup

ntopng ile Modern Ağ Analizi

NfSen biraz eski kalmaya başladı. Daha modern ve kapsamlı bir çözüm için ntopng tercih edilebilir. ntopng hem gerçek zamanlı trafik izleme hem de Netflow/IPFIX desteği sunar.

# ntopng kurulum - Ubuntu için
sudo apt install software-properties-common
sudo add-apt-repository universe
sudo apt update
sudo apt install ntopng

# Ya da ntop'un kendi reposundan
wget https://packages.ntop.org/apt-stable/22.04/all/apt-ntop-stable.deb
sudo dpkg -i apt-ntop-stable.deb
sudo apt update
sudo apt install ntopng nprobe

# ntopng yapılandırma dosyası oluştur
sudo nano /etc/ntopng/ntopng.conf

ntopng yapılandırma dosyası içeriği:

# /etc/ntopng/ntopng.conf içeriği
--interface=eth0
--http-port=3000
--community
--daemon
--pid=/var/run/ntopng/ntopng.pid
--data-dir=/var/lib/ntopng
--disable-login=0
--max-num-flows=131072
--max-num-hosts=65536
# ntopng'yi başlat
sudo systemctl start ntopng
sudo systemctl enable ntopng

# nprobe ile Netflow collector olarak kullan
# nprobe Netflow verisi alıp ntopng'ye aktarır
sudo nprobe --zmq "tcp://*:5556" 
  --collector-port 2055 
  --ntopng "tcp://127.0.0.1:5556" 
  --daemon

Artık tarayıcıdan http://sunucu-ip:3000 adresine giderek gerçek zamanlı trafik haritasını, top talkers listesini ve protokol dağılımını görebilirsin.

Gelişmiş Filtreleme ve Otomasyon

Gerçek ortamlarda tek seferlik sorgular yetmez, periyodik raporlar ve otomatik uyarılar gerekir. Aşağıdaki script günlük trafik raporu oluşturur:

#!/bin/bash
# Gunluk netflow rapor scripti - /usr/local/bin/netflow-report.sh

NETFLOW_DIR="/var/log/netflow"
REPORT_DIR="/var/reports/netflow"
DATE=$(date +%Y-%m-%d)
YESTERDAY=$(date -d "yesterday" +%Y/%m/%d)
REPORT_FILE="$REPORT_DIR/report-$DATE.txt"

mkdir -p $REPORT_DIR

echo "===== NETFLOW GUNLUK RAPOR - $DATE =====" > $REPORT_FILE
echo "" >> $REPORT_FILE

echo "--- TOP 10 KAYNAK IP (Byte Bazli) ---" >> $REPORT_FILE
nfdump -R $NETFLOW_DIR/$YESTERDAY 
  -s srcip/bytes 
  -n 10 
  -q 
  -o "fmt:%-20saf %10byt %10pkt %fl" >> $REPORT_FILE

echo "" >> $REPORT_FILE
echo "--- TOP 10 HEDEF PORT ---" >> $REPORT_FILE
nfdump -R $NETFLOW_DIR/$YESTERDAY 
  -s dstport/bytes 
  -n 10 
  -q 
  -o "fmt:%dp %byt %pkt" >> $REPORT_FILE

echo "" >> $REPORT_FILE
echo "--- YUKSEK FLOW SAYILI IP (Potansiyel Scan) ---" >> $REPORT_FILE
nfdump -R $NETFLOW_DIR/$YESTERDAY 
  -s srcip/flows 
  -n 10 
  -q 
  -o "fmt:%-20saf %fl %byt" >> $REPORT_FILE

# Raporu mail ile gonder
if command -v mail &> /dev/null; then
  mail -s "Netflow Gunluk Rapor - $DATE" [email protected] < $REPORT_FILE
fi

echo "Rapor olusturuldu: $REPORT_FILE"

Bu scripti crontab’a ekle:

# crontab -e ile düzenle
# Her sabah 07:00'de rapor oluştur
0 7 * * * /usr/local/bin/netflow-report.sh >> /var/log/netflow-report.log 2>&1

Cisco Router’dan Netflow Yapılandırması

Eğer Cisco ekipmanın varsa, IOS üzerinde Netflow yapılandırması yapmak gerekir. Bu konfigürasyon interface bazında aktive edilir:

# Cisco IOS Netflow yapılandırması
# Bu komutları router CLI'ına girmen gerekiyor

Router# configure terminal

# Interface üzerinde Netflow etkinleştir
Router(config)# interface GigabitEthernet0/0
Router(config-if)# ip flow ingress
Router(config-if)# ip flow egress
Router(config-if)# exit

# Netflow export ayarları
Router(config)# ip flow-export version 9
Router(config)# ip flow-export destination 192.168.1.10 2055
Router(config)# ip flow-export source GigabitEthernet0/0

# Flow cache ayarları
Router(config)# ip flow-cache timeout active 1
Router(config)# ip flow-cache timeout inactive 15

# Yapılandırmayı kaydet
Router# write memory

# Kontrol komutları
Router# show ip flow interface
Router# show ip cache flow
Router# show ip flow export

Bu yapılandırmadan sonra router 192.168.1.10 IP’li collector’ına UDP 2055 portuna flow verileri göndermeye başlar.

Güvenlik Analizinde İleri Seviye Kullanım

DDoS Tespiti

# Ani trafik artışı tespiti - son 5 dakika vs onceki 5 dakika karsilastir
# Belirli bir hedefe gelen paket sayisini kontrol et

HEDEF_IP="10.0.0.100"
ESIK=10000

PAKET_SAYISI=$(nfdump -R /var/log/netflow 
  -t 2024-01-15/14:25:2024-01-15/14:30 
  "dst ip $HEDEF_IP" 
  -s dstip/packets 
  -q 
  -n 1 
  -o csv 2>/dev/null | tail -1 | cut -d',' -f4)

if [ "$PAKET_SAYISI" -gt "$ESIK" ]; then
  echo "UYARI: $HEDEF_IP adresine $PAKET_SAYISI paket/5dk - Olasi DDoS!"
  # Alert gonder veya otomatik mitigation baslat
fi

Veri Sızıntısı Tespiti

İçeriden dışarıya anormal miktarda veri gitmesi veri sızıntısına işaret edebilir. Özellikle mesai saatleri dışında gerçekleşen büyük transferler dikkat çekici olmalı:

# Gece yarisi (00:00-06:00) ic agdan disariya buyuk transfer analizi
nfdump -R /var/log/netflow 
  -t 2024-01-15/00:00:2024-01-15/06:00 
  "src net 192.168.0.0/16 and not dst net 192.168.0.0/16 and bytes > 10000000" 
  -s srcip/bytes 
  -n 20 
  -o "fmt:%-20saf %10byt %10pkt %fl"

Çıktıda 192.168.1.87 IP’li bir makinenin gece 02:00-03:00 arasında 5 GB veri gönderdiğini görürsen, bu ciddi bir araştırma konusu olur. Söz konusu makinede çalışan process’leri, açık bağlantıları ve dosya erişim loglarını incelemeye başlamalısın.

Depolama ve Retention Yönetimi

Netflow verisi zamanla birikir ve disk alanını doldurabilir. Akıllı bir retention politikası belirlemek önemli:

# 30 gunden eski netflow dosyalarini sil
find /var/log/netflow -name "nfcapd.*" -mtime +30 -delete

# Boyut bazli temizlik - 50GB'i gecince eski dosyalari sil
LIMIT_GB=50
CURRENT_GB=$(du -s /var/log/netflow | cut -f1)
LIMIT_KB=$((LIMIT_GB * 1024 * 1024))

if [ "$CURRENT_GB" -gt "$LIMIT_KB" ]; then
  echo "Netflow dizini limit asimda, eski dosyalar siliniyor..."
  ls -t /var/log/netflow/nfcapd.* | tail -n +100 | xargs rm -f
fi

# Bu scripti crontab'a gunluk ekle
# 0 2 * * * /usr/local/bin/netflow-cleanup.sh

Tipik ortamlarda retention süreleri konusunda şunları söyleyebilirim:

  • Aktif izleme: Son 7 gün, tam detay
  • Orta vadeli: 7-30 gün, özetlenmiş veri
  • Uzun vadeli arşiv: 30-365 gün, sadece günlük özetler
  • Yasal gereklilik: Bazı sektörlerde 1-5 yıl arşiv zorunluluğu var

Sıkıştırma da önemli bir faktör. nfcapd varsayılan olarak veriyi sıkıştırarak kaydeder. 100 Mbps’lik bir link için günde yaklaşık 2-5 GB ham Netflow verisi oluştuğunu hesapla.

Performans İpuçları ve Dikkat Edilecek Noktalar

Üretim ortamında Netflow çalıştırırken bazı pratik noktalar var:

  • Örnekleme kullan: Yüksek trafik ortamlarında her paketi kaydetmek yerine 1:100 veya 1:1000 örnekleme ile toplam yükü azaltabilirsin. Cisco’da ip flow-sampling komutu ile ayarlanır.
  • UDP kayıplarına hazır ol: Netflow UDP üzerinden çalışır, paket kaybı yaşanabilir. Bu genellikle kabul edilebilir çünkü istatistiksel analiz yapıyoruz, kesin sayım değil.
  • Collector kapasitesini planla: Büyük ortamlarda collector sunucusu CPU ve disk I/O darboğazı yaşayabilir. nfcapd genellikle düşük CPU kullanır ama yoğun analiz sorguları yük getirir.
  • Zaman senkronizasyonuna dikkat et: Exporter ve collector arasında zaman farkı olursa analiz sonuçları yanıltıcı olur. NTP kullanımı zorunlu.
  • Firewall kurallarını unutma: UDP 2055 portunu collector’a açman gerekiyor, aksi halde flow verisi gelmez.

Sonuç

Netflow, ağın içinde olup biteni anlamak için gerçekten vazgeçilmez bir araç. Paket analizi gibi kaynak tüketen yöntemlere gerek kalmadan, ağ genelindeki trafik desenlerini uzun süre boyunca kaydedebilir ve analiz edebilirsin. Bir güvenlik olayı sonrasında “3 ay önce bu IP ne zaman içeri girdi?” sorusunu yanıtlamak için Netflow verisi olması ile olmaması arasındaki fark, olayı çözmek ile çözememek arasındaki fark olabilir.

Başlangıç için softflowd artı nfcapd kombinasyonunu küçük bir test ortamında dene. Verilerin toplanmaya başladığını gördükten sonra ntopng gibi görsel araçları ekle. Zamanla kendi ağının normal trafik desenini öğrenirsin ve anormallikler göze çarpmaya başlar.

Ağ güvenliği reaktif değil proaktif olmalı. Netflow bu proaktif yaklaşımın en temel taşlarından biri. Şimdi kolları sıva ve collector’ını ayarla.

Yorum yapın