DDoS Saldırısı Nedir? Türleri, Belirtileri ve Korunma Yolları
DDoS saldırısı (Distributed Denial of Service), çok sayıda kaynaktan gelen sahte veya anlamsız trafikle bir sunucunun, ağın ya da uygulamanın hizmet veremez hale getirilmesidir. DDoS korumalı sunucu ise bu trafiği sizin sunucunuza ulaşmadan, ağın kenarında ayıklayıp yalnızca meşru isteklerin geçmesini sağlayan altyapı demektir.
Bu rehberde saldırının mantığını, üç ana türü, belirtilerini, sunucu üzerinde yapabileceğiniz ilk müdahaleleri ve korumalı altyapının nasıl çalıştığını sırayla ele alıyoruz.
DDoS Saldırısı Nasıl Çalışır?
Saldırgan, ele geçirilmiş cihazlardan (zayıf şifreli IoT cihazları, yamasız sunucular, kiralık botnet'ler) oluşan bir ağ kullanır. Bu cihazlar tek bir hedefe aynı anda trafik gönderir. "Dağıtık" olması iki sorun yaratır:
- Tek bir IP'yi engellemek işe yaramaz; binlerce kaynak vardır.
- Kaynak IP'ler çoğu zaman sahtelenmiştir (spoofing), özellikle UDP tabanlı yansıtma saldırılarında.
Hedef olarak üç kaynak tükenir: bant genişliği (hat dolar), bağlantı/durum tabloları (firewall, load balancer, işletim sistemi) ya da uygulama kaynakları (CPU, veritabanı, worker sayısı). Saldırı türleri bu üç kaynağa karşılık gelir.
DDoS Saldırı Türleri
1. Volumetrik saldırılar (L3/L4)
Amaç, hedefin internet bağlantısını doldurmaktır. Trafik sunucuya ulaştığında iş işten geçmiştir; çünkü hat sunucunun önünde, yukarı akışta dolmuştur.
- UDP flood: Rastgele portlara büyük UDP paketleri.
- Yansıtma/amplifikasyon: Saldırgan kaynak IP'yi kurbanın IP'si olarak sahteler ve açık DNS, NTP, memcached, CLDAP gibi servislere küçük istek gönderir; servis kurbana çok daha büyük yanıt yollar.
- ICMP flood: Yoğun ping trafiği.
2. Protokol saldırıları
Ağ yığınının ve ara cihazların durum tablolarını hedefler. Bant genişliğinden çok paket sayısı (pps) ve bağlantı sayısı önemlidir.
- SYN flood: Çok sayıda TCP SYN gönderilir, el sıkışma tamamlanmaz; sunucunun yarı açık bağlantı kuyruğu dolar.
- ACK/RST flood, fragmentation saldırıları ve hatalı biçimli paketler.
- TCP state exhaustion: Gerçekten kurulmuş çok sayıda bağlantıyla firewall tablosunu doldurmak.
3. Uygulama katmanı (L7) saldırıları
Trafik hacmi düşüktür ama istekler meşru görünür. Hedef web sunucusu, API ya da oyun sunucusunun uygulama mantığıdır.
- HTTP GET/POST flood: Arama, giriş, sepet gibi ağır endpoint'lere yoğun istek.
- Slowloris: Bağlantıları çok yavaş göndererek worker'ları meşgul tutmak.
- Bot trafiği: Gerçek tarayıcıyı taklit eden, TLS el sıkışmasını tamamlayan istekler.
L7 saldırıları en zor ayırt edilenlerdir; çünkü bant genişliği grafiğinde belirgin bir sıçrama olmayabilir.
| Tür | Hedef kaynak | Tipik belirti |
|---|---|---|
| Volumetrik | Bant genişliği | Hat doluluğu, tüm servislerde kopma |
| Protokol | Bağlantı tablosu, pps | Yüksek SYN-RECV, firewall CPU artışı |
| L7 | CPU, worker, veritabanı | Yüksek load, 5xx hataları, yavaş sayfalar |
DDoS Saldırısı Belirtileri
Şu işaretlerden birkaçını aynı anda görüyorsanız saldırıdan şüphelenin:
- Sitenin veya oyun sunucusunun aniden yavaşlaması ya da hiç yanıt vermemesi
- Gelen trafik grafiğinde olağan dışı ani sıçrama
- Tek bir porta veya URL'ye aşırı istek
- Sunucuya SSH ile bile bağlanılamaması (hat doluyken)
- Normalde az trafik gelen saatlerde yoğun trafik
- Tek bir ülke veya ASN bloğundan anormal istek oranı
- Log'larda aynı User-Agent veya aynı URL'nin binlerce kez tekrarı
Önce meşru bir yoğunluk (kampanya, duyuru, bot taraması) ile saldırıyı ayırmak gerekir. Bunun için trafik kaynağının dağılımına ve istek desenine bakın.
Sunucuda İlk Teşhis Komutları
Aşağıdaki komutlarda IP'ler dokümantasyon aralığındandır (203.0.113.0/24, 198.51.100.0/24).
Bağlantı durumlarının özetini görün:
ss -s
ss -ant state syn-recv | wc -l
syn-recv sayısı yüzlerce/binlerce ise SYN flood olasıdır. Gelen SYN paketlerinin kaynaklarına bakın:
tcpdump -nn -i eth0 -c 2000 'tcp[tcpflags] & tcp-syn != 0 and dst port 443' \
| awk '{print $3}' | cut -d. -f1-4 | sort | uniq -c | sort -rn | head
Web sunucusunda en çok istek yapan IP'ler (nginx erişim logu):
awk '{print $1}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
En çok istenen URL'ler:
awk '{print $7}' /var/log/nginx/access.log | sort | uniq -c | sort -rn | head -20
Sunucu Tarafında Hafifletme
Bu önlemler küçük L7 ve protokol saldırılarında işe yarar. Volumetrik saldırıyı sunucudan durduramazsınız; çünkü hat zaten sunucunuza gelmeden dolmuştur.
SYN cookie ve kuyruk ayarları
sysctl -w net.ipv4.tcp_syncookies=1
sysctl -w net.ipv4.tcp_max_syn_backlog=4096
sysctl -w net.ipv4.tcp_synack_retries=2
Kalıcı yapmak için /etc/sysctl.d/99-ddos.conf dosyasına ekleyip sysctl --system çalıştırın.
nftables ile yeni bağlantı hız sınırı
nft add table inet filter
nft add chain inet filter input '{ type filter hook input priority 0; }'
nft add rule inet filter input tcp dport 443 ct state new \
limit rate over 50/second burst 100 packets drop
Değerleri kendi normal trafiğinize göre ayarlayın. Çok düşük bir limit meşru kullanıcıları da keser.
Nginx ile istek sınırlama
http {
limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;
limit_conn_zone $binary_remote_addr zone=connperip:10m;
server {
location /login {
limit_req zone=perip burst=20 nodelay;
limit_conn connperip 20;
}
}
}
Bir CDN/proxy arkasındaysanız $binary_remote_addr proxy IP'sini gösterir. Gerçek istemci IP'si için real_ip modülünü doğru yapılandırın.
DDoS Korumalı Sunucu Nasıl Korur?
Korumalı altyapının temel fikri, saldırı trafiğini hedefe ulaşmadan ağın kenarında ayıklamaktır. Tipik akış:
- Tespit: Router'lardan gelen akış verisi (NetFlow/sFlow/IPFIX) ve paket örnekleri analiz edilir; pps, bps, protokol dağılımı, kaynak sayısı gibi eşikler aşıldığında saldırı ilan edilir.
- Yönlendirme: Saldırı altındaki IP için trafik filtreleme katmanına alınır.
- Filtreleme: Sahte kaynaklı paketler, hatalı biçimli paketler, kullanılmayan UDP portları, SYN doğrulama (cookie/proxy) ve hız sınırları uygulanır. Meşru trafik için bu aşamada davranış tabanlı kurallar da devreye girer.
- Temiz trafiğin iletilmesi: Geçen trafik sunucuya ulaşır; saldırı sürerken servis çalışmaya devam eder.
Bu işin önemli yanı, filtrelemenin hattınız dolmadan önce, yani yukarı akışta yapılmasıdır. Sunucudaki iptables kuralları bu yüzden volumetrik saldırıda tek başına yetmez.
Kendi ASN'iniz ve IP bloğunuz varsa
Kendi IP bloğunu kullanan ağlarda koruma, genellikle BGP ile sağlanır. Nixcon'un NixGuard Edge / BGP tünel hizmetinde trafik koruma katmanından geçer ve temiz trafik, GRE tüneli içindeki BGP oturumuyla size iletilir. Kendi ASN'iniz (örneğin dokümantasyon ASN'i AS64500) ve bloğunuz (192.0.2.0/24) için AS-SET desteği de bulunur. GRE kapsülleme MTU'yu düşürdüğü için tünel arayüzünde MSS clamping ve MTU ayarını kontrol etmeyi unutmayın.
Nixcon, kendi ağı AS40368 üzerinden İzmir'deki ana veri merkezi ile Frankfurt ve Fremont POP'larını işletir. Sunucu tarafında DDoS korumalı çözümleri ve firewall seçeneklerini DDoS koruma ve firewall sayfasında inceleyebilirsiniz.
Tespit ve İzleme: Saldırıyı Önceden Görmek
Koruma kadar görünürlük de önemlidir. Flow tabanlı izleme, saldırının hangi IP'ye, hangi porta ve hangi protokolle geldiğini dakikalar içinde gösterir. NixMon bu amaçla flow tabanlı ağ izleme ve DDoS tespiti sunar; ayrıntılar NixMon sayfasında yer alıyor.
Yaygın Hatalar ve Çözümleri
- Hata: Yalnızca sunucudaki firewall'a güvenmek. Hat dolarsa kurallar işe yaramaz. Çözüm: Yukarı akışta filtreleme sağlayan bir altyapı kullanın.
- Hata: Açık yansıtıcı servisler. Kendi DNS, NTP veya memcached servisiniz internete açıksa saldırıda başkalarına araç olursunuz. Çözüm: Servisleri yalnızca gerekli IP'lere açın,
recursion'ı kısıtlayın, memcached'i UDP'ye kapatın. - Hata: Çok agresif hız limiti. Meşru kullanıcılar da engellenir. Çözüm: Normal trafik tabanını ölçün, limitleri bunun üzerine koyun.
- Hata: Gerçek IP'nin açık kalması. CDN/proxy kullanıp origin IP'yi sızdırırsanız saldırgan doğrudan origin'e vurur. Çözüm: Origin'e yalnızca proxy veya koruma katmanı IP'lerinden erişime izin verin, eski DNS kayıtlarını temizleyin.
- Hata: Saldırı planı olmaması. Saldırı anında kimin ne yapacağı bilinmiyor. Çözüm: Basit bir runbook yazın: teşhis komutları, iletişim kanalları, destek ekibine hangi verinin verileceği.
Saldırı Anında Kontrol Listesi
- Trafik grafiğine ve
ss -sçıktısına bakarak saldırı türünü belirleyin (hat mı, bağlantı tablosu mu, uygulama mı). - Saldırı altındaki IP/port bilgisini ve zaman damgasını kaydedin.
- Sunucu tarafında SYN cookie, hız limiti gibi hızlı önlemleri uygulayın.
- Hat doluysa altyapı sağlayıcınıza hemen bildirin; filtreleme yukarı akışta yapılmalı.
- Saldırı bittikten sonra log'ları inceleyip kalıcı kuralları ve izleme eşiklerini güncelleyin.
Sonuç
DDoS saldırıları hat, bağlantı tablosu ya da uygulama kaynaklarını hedefler ve her tür farklı bir savunma gerektirir. Sunucudaki ayarlar küçük ve uygulama katmanı saldırılarında faydalıdır; büyük hacimli saldırılarda ise ağın kenarında filtreleme yapan korumalı altyapı şarttır. Ne kadar erken tespit ederseniz, müdahale de o kadar kolay olur.
Sık sorulan sorular
DDoS saldırısı ile DoS saldırısı arasındaki fark nedir?
DoS tek bir kaynaktan, DDoS ise çok sayıda dağıtık kaynaktan yapılır. DDoS'ta kaynak sayısı fazla olduğu için tek IP engelleyerek durdurmak mümkün değildir.
DDoS saldırısını sunucudaki firewall tek başına durdurur mu?
Küçük SYN flood ve uygulama katmanı saldırılarında hız limiti ve SYN cookie yardımcı olur. Hattı dolduran volumetrik saldırılarda trafik sunucuya ulaşmadan hat dolduğu için yukarı akışta filtreleme gerekir.
DDoS saldırısı altında olduğumu nasıl anlarım?
Trafik grafiğinde ani sıçrama, yüksek syn-recv sayısı, tek URL veya porta aşırı istek, yavaşlama ve bağlantı kopmaları tipik belirtilerdir. ss -s, tcpdump ve erişim logları ile türü ayırt edebilirsiniz.
Kendi ASN ve IP bloğum varsa DDoS koruması alabilir miyim?
Evet. NixGuard Edge / BGP tünel hizmetinde kendi ASN'i ve IP bloğu olan ağlara, GRE tüneli içindeki BGP oturumuyla DDoS korumalı temiz trafik iletilir.