Linux Sunucuda SYN Flood Saldırısı Tespiti
Linux sunucularında SYN Flood saldırısı, ağ güvenliğinin en yaygın tehditlerinden biridir. Bu saldırı türü, TCP bağlantılarının üç yönlü el sıkışma sürecini kötüye kullanarak sunucunun bağlantı kuyruğunu doldurur ve meşru kullanıcıların erişimini engeller. Saldırganlar, SYN paketlerini sahte IP adresleriyle göndererek sunucunun kaynaklarını tüketir. Bu durum, web sitelerinin yavaşlaması, hizmet kesintileri ve hatta sunucu çökmesiyle sonuçlanabilir. Linux tabanlı sistemlerde bu tehdidi erken tespit etmek, iş sürekliliğini sağlamak için kritik öneme sahiptir. Bu makalede, SYN Flood saldırısını tespit etmek için pratik yöntemleri adım adım ele alacağız. Sunucu yöneticileri için somut komutlar, araçlar ve izleme stratejileri paylaşarak, hızlı müdahale imkanı sağlayacağız.
SYN Flood Saldırısının Belirtileri ve Temel Nedenleri
SYN Flood saldırısı, sunucuda ani bağlantı artışı ve yüksek CPU kullanımıyla kendini gösterir. Normalde TCP SYN paketleri, bağlantı kurulumu için kullanılırken, saldırı sırasında binlerce SYN paketi aynı anda gelir ve sunucunun yarı açık bağlantı tablosu (SYN queue) dolar. Bu, netstat komutuyla gözlemlenebilir: yüksek SYN_RECV durumundaki bağlantı sayısı belirgindir. Ayrıca, sistem loglarında bağlantı reddi hataları artar ve ağ trafiği anormal yükselir. Linux kernel parametreleri gibi /proc/sys/net/ipv4/tcp_max_syn_backlog değeri varsayılan 128-1024 arasında olduğundan, bu kuyruk hızla tükenir.
Belirtileri izlemek için öncelikle sistem kaynaklarını kontrol edin. top veya htop ile CPU ve bellek kullanımını gözlemleyin; saldırı sırasında ağ arayüzü trafiği ani sıçramalar yapar. Trafik grafikleri için iftop veya nload gibi araçlar faydalıdır. Bu belirtiler fark edildiğinde, hemen bağlantı durumlarını inceleyin. Örneğin, ss -s komutu genel istatistikleri verir: SYN-RECV sayısının 100’ü aşması şüphe uyandırır. Erken teşhis, saldırıyı syn cookies veya rate limiting ile sınırlamayı sağlar.
Manuel Tespit Teknikleri
Netstat ve ss Komutlarıyla Bağlantı Analizi
netstat -ant | grep SYN_RECV | wc -l komutu, SYN_RECV durumundaki bağlantı sayısını sayar. Normalde bu sayı sıfıra yakındır; 50’nin üzerinde olması saldırı işareti olabilir. Daha gelişmiş olarak ss -tan state syn-recv kullanın, bu komut kernel tabanlı olup daha hızlıdır. Çıktıda kaynak IP’leri listeleyerek saldırgan IP’lerini belirleyin: ss -tan state syn-recv | awk '{print $4}' | sort | uniq -c | sort -nr. En çok SYN gönderen IP’ler başa gelir. Bu veriyi inceleyerek IP tabanlı bloklama için iptables kuralları hazırlayın, örneğin iptables -A INPUT -s ŞÜPHELİ_IP -j DROP.
Bu yöntemler anlık tespit için idealdir. Düzenli cron job ile otomatik raporlama ekleyin: */5 * * * * ss -tan state syn-recv | wc -l > /var/log/syn_count.log. Eşik aşıldığında uyarı scripti tetikleyin. Pratikte, 1000+ SYN_RECV ile sunucu yanıt vermez hale gelir, bu yüzden 200 eşiği belirleyin.
Tcpdump ile Paket Yakalama ve Analiz
tcpdump -i eth0 -n tcp[tcpflags] &(tcp-syn!=0 & tcp-ack==0) komutu sadece SYN paketlerini yakalar. -c 1000 ile sınırlı yakalama yapın ve | awk '{print $3}' | sort | uniq -c | sort -nr ile kaynak IP’leri sıralayın. Saldırıda tek IP’den dakikada binlerce SYN görülür. Wireshark ile pcap dosyasını analiz edin: tcpdump -i eth0 -w synflood.pcap -c 10000 'tcp[tcpflags] = tcp-syn'. Bu dosya, trafiğin dağılımını gösterir; dağılmış saldırı (DDoS) durumunda birden fazla IP olur.
Yakalanan verileri yorumlayın: SYN paketlerinin %90’ı aynı kaynaktan geliyorsa, spoofed IP’ler olsa bile patern belirgindir. Bu tekniği firewall loglarıyla birleştirin.
Otomatik İzleme ve Gelişmiş Araçlar
Sürekli izleme için sysstat paketini etkinleştirin: sar -n DEV 1 5 ağ istatistiklerini verir, SYN trafiği ani artış gösterir. Prometheus ve Grafana ile node_exporter kurun; tcp_syn_retrans metric’ini izleyin. Eşik aşıldığında alertmanager webhook ile bildirim gönderin. Fail2ban gibi araçlar, log paternlerini tarar: /etc/fail2ban/jail.local’da [synflood] jail ekleyin ve iptables entegrasyonu yapın.
Zabbix veya Nagios ile custom check yazın: SYN_RECV sayısını sorgulayan script. Örnek script: #!/bin/bash\nss -tan state syn-recv | wc -l\nif [ $? -gt 100 ]; then exit 1; fi. Bu, proaktif tespiti sağlar. Bulut sunucularda AWS GuardDuty veya Azure Sentinel gibi hizmetler entegre edilebilir, ancak on-premise Linux için open-source araçlar yeterlidir. Düzenli kernel tuning ile tcp_syncookies=1 etkinleştirin, bu tespiti kolaylaştırır.
SYN Flood tespiti, düzenli bakım ve araç entegrasyonuyla güçlenir. Yukarıdaki yöntemleri uygulayarak sunucunuzu koruyun, erken müdahale ile downtime’ı minimize edin. Sisteminizi test etmek için hping3 ile kontrollü SYN flood simüle edin: hping3 --syn -p 80 -i u1000 hedef_ip. Bu pratik yaklaşımlar, kurumsal ortamlarda güvenilirlik sağlar ve ekip eğitimine katkı sunar.