Wireshark ile Paket Yakalama ve Filtre Kullanımı

Ağ sorunlarını çözerken ya da güvenlik olaylarını analiz ederken elinin altında Wireshark olmadan çalışmak, karanlıkta el yordamıyla yürümeye benzer. Paketleri görmek, onları anlamak ve doğru filtrelemek; bir sysadmin olarak seni ortalama birinden ayıran becerilerden biridir. Bu yazıda Wireshark’ı gerçekten verimli kullanmayı, filtre sözdizimini kavramayı ve gerçek dünya senaryolarında nasıl uygulayacağını adım adım göstereceğim.

Wireshark Nedir ve Neden Bu Kadar Önemli?

Wireshark, açık kaynaklı bir ağ protokol analizörüdür. Ağ arayüzünden geçen paketleri yakalar, decode eder ve sana insan okunabilir bir formatta sunar. tcpdump’un gücünü bir GUI ile birleştirdiğini düşün; işte Wireshark tam olarak bu.

Sysadmin olarak şu senaryolarda Wireshark olmadan bayağı zorlanırsın:

  • Bir uygulama neden yavaş açılıyor sorusunu yanıtlamak
  • DNS çözümleme sorunlarını tespit etmek
  • Ağda yetkisiz trafik olup olmadığını kontrol etmek
  • SSL/TLS el sıkışma hatalarını debug etmek
  • Bir servisin beklenen porttan mı bağlandığını doğrulamak

Kurulum ve İlk Adımlar

Ubuntu/Debian tabanlı sistemlerde kurulum oldukça basittir:

sudo apt update && sudo apt install wireshark -y

# Kurulum sırasında "non-superusers should be able to capture packets" sorusuna
# Yes dersen, wireshark grubuna kullanıcını eklemen gerekir
sudo usermod -aG wireshark $USER

# Değişikliğin aktif olması için yeniden giriş yap veya:
newgrp wireshark

CentOS/RHEL sistemlerinde ise:

sudo yum install wireshark wireshark-qt -y
# veya RHEL 8+ için
sudo dnf install wireshark -y

Grafik arayüz olmayan sunucularda Wireshark’ın komut satırı versiyonu olan tshark kullanılır. tshark, Wireshark kurulumunda otomatik olarak gelir ve production sunucularında çok değerlidir.

Temel Filtre Türleri: Capture vs Display

Wireshark’ta iki farklı filtre türü vardır ve bunları birbirine karıştırmak sık yapılan bir hatadır.

Capture Filter (Yakalama Filtresi): Paketler diske ya da belleğe yazılmadan önce filtreleme yapar. BPF (Berkeley Packet Filter) sözdizimini kullanır. Yüksek trafikli ortamlarda performans açısından çok önemlidir.

Display Filter (Görüntüleme Filtresi): Zaten yakalanmış paketler üzerinde çalışır. Wireshark’a özgü bir sözdizimi vardır ve çok daha zengin bir ifade gücü sunar.

Pratik kural olarak: Disk ve CPU tasarrufu için capture filter kullan, analiz aşamasında display filter kullan.

Capture Filter Sözdizimi

Capture filterlar BPF sözdizimiyle yazılır. tcpdump kullananlar bu sözdizimine zaten aşinadır.

# Sadece belirli bir host'tan gelen/giden trafik
host 192.168.1.100

# Belirli bir port
port 443

# Belirli bir ağdan gelen trafik
net 192.168.1.0/24

# Sadece TCP trafiği
tcp

# Sadece UDP trafiği
udp

# Kombinasyonlar - AND, OR, NOT kullanılır
host 192.168.1.100 and port 80
not broadcast and not multicast
tcp port 22 or tcp port 443

tshark ile komut satırından paket yakalamak için:

# eth0 arayüzünde 443 portuna gelen TCP trafiğini yakala, dosyaya yaz
sudo tshark -i eth0 -f "tcp port 443" -w /tmp/capture.pcap

# Belirli bir host ile yapılan tüm iletişimi yakala
sudo tshark -i eth0 -f "host 10.0.0.50" -w /tmp/host_traffic.pcap

# 100 paket yakalayıp dur
sudo tshark -i eth0 -f "tcp port 80" -c 100 -w /tmp/http_traffic.pcap

# Dosya boyutu 50MB'a ulaşınca yeni dosya aç (ring buffer)
sudo tshark -i eth0 -b filesize:51200 -w /tmp/capture_%d.pcap

Display Filter Sözdizimi: Asıl Güç Buradan Geliyor

