hping3 ile Özel TCP/IP Paketleri Oluşturma ve Güvenlik Duvarı Testi

Ağ güvenliği testlerinde bir noktaya geliyorsunuz: standart araçlar size yetmiyor. ping çalışıyor ama güvenlik duvarı kurallarınızın gerçekten doğru çalışıp çalışmadığından emin değilsiniz. İşte tam bu noktada hping3 devreye giriyor. Yıllar önce bir müşterinin “firewall’umuz mükemmel” iddiasını hping3 ile birkaç dakikada çürüttüğümü hâlâ hatırlıyorum. O günden beri bu araç, ağ yönetimi çantamın vazgeçilmez bir parçası oldu.

hping3 Nedir ve Neden Önemlidir

hping3, TCP/IP paketlerini manuel olarak oluşturmanıza ve göndermenize olanak tanıyan bir komut satırı aracıdır. Standart ping sadece ICMP echo paketleri gönderirken, hping3 ile TCP, UDP, ICMP ve RAW-IP paketleri oluşturabilir, paket boyutunu, bayrakları, TTL değerini ve neredeyse tüm başlık alanlarını elle ayarlayabilirsiniz.

Peki bu bize ne kazandırıyor? Şunları yapabilirsiniz:

  • Güvenlik duvarı kurallarını doğrulamak
  • Ağ cihazlarının belirli paket türlerine nasıl tepki verdiğini anlamak
  • Bant genişliği ve gecikme testleri yapmak
  • Güvenlik açığı araştırmaları için özel paketler hazırlamak
  • IDS/IPS sistemlerinin etkinliğini kontrol etmek

Önemli uyarı: hping3 güçlü bir araçtır ve yanlış kullanımı ciddi sonuçlar doğurabilir. Bu yazıda anlatılan tüm testleri yalnızca kendi ağınızda veya yazılı izin aldığınız ortamlarda yapın. İzinsiz ağlara karşı kullanmak yasal suçtur.

Kurulum

Çoğu dağıtımda hping3 standart repo’larda bulunur:

# Debian/Ubuntu
sudo apt-get install hping3

# RHEL/CentOS/Rocky Linux
sudo yum install hping3
# veya EPEL gerekebilir:
sudo dnf install epel-release && sudo dnf install hping3

# Arch Linux
sudo pacman -S hping

Kurulum sonrası versiyonu kontrol edin:

hping3 --version

Root yetkisi olmadan bazı özellikler çalışmaz, dolayısıyla testleri sudo ile çalıştırmanızı öneririm.

Temel Parametre Yapısı

hping3’ün parametrelerini anlamak, aracı verimli kullanmanın anahtarıdır. İşte en sık kullandığım parametreler:

-S: SYN bayrağı set eder -A: ACK bayrağı set eder -F: FIN bayrağı set eder -R: RST bayrağı set eder -P: PSH bayrağı set eder -U: URG bayrağı set eder -p [port]: Hedef port numarasını belirtir -s [port]: Kaynak port numarasını belirtir –udp: UDP modu –icmp: ICMP modu -c [sayı]: Gönderilecek paket sayısı -i [süre]: Paketler arası bekleme süresi (saniye veya mikrosaniye) -t [ttl]: TTL değerini ayarlar -w [boyut]: TCP pencere boyutunu belirler -d [boyut]: Veri boyutunu byte olarak ayarlar –rand-source: Rastgele kaynak IP adresi kullanır (test amaçlı) -V: Verbose mod, daha fazla çıktı gösterir -n: Hostname çözümlemesini devre dışı bırakır

İlk Testler: ICMP ile Başlamak

Normal ping çalışmıyor ama bunun nedeni ICMP’nin engellenmiş olması mı, yoksa host’un kapalı olması mı? hping3 bunu netleştirmeye yardımcı olur.

# Klasik ICMP ping
sudo hping3 --icmp -c 4 192.168.1.1

# ICMP ile daha fazla bilgi almak için verbose mod
sudo hping3 --icmp -V -c 4 192.168.1.1

Çıktıda şunlara dikkat edin: len=, ttl=, id= ve rtt= değerleri. Eğer yanıt gelmiyorsa ama TCP portlarına erişebiliyorsanız, ICMP’nin güvenlik duvarında engellendiğini anlarsınız. Bu çok yaygın bir senaryo, özellikle kurumsal ağlarda.

TCP SYN Paketleriyle Port Tarama

Burada işler ilginçleşiyor. TCP SYN paketi göndererek bir portun açık mı, kapalı mı yoksa filtrelenmiş mi olduğunu anlayabilirsiniz.

# 80. porta SYN paketi gönder
sudo hping3 -S -p 80 -c 3 hedef_ip

