DDoS Saldırısı Nasıl Engellenir? Anlık Müdahale ve Kalıcı Koruma Rehberi
Kısa cevap
DDoS saldırısını engellemenin tek yolu trafiği origin sunucunuza ulaşmadan önce bir ağ katmanında (CDN/WAF) filtrelemektir. Saldırı anında sunucuya arka planda erişimi koruyup CDN'i 'saldırı altında' moduna almak, kalıcı çözümdeyse origin IP'sini gizleyip her isteği bir azaltma ağının arkasına almak esastır. Sadece sunucu tarafında iptables ile hacimsel bir saldırıyı durduramazsınız.
DDoS (Dağıtık Hizmet Reddi) saldırısında amaç sisteme sızmak değil, sistemi diz çöktürmektir: binlerce farklı kaynaktan gelen sahte trafikle sunucunun bant genişliğini, bağlantı havuzunu ya da uygulama kaynaklarını tüketip meşru ziyaretçilere hizmet veremez hâle getirmek. Kritik olan şu ki, bu saldırıya karşı savunmanın ağırlık merkezi sunucunuzun kendisi değildir. Trafik sunucunuza ulaştıysa savaşı büyük ölçüde kaybetmişsinizdir; asıl iş, trafiği origin'e ulaşmadan önce yukarı akışta durdurmaktır.
Bu yazıda DDoS saldırı türlerini, saldırı tam anındayken ne yapılacağını ve tekrar yaşanmaması için kurulacak kalıcı koruma mimarisini anlatıyoruz. Genel güvenlik hijyeni için web sitesi güvenliğinin nasıl sağlanacağına da göz atabilirsiniz; ancak DDoS'un kendine has bir savunma katmanı gerektirdiğini baştan söyleyelim.
DDoS Türlerini Doğru Teşhis Edin
Doğru savunmanın önce doğru teşhisle başladığını unutmayın: hacimsel bir ağ saldırısına uygulama katmanı kuralıyla, uygulama katmanı saldırısına da bant genişliği eklemekle cevap vermek işe yaramaz. Saldırılar kabaca iki gruba ayrılır.
L3/L4 — Hacimsel ve protokol saldırıları: UDP flood, SYN flood, DNS/NTP amplifikasyonu gibi saldırılar ham bant genişliğini ve bağlantı tablolarını hedefler. Onlarca-yüzlerce Gbps'lik trafikle gelirler; tek bir sunucunun ya da çoğu hosting bağlantısının kaldıramayacağı ölçektedir. Bu saldırılar ancak upstream (ISP/CDN/tier-1 sağlayıcı) seviyesinde emilebilir.
L7 — Uygulama katmanı saldırıları: Görünürde meşru HTTP/HTTPS istekleridir; örneğin saniyede on binlerce kez arama sayfasını ya da ağır bir API ucunu çağırırlar. Bant genişliğini değil, CPU/veritabanı/PHP-FPM havuzunu tüketirler. Trafik "normal" göründüğü için ayırt edilmesi zordur ve düşük hacimle bile bir siteyi çökertebilir. Loglarda tek bir URL'ye gelen anormal istek yoğunluğu bunun klasik imzasıdır.
İkisini ayırt etmenin pratik yolu belirtilere bakmaktır. Site tamamen erişilemez, ping bile gitmiyor ve hosting paneli "bant genişliği aşıldı" diyorsa büyük olasılıkla L3/L4 hacimsel bir saldırı vardır. Buna karşılık site açılıyor ama aşırı yavaş, sunucu CPU'su %100'de, PHP-FPM ya da veritabanı bağlantı havuzu dolmuşsa ve access logunda belirli bir URL'ye olağandışı yoğunlukta istek varsa bu bir L7 saldırısıdır. Bu ayrım kritiktir çünkü ikisi tamamen farklı savunma katmanlarında çözülür; yanlış teşhis, doğru aracı yanlış yere uygulamanıza yol açar.
Saldırı Anında İlk Dakikalarda Ne Yapılır?
Saldırı sürüyorsa öncelik teşhis değil, hattı ayakta tutmaktır: paniğe kapılmadan trafiği bir filtre katmanının arkasına almak ve sunucuya kendi erişiminizi güvenceye almaktır. Önce durumu somut olarak görün.
ss -s
ss -tn state syn-recv | wc -l
netstat -ntu | awk '{print $5}' | cut -d: -f1 | sort | uniq -c | sort -rn | head
İlk komut soket özetini, ikincisi yarı-açık bağlantı (SYN flood belirtisi) sayısını, üçüncüsü en çok bağlantı açan IP'leri verir. Ardından web sunucusu access logunda tek bir uç noktaya gelen istek yoğunluğunu ölçün — bu L7 mü L3/4 mü olduğunu ayırır. Eğer önünüzde Cloudflare gibi bir katman varsa, panelinden "Under Attack" (Saldırı Altında) modunu açın; bu, her ziyaretçiye JavaScript sınama sayfası göstererek bot trafiğini anında keser. Origin IP'niz sızmışsa, saldırgan CDN'i baypas ediyor olabilir; bu durumda sunucu firewall'unda yalnızca CDN IP aralıklarından gelen trafiğe izin verin. Tek bir kötü IP açık göründüğünde geçici olarak:
iptables -A INPUT -s <saldirgan_ip> -j DROP
Ancak bunu bir çözüm değil, dağıtık olmayan küçük saldırılar için nokta atışı bir palyatif olarak görün — binlerce kaynaklı gerçek bir DDoS'ta IP'leri elle bloklamak kaybedilen bir yarıştır.
Trafiği CDN ve WAF ile Süzün
DDoS'a karşı en etkili tekil önlemin, tüm trafiği origin'inizden önce bir CDN/WAF ağının arkasına almak olduğunu bilin. Cloudflare, Fastly ya da benzeri bir ağ, saldırı trafiğini kendi kenar (edge) düğümlerinde emerek origin'inize yalnızca temizlenmiş trafiği iletir.
CDN, L3/L4 hacimsel saldırıları terabit ölçekli altyapısıyla soğurur; WAF ise L7 katmanında zararlı istek desenlerini (bilinen bot imzaları, kötü amaçlı user-agent'lar, anormal başlıklar) kural bazlı filtreler. Yönetilen DDoS kuralları çoğu sağlayıcıda varsayılan açıktır, ancak agresif saldırılarda özel kurallar (belirli ülkelere zorunlu sınama, belirli yollara erişim kısıtı) devreye alınmalıdır. Bu katmanı doğru kuran ve saldırı anında yöneten bir ekip olmadan panel tek başına yetmez; kurumsal ölçekli senaryolar için DDoS koruma hizmetimiz tam da bu operasyonu üstlenir.
Saldırı sırasında WAF'ta işe yarayan somut kurallar şunlardır: saldırının geldiği coğrafyaya JavaScript ya da yönetilen sınama (managed challenge) zorunlu kılmak, tek bir uç noktaya (örneğin /wp-login.php ya da bir arama URL'si) gelen istekleri geçici olarak tümden bloklamak, ve boş ya da şüpheli user-agent taşıyan istekleri reddetmek. Cloudflare gibi ağlarda bu kuralları "Firewall Rules" / "WAF Custom Rules" bölümünden dakikalar içinde ekleyebilirsiniz. Önemli olan, saldırı deseni değiştikçe kuralları da uyarlayabilmektir — botlar user-agent ve kaynak IP dağılımını değiştirerek sabit kuralları aşmaya çalışır, bu yüzden savunma statik değil canlı yürütülmelidir.
Uygulama Katmanında Rate Limit Uygulayın
L7 saldırılarının, tek tek meşru görünen isteklerin toplamıyla yıktığını göz önünde bulundurarak, her istemcinin belirli sürede yapabileceği istek sayısını sınırlamanız gerekir. Rate limiting, hem CDN kenarında hem de origin'de tanımlanmalıdır ki bir katman aşılırsa diğeri tutsun.
Nginx tarafında basit ama etkili bir örnek:
limit_req_zone $binary_remote_addr zone=genel:10m rate=10r/s;
server {
location /wp-login.php {
limit_req zone=genel burst=20 nodelay;
}
location /api/ {
limit_req zone=genel burst=30 nodelay;
}
}
Bu yapılandırma her IP için saniyede 10 isteğe izin verir, kısa süreli patlamalara (burst) tolerans tanır ve eşiği aşan istekleri 503 ile reddeder. Özellikle giriş sayfaları, arama uçları ve ağır API'ler öncelikli korunmalıdır. Rate limit'i CDN'in gerçek ziyaretçi IP'sini ilettiğinden (X-Forwarded-For / CF-Connecting-IP) emin olarak kurun; aksi halde tüm trafiği tek bir CDN IP'sinden geliyormuş gibi görüp yanlış engelleme yaparsınız.
Origin IP'nizi Gizleyin
DDoS korumasının en sık atlanan ama en kritik adımının, gerçek sunucu IP'nizin gizli kalması olduğunu vurgulayalım. Saldırgan origin IP'nizi bulursa, CDN/WAF katmanını tümden baypas ederek doğrudan sunucunuza vurabilir ve tüm koruma çöker.
IP sızıntısının başlıca kaynakları şunlardır: giden e-postaların başlıkları (mail'i doğrudan origin'den göndermek), eski DNS kayıtları (geçmiş A kayıtları arşiv servislerinde durur), CDN öncesinden kalma alt alan adları (ftp., cpanel., direct.) ve phpinfo gibi sunucu bilgisi sızdıran sayfalar. Bunları temizleyin: origin sunucunuzun firewall'unu yalnızca CDN'in yayınladığı IP aralıklarını kabul edecek şekilde kilitleyin, e-postayı ayrı bir SMTP servisinden gönderin ve tarihi DNS kayıtlarını gözden geçirin. Origin yalnızca CDN'den erişilebiliyorsa, saldırganın vurabileceği doğrudan bir hedef kalmaz.
Firewall kilidini yalnızca CDN aralıklarına açacak biçimde kurmanın örneği şudur: Cloudflare kullanıyorsanız, yayınlanan IPv4/IPv6 aralıklarını (https://www.cloudflare.com/ips/ üzerinden erişilebilir) sunucu güvenlik duvarında 80/443 portları için beyaz listeye alır, bu portlara başka her kaynağı reddedersiniz. Böylece saldırgan origin IP'nizi bir şekilde öğrense bile, 443'e doğrudan bağlanamaz — çünkü sunucu yalnızca CDN'den gelen bağlantıyı kabul eder. Bu tek adım, origin gizlemenin başarısız olduğu durumlarda bile son bir güvenlik ağı görevi görür ve pratikte doğrudan origin'e yapılan saldırıların çoğunu boşa çıkarır.
Kalıcı Koruma Mimarisini Kurun
Saldırı geçtikten sonra rahatlamak yerine, aynı saldırının bir dahaki sefere hiç fark edilmeden emileceği bir mimari kurmanız gerektiğini unutmayın. Kalıcı koruma, tek bir ürün değil, katmanların birlikte çalıştığı bir düzendir.
Sağlam bir DDoS mimarisi şu katmanları içerir: (1) tüm trafiğin geçtiği bir CDN/anycast ağı, (2) her zaman açık L7 WAF kuralları ve rate limiting, (3) yalnızca CDN'i kabul eden kilitli origin firewall'u, (4) upstream sağlayıcı/ISP ile önceden anlaşılmış hacimsel azaltma (scrubbing), ve (5) trafiği sürekli izleyip anomalide alarm üreten bir gözlem katmanı. Bu izleme katmanını hafife almayın — saldırıyı ilk dakikada yakalamak, üçüncü saatte yakalamaktan çok farklı bir sonuç doğurur. Sürekli izleme ve olay müdahalesini bakım ve izleme hizmetimizle tek elden yürütebilirsiniz.
Hosting ve ISP ile Koordinasyonu İhmal Etmeyin
Hacimsel bir L3/L4 saldırısının, çoğu zaman sizin kontrolünüzün ötesinde upstream'de emilmesi gerektiğini bilerek, sağlayıcınızla önceden iletişim kurmanız kritiktir. Bant genişliğinizi dolduran bir saldırıda son merci CDN değil, sizinle internet arasındaki taşıyıcıdır.
Saldırı sırasında hosting/ISP'nizin NOC'una (Network Operations Center) ulaşıp durumu bildirin; birçok kurumsal sağlayıcı istek üzerine trafik scrubbing devreye alabilir veya en kötü senaryoda hedef IP'yi geçici blackhole'a alarak diğer sistemlerinizi korur. Saldırı anında sağlayıcının acil iletişim kanalını aramak yerine, bu bilgiyi ve varsa DDoS koruma paketinin kapsamını önceden öğrenin. Bir olay sırasında "sağlayıcım DDoS koruması sağlıyor mu?" sorusunu ilk kez soruyor olmak, en pahalı öğrenme biçimidir.
Sık Sorulan Sorular
Sadece sunucu firewall'u (iptables) ile DDoS engellenir mi?
Hayır. iptables yalnızca sunucuya ulaşmış trafiği filtreler, oysa hacimsel bir DDoS zaten bant genişliğinizi sunucuya varmadan doldurur — bu durumda firewall kuralı ne kadar iyi olursa olsun hat tıkalıdır. iptables küçük, dağıtık olmayan saldırılarda yardımcı olur; gerçek DDoS için trafiğin upstream'de (CDN/ISP) emilmesi şarttır.
DDoS saldırısı sitemin hacklendiği anlamına gelir mi?
Genellikle hayır. DDoS bir erişim/sızma saldırısı değil, hizmeti kesme saldırısıdır; amaç veri çalmak değil, siteyi erişilemez kılmaktır. Ancak DDoS bazen asıl saldırıyı (sızma denemesi, veri çalma) gizlemek için dikkat dağıtma olarak kullanılır. Bu yüzden yoğun bir DDoS sonrası loglarınızı sızma belirtileri açısından da gözden geçirmekte fayda vardır; şüpheniz varsa sitem hacklendi, ne yapmalıyım rehberindeki kontrol adımlarını uygulayın.
Ücretsiz Cloudflare planı DDoS'a karşı yeter mi?
Cloudflare'in ücretsiz planı bile ölçeklenemez L3/L4 hacimsel saldırılara karşı güçlü bir taban koruma sağlar ve çoğu küçük saldırıyı savuşturur. Ancak gelişmiş L7 saldırıları, özel WAF kuralları, saldırı anında hızlı müdahale ve origin gizleme gibi konular doğru yapılandırma ve çoğu zaman uzman gözetimi gerektirir. Panel açık olması, doğru ayarlanmış olması demek değildir.
Saldırı sırasında sunucuma erişemiyorum, ne yapmalıyım?
Origin firewall'unuzu yalnızca kendi yönetim IP'nizi ve CDN aralıklarını kabul edecek şekilde daraltıp SSH portunuzu koruyun; mümkünse hosting panelinin konsol/KVM erişimini kullanarak sunucuya trafikten bağımsız bir kanaldan bağlanın. Erişim tamamen kesildiyse hosting sağlayıcınızın acil hattına ulaşıp trafik scrubbing veya geçici IP değişikliği talep edin.
DDoS saldırısı devam ediyorsa dakikalar önemlidir: her geçen dakika gelir, itibar ve sıralama kaybı demektir. Acil DDoS azaltma ekibimiz 7/24 WhatsApp üzerinden ulaşılabilir; saldırıyı canlı olarak analiz edip trafiği origin'inize varmadan filtreleyerek sitenizi dakikalar içinde tekrar ayağa kaldırırız. Kalıcı koruma mimarisini kurmak için de aynı ekip yanınızda — yazın, hemen bakalım.