Merhaba,
Wireshark güzel ama sahada çoğu zaman elinizde grafik arayüzü olmayan bir sunucu, bir SSH oturumu ve kısıtlı süre olur. O anlarda en hızlı dostum tcpdump. Yıllar içinde biriken not defterimdeki filtreleri, neden öyle yazıldıklarıyla birlikte paylaşmak istedim. Ezber listesinden çok "nasıl düşünülür" kısmına odaklandım.
Önce temel bayraklar
Her komutta neredeyse refleks olarak kullandığım seçenekler:
sudo tcpdump -nn -i eth0 -c 50- -n: isim çözümlemesi yapma (DNS sorgusu üretmesin, çıktı hızlı gelsin)
- -nn: hem host hem port isimlerini çözme
- -i: arayüz seçimi; emin değilseniz -i any veya ip link ile bakın
- -c: paket sayısı sınırı; unutunca terminali kilitleyen klasik hata
- -w dosya.pcap: diske yaz; sonra Wireshark ile açarsınız
- -r dosya.pcap: kayıtlı dosyayı oku
- -A / -X: ASCII / hex+ASCII; HTTP gibi protokoller için
BPF mantığı: filtre nasıl kurulur?
tcpdump'ın kalbi Berkeley Packet Filter ifadesidir. Mantık şudur: önce hangi trafiği istiyorsunuz (host, port, protokol), sonra bayrak ve içerik kısıtları. Operatörler: and, or, not. Parantez kullanın; öncelik karışıklığı klasik hata.
Host ve port:
sudo tcpdump -nn -i eth0 host 10.0.0.5
sudo tcpdump -nn -i eth0 src host 10.0.0.5
sudo tcpdump -nn -i eth0 dst port 443
sudo tcpdump -nn -i eth0 'host 10.0.0.5 and port 22'Sahada en çok işime yarayan filtreler
1) SYN taraması / yeni bağlantı avı
sudo tcpdump -nn -i eth0 'tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) == 0'sudo tcpdump -nn -i eth0 'tcp[13] & 2 != 0 and tcp[13] & 16 == 0'Labda örnek çıktı:
2) DNS sorguları
sudo tcpdump -nn -i eth0 port 533) Belirli bir HTTP host başlığı (şifresiz trafik)
sudo tcpdump -nn -i eth0 -A 'tcp port 80 and (((ip[2:2] - ((ip[0]&0xf)<<2)) - ((tcp[12]&0xf0)>>2)) != 0)'4) ARP ve yerel ağ gariplikleri
sudo tcpdump -nn -i eth0 arp
sudo tcpdump -nn -i eth0 'arp and arp[6:2] == 2'5) Belirli bir konuşmayı (conversation) yakalamak
sudo tcpdump -nn -i eth0 -w oturum.pcap 'host 10.0.0.5 and host 10.0.0.9'6) ICMP (ping, unreachable)
sudo tcpdump -nn -i eth0 icmp7) IPv6
sudo tcpdump -nn -i eth0 ip6
sudo tcpdump -nn -i eth0 'ip6 and tcp port 22'Ring buffer ile uzun süre dinlemek
Disk doldurmadan saatlerce dinlemek için:
sudo tcpdump -nn -i eth0 -W 10 -C 100 -w /var/tmp/capture.pcap 'not port 22'Sorun giderme alışkanlıklarım
- Önce arayüz doğru mu? ip -br a
- Filtre çok mu dar? Geçici olarak filtreyi kaldırıp paket geliyor mu bakın.
- Offload / checksum gariplikleri: Wireshark'ta "incorrect checksum" görürseniz çoğu zaman NIC offload kaynaklıdır; panik yapmayın.
- Kapsüller (VLAN, GRE, VXLAN): basit host filtresi yetmeyebilir; vlan, proto gre gibi ekler gerekir.
- Üretimde -w ile yazın, canlı ekranı izlemeyin; paket kaybı azalır.
tcpdump mu, tshark mı, Wireshark mı?
Hızlı doğrulama ve sunucu üstü yakalama: tcpdump. Aynı BPF'yi dosyada çalıştırıp alan çıkarmak: tshark. Derin protokol analizi ve Follow Stream: Wireshark. Üçü de aynı BPF dilini konuşur; öğrendiğiniz filtreler boşa gitmez.
Kaynaklar
- tcpdump man sayfası ve pcap-filter (man 7 pcap-filter)
- Wireshark Display Filter Reference (display filter BPF'den farklıdır; karıştırmayın)
- Julia Evans'ın tcpdump cheatsheet notları (öğrenme için faydalı)
Sizin "olmazsa olmaz" filtreniz hangisi? Özellikle VLAN veya cloud mirror senaryolarında takılan varsa yazın, birlikte bakalım.
VLAN ve tünel paketlerinde BPF
Saha ağında mirror port VLAN tag taşıyorsa basit host filtresi yetmeyebilir:
sudo tcpdump -nn -i eth0 'vlan and host 10.0.0.5'
sudo tcpdump -nn -e -i eth0 'vlan 120'Paket kaybı ve buffer
Yoğun trafikte tcpdump "dropped by kernel" uyarısı verebilir. -B ile buffer büyütün veya daha dar filtre uygulayın. Üretim olayında "her şeyi yakala" refleksi çoğu zaman boş dosya veya dolu disk ile biter; önce hipotez, sonra filtre.
Sık sorulanlar
tcpdump çıktısını sürekli diske yazarken rotasyon unutulursa disk dolar ve üretim servisi düşer. -C/-W kullanın. Konteyner içinde tcpdump için NET_RAW capability gerekir. Host ağındaki pod trafiğini görmek ayrı hikâye; CNI bridge üzerinde dinlemeniz gerekebilir. Şüpheli C2 avında önce DNS ve outbound 443 netflow'a bakın; kör tam paket yakalama son çaredir.
Yasal uyarı: Bu içerik eğitim amaçlıdır. Anlatılanları yalnızca kendi sistemlerinizde veya yazılı izin aldığınız sistemlerde uygulayın. Yetkisiz erişim ve sistemlere müdahale 5237 sayılı TCK'nın 243, 244 ve 245. maddeleri kapsamında suçtur.