# 22, 80, 443 portlarını sırayla test etmek
sudo hping3 -S -p 22 -c 1 hedef_ip
sudo hping3 -S -p 80 -c 1 hedef_ip
sudo hping3 -S -p 443 -c 1 hedef_ip

Yanıt yorumlama:

  • SA (SYN-ACK): Port açık, servis çalışıyor
  • RA (RST-ACK): Port kapalı, host erişilebilir
  • Yanıt yok (timeout): Port filtrelenmiş, güvenlik duvarı bloklıyor olabilir

Bu noktada hping3’ün nmap’ten farkını netleştireyim. nmap otomatik yorumlama yapar, hping3 ise ham sonuçları gösterir. Güvenlik duvarı davranışını anlamak için ham sonuçlar çok daha değerlidir.

# Port aralığı tarama (++p ile port numarasını artır)
sudo hping3 -S --scan 20-25,80,443 hedef_ip

Gerçek Dünya Senaryosu 1: Güvenlik Duvarı Kural Doğrulama

Diyelim ki yeni bir firewall kuralı eklediniz: “80 ve 443’e izin ver, diğer her şeyi engelle.” Bunu doğrulamak için şu adımları izlerim:

# 1. Adım: İzin verilen portları test et
sudo hping3 -S -p 80 -c 3 -n hedef_ip
sudo hping3 -S -p 443 -c 3 -n hedef_ip

# 2. Adım: Engellenmesi gereken portu test et
sudo hping3 -S -p 8080 -c 3 -n hedef_ip

# 3. Adım: Engellenmiş bir port için RST yerine drop davranışını kontrol et
# Eğer timeout alıyorsanız firewall DROP, RST alıyorsanız REJECT kullanıyor demektir
sudo hping3 -S -p 22 -c 3 --syn hedef_ip

Bu ayrım, DROP ve REJECT farkını anlamak açısından çok önemlidir. DROP kuralı paketi sessizce yok eder (timeout), REJECT ise RST/ICMP unreachable döndürür. Güvenlik perspektifinden DROP genellikle tercih edilir çünkü saldırgana daha az bilgi verir.

UDP Testleri

UDP testleri biraz daha yorumlanması güç olsa da çok değerlidir. DNS, NTP, SNMP gibi servislerin güvenlik duvarı tarafından nasıl işlendiğini görmek için kullanıyorum:

# UDP ile DNS portunu test et (53)
sudo hping3 --udp -p 53 -c 3 hedef_ip

# NTP portunu test et (123)
sudo hping3 --udp -p 123 -c 3 hedef_ip

# SNMP portunu test et (161)
sudo hping3 --udp -p 161 -c 3 hedef_ip

UDP’de açık port genellikle yanıt vermez ya da servise özgü yanıt döner. Kapalı port ICMP “port unreachable” döndürür. Filtrelenmiş port ise hiçbir şey döndürmez. Bu yüzden UDP testi sabır ister.

Gerçek Dünya Senaryosu 2: Traceroute ile Ağ Yolu Analizi

hping3’ün traceroute özelliği, standart traceroute‘tan farklı çalışır. TCP veya UDP paketleri kullanarak, ICMP’yi engelleyen ortamlarda bile yol takibi yapabilirsiniz:

# TCP SYN ile traceroute (80. port üzerinden)
sudo hping3 -S -p 80 --traceroute -V hedef_ip

# ICMP ile traceroute
sudo hping3 --icmp --traceroute -V hedef_ip

# Belirli bir TTL değerinden başlamak için
sudo hping3 -S -p 443 --traceroute -t 5 hedef_ip

Bu özellik özellikle kurumsal ortamlarda çok işe yarar. ICMP traceroute’u engelleyen güvenlik duvarları aşıldığında, TCP üzerinden yol analizi yapabilirsiniz. Bir keresinde MPLS ağ sorununu tam olarak bu yöntemle tespit ettim; standart traceroute hiçbir şey göstermiyordu ama hping3 -S -p 80 --traceroute ile sorunlu hop hemen ortaya çıktı.

ACK Tarama: Stateful Firewall Tespiti

ACK tarama, bir güvenlik duvarının stateful (durum takipli) mi yoksa stateless mı çalıştığını anlamak için kullanılır:

# ACK paketi gönder
sudo hping3 -A -p 80 -c 3 hedef_ip

# Birden fazla porta ACK gönder
for port in 22 80 443 8080 3306; do
    echo "Port $port test ediliyor..."
    sudo hping3 -A -p $port -c 2 -n hedef_ip
    echo "---"
done