Display filterlar Wireshark’ın kendi sözdizimini kullanır ve capture filterlara kıyasla çok daha esnek ve güçlüdür.

Protokol Bazlı Filtreler

# Sadece HTTP trafiği göster
http

# Sadece DNS sorguları
dns

# ARP paketleri
arp

# ICMP (ping) trafiği
icmp

# TLS/SSL trafiği
tls

# FTP trafiği
ftp

IP ve Port Bazlı Filtreler

# Belirli bir kaynak IP
ip.src == 192.168.1.100

# Belirli bir hedef IP
ip.dst == 8.8.8.8

# Her iki yön için (src veya dst)
ip.addr == 192.168.1.100

# Belirli bir subnet içindeki trafik
ip.addr == 192.168.1.0/24

# TCP kaynak portu
tcp.srcport == 443

# TCP hedef portu
tcp.dstport == 80

# Her iki yön için port
tcp.port == 8080

# UDP port filtresi
udp.port == 53

Mantıksal Operatörler

# VE koşulu - hem HTTP hem de belirli kaynak IP
http and ip.src == 10.0.0.5

# VEYA koşulu - HTTP veya HTTPS trafiği
tcp.dstport == 80 or tcp.dstport == 443

# DEGİL koşulu - broadcast dışındaki her şey
not arp

# Karmaşık kombinasyonlar
(ip.src == 192.168.1.0/24) and (tcp.dstport == 80 or tcp.dstport == 443)

String ve İçerik Araması

# HTTP isteklerinde belirli bir string ara
http.request.uri contains "login"

# Frame içinde herhangi bir string (dikkatli kullan, yavaş olabilir)
frame contains "password"

# HTTP host başlığına göre filtrele
http.host == "example.com"

# HTTP method bazlı filtrele
http.request.method == "POST"

# HTTP durum koduna göre filtrele
http.response.code == 404
http.response.code >= 500

Gerçek Dünya Senaryosu 1: Web Uygulama Performans Analizi

Bir web uygulamanız yavaş ve kullanıcılar şikayet ediyor. Sorunun ağdan mı yoksa uygulamadan mı kaynaklandığını anlamak istiyorsunuz.

Önce trafiği yakala:

sudo tshark -i eth0 -f "tcp port 80 or tcp port 443" -w /tmp/webapp_traffic.pcap

Sonra Wireshark’ta şu filtrelerle analiz et:

# HTTP yanıt süresi uzun olan istekleri bul (1 saniyeden fazla)
http.time > 1

# TCP yeniden iletim paketleri - ağ kayıplarına işaret eder
tcp.analysis.retransmission

# TCP sıfırlama paketleri - bağlantı sorunlarını gösterir
tcp.flags.reset == 1

# Duplicate ACK - paket kaybının göstergesi
tcp.analysis.duplicate_ack

# Zero Window - sunucunun tamponu dolu, backpressure var
tcp.analysis.zero_window

tcp.analysis.retransmission filtresini çalıştırdığınızda çok sayıda paket görüyorsanız, sorun büyük ihtimalle ağda. Az sayıda retransmission ama yüksek http.time değerleri varsa, sorun uygulama tarafında demektir.

Gerçek Dünya Senaryosu 2: DNS Sorunlarını Tespit Etme

Sunucularınızdan biri bazı domainlere ulaşamıyor. DNS sorunu mu yoksa başka bir şey mi?

# Tüm DNS trafiğini yakala
sudo tshark -i eth0 -f "udp port 53" -w /tmp/dns_traffic.pcap

# tshark ile doğrudan DNS sorgularını göster
sudo tshark -i eth0 -f "udp port 53" -T fields 
  -e frame.time 
  -e ip.src 
  -e dns.qry.name 
  -e dns.resp.name 
  -e dns.flags.rcode

Wireshark’ta display filter ile analiz:

# Sadece DNS sorguları (yanıt değil)
dns.flags.response == 0

# Başarısız DNS sorguları (NXDOMAIN = 3, SERVFAIL = 2)
dns.flags.rcode == 3

# Belirli bir domain için DNS sorgusu
dns.qry.name contains "problematic-domain.com"

# DNS yanıt süresi uzun olanlar
dns.time > 0.5

# Belirli bir DNS sunucusuna giden sorgular
dns and ip.dst == 8.8.8.8

