DDoS (Distributed Denial of Service), saldırganın botnet''i ile binlerce IP''den aynı anda hedefe istek gönderip servisi çökertmesidir. 2025''te kayıtlı en büyük saldırı 3.8 Tbps''e ulaştı — tek bir sunucunun 500 katı. Koruma tek katmanlı değil, çok katmanlı olmalı: CDN, WAF, network, uygulama.
DDoS Saldırı Türleri
İlgili rehberler: SSL sertifikası nasıl alınır · OWASP Top 10 2026 · JWT güvenlik · SQL injection önleme · Parola hash (BCrypt, Argon2)
Volumetric (L3/L4) — Bant Genişliği Saldırısı
UDP flood, ICMP flood, SYN flood, DNS amplification — saldırgan bant genişliğinizi doldurur. 100 Gbps+ saldırılarda tek sunucu çaresizdir; upstream''de (ISP/CDN) filtrelenmelidir.
Protocol (L4) — Kaynak Tüketme
SYN flood — yarı açık TCP bağlantı tüketir. Slowloris — yavaş HTTP header göndererek bağlantı slot''larını meşgul eder. Nginx''te worker_connections dolar, yeni istekler reddedilir.
Application (L7) — En Zoru
HTTP flood — legitimate görünen GET/POST istekleri. Rate limit olmayan bir /search endpoint''i saniyede 1000 istek alırsa DB crash olur. Firewall ayırt edemez çünkü istekler geçerli. Uygulama katmanında WAF ve rate limit gerekir.
Katman 1: DNS/CDN (Cloudflare, Fastly, Akamai)
İlk savunma hattı — DNS'nizi CDN''e yönlendirerek sunucu IP''nizi gizlersiniz. CDN proxy olarak oturur; L3/L4 flood''ları edge''de filtreler. Cloudflare ücretsiz planda bile unlimited DDoS mitigation verir.
- Cloudflare Proxy (turuncu bulut) aktif olmalı
- Origin IP''si asla halka açık olmamalı — mail, API subdomain''leri dikkat
- "Under Attack Mode" — şüpheli saldırı sırasında JS challenge
- Rate Limiting Rules — URL bazlı
- Bot Fight Mode — scraping önler
cpanel.example.com, mail.example.com). Tüm DNS kayıtlarını Cloudflare proxy''den geçirin veya gerçek IP''yi gizleyin (iptables ile sadece Cloudflare IP range''inden port 80/443 kabul edin).# Sadece Cloudflare IP'lerine izin ver
for ip in $(curl -s https://www.cloudflare.com/ips-v4); do
ufw allow from $ip to any port 443 proto tcp
done
ufw deny 443/tcp # geri kalan her şey kapalı
Katman 2: Nginx Rate Limit
Önceki nginx yazısında detaylı anlattık. Kritik: IP başına limit, endpoint bazlı limit (login 2r/s, api 5r/s, global 15r/s), ve connection limit.
limit_req_zone $binary_remote_addr zone=global:10m rate=15r/s;
limit_req_zone $binary_remote_addr zone=api:10m rate=5r/s;
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
limit_conn addr 50;
limit_req zone=global burst=30 nodelay;
# Slowloris koruması
client_body_timeout 10s;
client_header_timeout 10s;
location /api/ {
limit_req zone=api burst=10 nodelay;
proxy_pass http://backend;
}
}
Katman 3: Uygulama Seviyesi
Express-rate-limit, Flask-Limiter gibi kütüphanelerle endpoint bazlı, kullanıcı bazlı (auth''tan sonra) rate limit ekleyin. Özellikle ağır endpoint''leri (rapor üretimi, mail gönderimi) koruyun.
const rateLimit = require('express-rate-limit');
// Global
app.use(rateLimit({ windowMs: 60000, max: 120 }));
// Hassas
app.use('/login', rateLimit({
windowMs: 900000, max: 5,
message: 'Çok fazla giriş denemesi, 15 dakika sonra deneyin'
}));
// Auth sonrası kullanıcı bazlı
app.use('/api/export', rateLimit({
windowMs: 3600000, max: 10,
keyGenerator: req => req.user.id
}));
Katman 4: Fail2ban + iptables
Log''ları analiz edip saldırgan pattern''leri yakalayan Fail2ban'ı ayrı bir yazıda anlattık. DDoS''ta özellikle nginx access log''daki 4xx/5xx flood''ları yakalayan custom jail kurun.
Katman 5: OS Seviyesi Sertleştirme
# /etc/sysctl.conf
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 2048
net.ipv4.tcp_synack_retries = 2
net.ipv4.tcp_syn_retries = 5
net.core.netdev_max_backlog = 5000
net.ipv4.ip_local_port_range = 10000 65535
# Uygula
sudo sysctl -p
Monitoring ve Alert
DDoS''u erken tespit etmek kritik. Nginx access log''unu real-time izleyen bir pipeline kurun: GoAccess, Grafana Loki, Datadog. Şu metrikleri izleyin:
- İstek/saniye (baseline''ın 5 katı → alert)
- Unique IP sayısı (baseline''ın 10 katı → şüpheli)
- 4xx/5xx oranı (%30 üstü → araştır)
- TCP bağlantı sayısı
- Bandwidth kullanımı
Hazırlık Planı
- Runbook yaz — saldırı anında ne yapılacak
- Cloudflare API token hazır — Under Attack Mode''u 5 saniyede aç
- Geo-block hazır — gerekirse belirli ülkeleri blokla
- Failover — backup datacenter/DNS kaydı
- ISP iletişim — upstream null route gerekirse
Web Güvenliği ve Uygulama Savunması
Modern web güvenliği katmanlı savunma (defense-in-depth) ile yapılır: TLS 1.3 ve HSTS ile şifreli iletişim, WAF (Web Application Firewall) ile OWASP Top 10 saldırılarına karşı koruma, BCrypt veya Argon2id ile parola hash'leme, JWT token'larında imza doğrulama (HMAC veya RSA), CSRF token + SameSite cookie ile cross-site istek koruması ve Content Security Policy ile XSS azaltma. SQL injection önleme için prepared statement, brute force için fail2ban veya rate limiting, DDoS koruması için Cloudflare/Anti-DDoS sağlayıcı zorunludur. Güvenlik açığı taraması (Burp Suite, OWASP ZAP) ve düzenli güvenlik denetimi; üretim ortamında veri sızıntısı ve hesap ele geçirme risklerini büyük ölçüde azaltır.
Cloudflare kurulumu, Nginx sertleştirme, monitoring ve runbook için iletişime geçin