Sonuç yorumlama:

  • Eğer RST yanıtı geliyorsa: Port erişilebilir, güvenlik duvarı stateless veya bu portu geçiriyor demektir
  • Eğer yanıt gelmiyorsa: Güvenlik duvarı stateful çalışıyor ve bu ACK paketini geçerli bir oturumla eşleştiremiyor

Stateful firewall, SYN görmeden gelen ACK’i düşürür. Bu davranışı doğrulamak, güvenlik duvarı yapılandırmanızın doğruluğunu teyit etmenin en temiz yollarından biridir.

Performans ve Bant Genişliği Testi

hping3 ile basit bir bant genişliği testi de yapabilirsiniz. Dikkatli kullanın, yüksek paket hızları ağı zorlayabilir:

# Hızlı paket gönderimi (flood benzeri, dikkatli kullanın)
sudo hping3 -S -p 80 -i u10000 -c 100 hedef_ip
# u10000 = 10000 mikrosaniye = 0.01 saniye arası bekleme

# Büyük paketlerle test
sudo hping3 -S -p 80 -d 1400 -c 10 hedef_ip
# -d 1400 = 1400 byte veri payload

# RTT ölçümü için verbose mod
sudo hping3 -S -p 80 -c 10 -V hedef_ip | grep "rtt"

Bu testleri üretim ortamında çok dikkatli kullanın. Özellikle -flood seçeneği ağı ciddi biçimde etkileyebilir. Test ortamında veya bakım penceresi sırasında çalıştırmanızı öneririm.

Fragmentation ile Güvenlik Duvarı Atlama Testi

Bazı güvenlik duvarları parçalanmış (fragmented) paketleri yanlış işler. Bu bir zayıflık olabilir ve güvenlik denetiminizde kontrol etmeniz gereken bir alan:

# Fragmente paket gönder
sudo hping3 -S -p 80 -f -c 3 hedef_ip
# -f = fragment flag set eder

# MTU boyutunu aşan paket gönder
sudo hping3 -S -p 80 -d 1500 --frag -c 3 hedef_ip

Eğer normal paketler engellenirken fragmente paketler geçiyorsa, güvenlik duvarı konfigürasyonunuzda ciddi bir açık var demektir. Bu testi sonuçlarını mutlaka belgelendirin ve varsa güvenlik ekibinizle paylaşın.

Gerçek Dünya Senaryosu 3: IDS/IPS Etkinlik Testi

Bir müşteride IDS sisteminin gerçekten çalışıp çalışmadığını test etmem gerekti. hping3 ile belirli imzaları tetikleyebilirsiniz:

# Noel ağacı taraması (tüm bayraklar set edilmiş) - birçok IDS tarafından tespit edilir
sudo hping3 -F -S -R -P -A -U -p 80 -c 3 hedef_ip

# NULL tarama (hiçbir bayrak set edilmemiş)
sudo hping3 -p 80 -c 3 hedef_ip

# FIN tarama
sudo hping3 -F -p 80 -c 3 hedef_ip

Bu paket tipleri modern IDS sistemlerinin imza veritabanlarında bulunur. Eğer IDS’iniz bu paketleri tespit edip alarm üretmiyorsa, ya imzalar güncel değildir ya da IDS’in izlediği interface yanlış yapılandırılmıştır.

IP Spoofing Testleri (Dikkatli Olun)

Kaynak IP sahteciliği testleri, anti-spoofing kurallarınızın çalışıp çalışmadığını doğrulamak için kullanılır:

# Sahte kaynak IP ile paket gönder
sudo hping3 -S -p 80 -a 10.0.0.254 -c 3 hedef_ip
# -a = sahte kaynak IP adresi

# Rastgele kaynak IP kullan
sudo hping3 -S -p 80 --rand-source -c 5 hedef_ip

Uyarı: Bu testleri yalnızca kendi kontrol ettiğiniz ağlarda, izole test ortamlarında veya özel izin aldığınız durumlarda yapın. Sahte IP paketi göndermek, pek çok ülkede ve Türkiye’de yasal düzenlemeler kapsamında suç sayılabilir.

Anti-spoofing testi için beklenen davranış şudur: eğer güvenlik duvarınızda doğru uRPF (Unicast Reverse Path Forwarding) veya anti-spoofing kuralları varsa, bu paketler hedefe ulaşmadan düşürülmelidir.

Çıktıları Kaydetme ve Analiz

Testlerin sonuçlarını kaydetmek, özellikle raporlama için çok önemlidir:

# Çıktıyı dosyaya yönlendir
sudo hping3 -S -p 80 -c 10 -V hedef_ip 2>&1 | tee /tmp/hping3_test_$(date +%Y%m%d_%H%M%S).log

# Birden fazla portu test edip kaydet
for port in 21 22 23 25 53 80 110 143 443 3306 5432 8080; do
    result=$(sudo hping3 -S -p $port -c 2 -n --fast hedef_ip 2>&1)
    echo "Port $port: $result" >> /tmp/port_scan_results.log