DNS sorgularının gidip gitmediğini ve yanıt alınıp alınmadığını bu filtrelerle net bir şekilde görebilirsin. NXDOMAIN yanıtları görüyorsan DNS çözümleme sorunu, hiç yanıt gelmiyorsa DNS sunucusuna erişim sorunu var demektir.

Gerçek Dünya Senaryosu 3: Ağda Yetkisiz Trafik Araştırması

Güvenlik ekibinden bir ihbar geldi: İç ağdan dışarıya olağandışı trafik gidiyor olabilir. Klasik bir incident response başlangıcı.

# Gece yarısından bu yana tüm trafiği yakala
sudo tshark -i eth0 -w /tmp/security_investigation.pcap

# Aynı anda başka bir terminal'den hangi IP'lerin en çok trafik ürettiğini göster
sudo tshark -i eth0 -q -z conv,ip | head -30

Yakaladığın dosyayı Wireshark’ta analiz ederken:

# İç ağdan dışarıya giden alışılmadık portlardaki trafik
ip.src == 192.168.0.0/16 and not (tcp.dstport == 80 or tcp.dstport == 443 or tcp.dstport == 53)

# ICMP tünellemesi şüphesi - büyük ICMP paketleri veri taşıyor olabilir
icmp and data.len > 100

# DNS over non-standard port - DNS tüneli şüphesi
udp.dstport != 53 and dns

# Belirli bir iç host'tan şüpheli trafik
ip.src == 192.168.1.55 and not ip.dst == 192.168.0.0/16

# Çok sayıda SYN paketi - port taraması olabilir
tcp.flags.syn == 1 and tcp.flags.ack == 0

Bir host’tan gece 3’te 443 dışında garip portlara bağlantı görürsen, o IP’yi izole edip daha derinlemesine araştırman gerekir. tcp.flags.syn == 1 and tcp.flags.ack == 0 filtresi ile tek yönlü SYN paketlerini görüyorsan, biri ağını tarıyor olabilir.

tshark ile Komut Satırı Analizleri

GUI olmayan ortamlarda tshark vazgeçilmezdir. Analizi doğrudan terminalde yapabilirsin.

# En çok konuşan IP'leri bul
sudo tshark -i eth0 -q -z conv,ip -a duration:60 2>/dev/null | 
  sort -k3 -rn | head -20

# HTTP isteklerini gerçek zamanlı takip et
sudo tshark -i eth0 -Y "http.request" -T fields 
  -e ip.src 
  -e http.request.method 
  -e http.host 
  -e http.request.uri 
  2>/dev/null

# Pcap dosyasından HTTP credentials leak var mı kontrol et
tshark -r /tmp/capture.pcap -Y "http.request.method == POST" 
  -T fields -e ip.src -e http.host -e http.request.uri -e http.file_data

# Mevcut bağlantıların istatistiklerini çıkar
sudo tshark -i eth0 -q -z io,stat,10 -a duration:60

# Protokol dağılımını göster
tshark -r /tmp/capture.pcap -q -z io,phs

Filtre İfadelerini Kaydetme ve Tekrar Kullanma

Sık kullandığın filtreleri her seferinde yeniden yazmak zaman kaybıdır. Wireshark bu konuda seni düşünmüş.

Wireshark GUI’de Analyze > Display Filters menüsünden sık kullandığın filtreleri kaydedebilirsin. Ama daha pratik bir yaklaşım, filtrelerini bir dosyada tutmak:

# /home/user/.config/wireshark/dfilters dosyasına ekle
cat >> ~/.config/wireshark/dfilters << 'EOF'
"Retransmissions" tcp.analysis.retransmission
"DNS Failures" dns.flags.rcode > 0
"HTTP Errors" http.response.code >= 400
"SYN Scan Detection" tcp.flags.syn==1 and tcp.flags.ack==0
"Large ICMP" icmp and data.len > 100
EOF

Pcap Dosyalarını Yönetme

Uzun süreli yakalamalar büyük dosyalar oluşturur. Ring buffer kullanmak bu sorunu çözer:

# Her 100MB'da yeni dosya aç, toplam 5 dosya tut (500MB toplam)
sudo tshark -i eth0 
  -b filesize:102400 
  -b files:5 
  -w /var/captures/traffic_%d_%t.pcap

# Zamanlanmış yakalama - sabah 2'den 3'e kadar
sudo tshark -i eth0 
  -a duration:3600 
  -w /var/captures/nightly_$(date +%Y%m%d).pcap

# Çoklu arayüz yakalama
sudo tshark -i eth0 -i eth1 -w /tmp/multi_interface.pcap

# Mevcut pcap dosyalarını birleştir
mergecap -w /tmp/merged.pcap /tmp/capture1.pcap /tmp/capture2.pcap

# Pcap'i belirli zaman aralığına kırp
editcap -A "2024-01-15 02:00:00" -B "2024-01-15 03:00:00" 
  /tmp/big_capture.pcap /tmp/trimmed.pcap

SSL/TLS Trafiğini Çözme

HTTPS trafiğini analiz etmek için SSL anahtarları gerekir. Geliştirme ortamlarında bu mümkündür.

# Firefox veya Chrome'un SSLKEYLOGFILE değişkeni ile anahtar logla
export SSLKEYLOGFILE=/tmp/ssl_keys.log
firefox &

# Wireshark'ta Edit > Preferences > Protocols > TLS
# Pre-Master-Secret log filename alanına /tmp/ssl_keys.log yaz

# tshark ile decrypt edilmiş trafik
tshark -r /tmp/https_capture.pcap 
  -o "tls.keylog_file:/tmp/ssl_keys.log" 
  -Y "http" 
  -T fields 
  -e http.request.uri 
  -e http.request.method

Not: Bu yöntemi sadece kendi sistemlerinde ve test/geliştirme ortamlarında kullan. Production sistemlerde SSL anahtarlarını loglaman ciddi güvenlik riski oluşturur.

Wireshark Renk Kuralları ile Hızlı Analiz

Wireshark’ın renk kodlaması dikkatini önemli paketlere çekmenin hızlı yoludur. Varsayılan renk kurallarını özelleştirebilirsin:

  • Kırmızı arka plan: TCP hataları, retransmission’lar
  • Koyu kırmızı: Resetlenen bağlantılar
  • Sarı: Uyarı niteliğindeki paketler
  • Açık mavi: UDP trafiği
  • Açık yeşil: HTTP trafiği

View > Coloring Rules menüsünden kendi kurallarını ekleyebilirsin. Örneğin şüpheli DNS sorgularını turuncu göstermek için:

dns.flags.rcode > 0

kuralını turuncu arka planla kaydet. Artık başarısız DNS sorguları anında gözüne çarpar.

Performans İpuçları

Yüksek trafikli ortamlarda Wireshark kullanırken dikkat etmen gereken noktalar var.

Capture filter olmadan 1Gbps hatta çalışmak sistemi zorlayabilir. Her zaman en dar capture filter ile başla, ihtiyaç duydukça genişlet. Disk yazma hızın da önemlidir; SSD’ye yaz, network share’e değil.

Büyük pcap dosyalarını direkt Wireshark’ta açmak yerine önce tshark ile filtrele:

# 2GB'lık pcap'ten sadece belirli host'un trafiğini çıkar
tshark -r /tmp/huge_capture.pcap 
  -Y "ip.addr == 192.168.1.100" 
  -w /tmp/filtered_small.pcap

# Sadece ilk 10000 paketi al
editcap -r /tmp/huge_capture.pcap /tmp/first10k.pcap 1-10000

RAM konusunda da dikkatli ol. Wireshark büyük pcap dosyalarını açarken tüm dosyayı belleğe alır. 16GB RAM ile 8GB pcap açmaya çalışmak iyi bitmez.

Sonuç

Wireshark ve tshark, ağ sorunlarını çözmek ve güvenlik olaylarını araştırmak için güçlü araçlardır. Ancak asıl fark yaratan şey, araçları bilmek değil, doğru soruları sorabilmektir. “Bu paket neden burada?”, “Bu bağlantı neden açık kaldı?”, “Bu miktarda trafik normal mi?” sorularını sorabildiğinde, Wireshark sana cevabı vermek için hazırdır.

Capture filter ve display filter ayrımını her zaman aklında tut. Yüksek trafikli ortamlarda ring buffer kullan, dosyalarını yönetilebilir boyutlarda tut. DNS, HTTP ve TCP analiz filtrelerini ezber düzeyinde bilmek günlük işlerin hızını ciddi artırır. SSL trafiği çözmek gibi ileri seviye konuları sadece test ortamlarında ve etik sınırlar içinde kullan.

En önemlisi, Wireshark’ı sadece sorun olduğunda açma alışkanlığına girme. Normal trafiğin nasıl göründüğünü bilmeden anormal trafiği fark edemezsin. Zaman zaman sakin bir ortamda baseline trafik yakala ve incele; bu birikim, kriz anında altın değerinde olur.

Bir yanıt yazın

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