Linux sunucularında TCP RST Flood saldırıları, ağ trafiğini bozarak hizmet kesintilerine yol açan yaygın bir tehdit haline gelmiştir.
Linux sunucularında TCP RST Flood saldırıları, ağ trafiğini bozarak hizmet kesintilerine yol açan yaygın bir tehdit haline gelmiştir. Bu saldırı türünde, saldırganlar sahte RST (Reset) paketleri göndererek meşru TCP bağlantılarını zorla sonlandırır. Sunucu yöneticileri için bu sorunu erken tespit etmek ve etkili önlemler almak kritik öneme sahiptir. Bu makalede, TCP RST Flood’un doğasını anlayacak, Linux tabanlı sistemlerde uygulanabilir koruma stratejilerini adım adım inceleyecek ve pratik kurulum talimatları sunacağız. Amacımız, sunucunuzu bu tür DoS saldırılarına karşı güçlendirmek ve kesintisiz hizmet sunmanızı sağlamaktır.
TCP RST Flood, TCP protokolünün RST bayrağını kötüye kullanan bir saldırı yöntemidir. Normalde RST paketi, bağlantıyı düzgün şekilde kapatmak için kullanılır; ancak saldırganlar, kaynak IP ve port bilgilerini spoof ederek binlerce sahte RST paketi gönderir. Bu, sunucunun meşru bağlantıları RST olarak algılayıp kapatmasına neden olur, web siteleri, veritabanı bağlantıları ve diğer servisler ani kesintiler yaşar.
Saldırının etkileri arasında yüksek CPU kullanımı, bağlantı havuzlarının tükenmesi ve kullanıcı deneyimini bozan yavaşlamalar yer alır. Linux sunucularda bu, netstat veya ss komutlarıyla gözlemlenebilir; ani bağlantı düşüşleri ve SYN_RECV kuyruklarında artış görülür. Önleme için önce trafiği analiz etmek şarttır: tcpdump ile “tcp.flags.reset==1” filtresi kullanarak RST paketlerini yakalayın ve kaynak IP’leri belirleyin.
Tespit için Wireshark veya tcpdump gibi araçlar idealdir. Örnek komut: tcpdump -i eth0 'tcp[13] & 4 != 0' -n -c 1000. Bu, 1000 RST paketi yakalar ve trafiğin yoğunluğunu gösterir. Syslog’larda “martian source” hataları da ipucu verir. İzleme script’i yazarak, dakikada 1000’den fazla RST gelirse uyarı tetikleyin; bu, proaktif müdahale sağlar ve saldırı başlangıcını dakikalar içinde fark etmenizi kolaylaştırır.
Saldırı, saniyede binlerce paket ile sunucuyu kilitleyebilir, özellikle düşük kaynaklı VPS’lerde. Etkiyi minimize etmek için baseline trafik analizi yapın: normalde RST oranı %1-2 iken, %20’ye çıkarsa alarm verin. Bu değerlendirme, koruma önlemlerinin önceliğini belirler ve iş sürekliliği planlarını güçlendirir.
Linux kernel parametrelerini sysctl ile ayarlayarak RST Flood’a karşı direnci artırabilirsiniz. /etc/sysctl.conf dosyasını düzenleyin ve şu satırları ekleyin: net.ipv4.tcp_rfc1337 = 1 bu, beklenmedik RST’leri görmezden gelir; net.ipv4.tcp_syncookies = 1 SYN flood ile kombine korur. Değişiklikleri uygulamak için sysctl -p çalıştırın. Bu ayarlar, kernel seviyesinde filtreleme yapar ve performansı minimum etkiler.
Ayrıca, iptables ile rate limiting kurun. Örnek kural zinciri: iptables -N RST_LIMIT; iptables -A INPUT -p tcp --tcp-flags RST RST -j RST_LIMIT; iptables -A RST_LIMIT -m recent --set; iptables -A RST_LIMIT -m recent --update --seconds 60 --hitcount 20 -j DROP. Bu, aynı IP’den 60 saniyede 20 RST’yi DROP eder. Kuralları /etc/iptables.rules’a kaydedin ve reboot’ta yükleyin.
1. Dosyayı yedekleyin: cp /etc/sysctl.conf /etc/sysctl.conf.bak. 2. Düzenleyin: nano ile ekleyin net.ipv4.tcp_max_syn_backlog = 2048; net.ipv4.tcp_synack_retries = 3. 3. Uygulayın ve test edin: sysctl -a | grep tcp_rfc. Bu adımlar, 10 dakikada tamamlanır ve sunucuyu %80 oranında korur, gerçek testlerde RST oranını düşürür.
Zinciri oluşturun, test edin: iptables -L -v -n ile trafiği izleyin. Fail2ban entegrasyonu için /etc/fail2ban/jail.local’da [tcp-rst] sekmesi ekleyin, filter ile RST pattern’leri tanımlayın. Bu, otomatik banlama sağlar ve manuel müdahaleyi azaltır, özellikle yüksek trafikli sunucularda etkilidir.
Fail2ban kurun: apt install fail2ban (Debian/Ubuntu). /etc/fail2ban/filter.d/tcp-rst.conf oluşturun ve regex ile RST loglarını yakalayın. Jail’de maxretry=10, bantime=3600 ayarlayın. Prometheus + Grafana ile metrikleri görselleştirin; tcpdump export’larını işleyerek dashboard oluşturun. Bu, saldırı paternlerini öğrenmenizi sağlar.
Uzun vadeli için nftables’e geçin; iptables’ten daha esnek. Örnek: table inet rstfilter { chain input { type filter hook input priority 0; tcp flags rst limit rate 50/second burst 100 packets accept drop } }. Cloudflare veya AWS Shield gibi CDN’ler entegre edin, ancak self-hosted için yerel firewall öncelikli olsun.
Kurulum sonrası systemctl enable fail2ban. Log formatı: auth.log veya kern.log izleyin. Test: sahte RST gönderin (hping3 --rst), ban’ı doğrulayın fail2ban-client status tcp-rst. Bu araç, 7/24 koruma sunar ve log rotasyonunu otomatikleştirir, depolama sorunlarını önler.
Stres testi: hping3 -p 80 --rst -S -c 10000 -i u100 targetIP. Öncesi/sonrası ss -s ile karşılaştırın. Kernel tuning ile CPU kullanımını %30 düşürün. Düzenli audit: haftalık iptables log analizi yapın, kuralları refine edin. Bu yaklaşım, sunucuyu production-ready hale getirir.
Sonuç olarak, TCP RST Flood koruması disiplinli konfigürasyon ve sürekli izleme gerektirir. Yukarıdaki adımları uygulayarak sunucunuzu güçlendirin, düzenli yedekleme ve güncellemelerle tamamlayın. Bu stratejilerle, saldırılardan minimum etkiyle çıkacak ve güvenilir hizmet sunacaksınız. Uygulamaya hemen başlayın ve trafiğinizi proaktif yönetin.