done

cat /tmp/port_scan_results.log

hping3 ile Script Entegrasyonu

Günlük operasyonlarda hping3’ü otomatize etmek büyük kolaylık sağlar. İşte basit bir firewall test scripti:

#!/bin/bash
# firewall_test.sh - Temel güvenlik duvarı kural testi

TARGET=$1
ALLOWED_PORTS="80 443"
BLOCKED_PORTS="22 23 3306 5432"
PASS=0
FAIL=0

if [ -z "$TARGET" ]; then
    echo "Kullanim: $0 <hedef_ip>"
    exit 1
fi

echo "=== Firewall Test Basliyor: $TARGET ==="
echo ""

# İzin verilen portları test et
echo "--- Acik olmasi gereken portlar ---"
for port in $ALLOWED_PORTS; do
    response=$(sudo hping3 -S -p $port -c 1 -n --syn $TARGET 2>&1)
    if echo "$response" | grep -q "SA"; then
        echo "[PASS] Port $port: Acik (SYN-ACK alindi)"
        ((PASS++))
    else
        echo "[FAIL] Port $port: Beklenen yanit alinamadi"
        ((FAIL++))
    fi
done

echo ""

# Engellenmesi gereken portları test et
echo "--- Kapali olmasi gereken portlar ---"
for port in $BLOCKED_PORTS; do
    response=$(sudo hping3 -S -p $port -c 1 -n $TARGET 2>&1)
    if echo "$response" | grep -q "timeout|100% packet loss"; then
        echo "[PASS] Port $port: Engellenmis (timeout)"
        ((PASS++))
    else
        echo "[FAIL] Port $port: Engellenmemis olabilir"
        ((FAIL++))
    fi
done

echo ""
echo "=== Sonuc: $PASS PASS, $FAIL FAIL ==="

Sık Karşılaşılan Sorunlar ve Çözümleri

Zaman içinde karşılaştığım bazı durumları paylaşayım:

“Operation not permitted” hatası: hping3’ü root olmadan çalıştırıyorsunuzdur. sudo kullanın veya setcap cap_net_raw+ep /usr/bin/hping3 ile capability ekleyin (güvenlik riskini göz önünde bulundurun).

Sonuçlar tutarsız geliyor: Ağ cihazları bazen ICMP rate limiting uygular. -i u500000 gibi daha yavaş gönderim hızı deneyin.

Tüm portlardan timeout alıyorum: Hedef tamamen erişilemez olabilir ya da upstream bir firewall tüm trafiği engelliyor olabilir. Önce temel bağlantıyı (ping, traceroute) test edin.

hping3 paketleri gitmiyor görünüyor: Yerel güvenlik duvarı (iptables, nftables, firewalld) gönderimi engelliyor olabilir. Yerel kuralları kontrol edin.

Alternatif Araçlarla Karşılaştırma

hping3’ün rakiplerine kısaca değineyim:

nmap: Otomasyon ve raporlama açısından üstün, ham kontrol açısından zayıf. Hızlı port tarama için nmap, detaylı paket manipülasyonu için hping3.

scapy: Python tabanlı, çok daha esnek paket oluşturma imkanı sunuyor. Öğrenme eğrisi yüksek ama güçlü. Kompleks test senaryoları için scapy’ye geçiş düşünebilirsiniz.

netcat: Bağlantı testi için iyi ama paket başlığı manipülasyonu yok.

tcpreplay: Kaydedilmiş trafik dosyalarını tekrar oynatmak için ideal.

Sonuç

hping3, ağ yöneticilerinin ve güvenlik uzmanlarının araç çantasında kesinlikle bulunması gereken bir araçtır. Güvenlik duvarı kurallarını doğrulamak, ağ davranışını anlamak ve güvenlik testleri yapmak için sunduğu esneklik benzersizdir.

Özellikle şu durumlar için düzenli kullanımı öneririm: yeni güvenlik duvarı kuralı devreye aldığınızda doğrulama testi, ağ değişikliği sonrası bağlantı kontrolü, periyodik güvenlik denetimlerinin bir parçası olarak ve IDS/IPS sistemlerinin etkinlik kontrolü.

Son bir hatırlatma: hping3 ile yapacağınız her testten önce ve sonra değişiklikleri kaydedin, test parametrelerini ve sonuçlarını belgeleyin. Bu belgeler hem sorun giderme süreçlerinde hem de güvenlik denetimlerinde size çok değerli bilgiler sunar. Aracın gücü kadar, onu doğru ve sorumlu kullanmak da profesyonelliğin göstergesidir.

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir