Güvenlik2 dk okuma476 kelime

Nginx Rate Limiting ile Layer 7 DDoS Koruması

Cloudflare arkasında gerçek IP doğrulaması, rate limiting ve Fail2Ban ile Layer 7 DDoS saldırılarına karşı Nginx güçlendirme rehberi.

Alperen Şah

Nginx Rate Limiting ve Gerçek IP Koruması ile Layer 7 DDoS Azaltma

Web uygulamalarına yönelik saldırıların büyük kısmı artık Layer 7 seviyesinde gerçekleşiyor. Özellikle reverse proxy arkasında çalışan sistemlerde yanlış yapılandırılmış rate limit kuralları gerçek kullanıcıları engellerken saldırgan trafiği kaçırabiliyor.

Bu yazıda Nginx üzerinde gerçek IP koruması, rate limiting ve reverse proxy güvenliği ile daha dayanıklı bir mimari oluşturacağız.


Problem: Yanlış IP Görülmesi

Cloudflare veya reverse proxy kullanan birçok sistemde Nginx gerçek istemci IP adresi yerine proxy IP adresini görür. https://www.cloudflare.com/ips/ Bu durumda:

  • Rate limiting düzgün çalışmaz
  • Fail2Ban yanlış IP banlar
  • Log analizi bozulur
  • Abuse tespiti zorlaşır

Gerçek IP bilgisini almak için:

set_real_ip_from 173.245.48.0/20;
set_real_ip_from 103.21.244.0/22;

real_ip_header CF-Connecting-IP;
real_ip_recursive on;

Cloudflare IP listesi düzenli olarak güncellenmelidir.


Rate Limit Yapısı

Temel rate limiting örneği:

limit_req_zone $binary_remote_addr zone=global:10m rate=5r/s;

Burada:

  • 10 MB shared memory oluşturulur
  • IP bazlı takip yapılır
  • Saniyede 5 request limiti uygulanır

Location içinde kullanım:

location /login {
    limit_req zone=global burst=20 nodelay;
}

Burst ve Nodelay Mantığı

Birçok kişi burst parametresini yanlış kullanır.

Örnek:

burst=20

Bu ayar ani trafik sıçramalarına tolerans sağlar.

nodelay aktifse request anında işlenir.

Yanlış burst ayarları:

  • Bot saldırılarını geçirir
  • Backend overload oluşturur
  • WAF bypass riskini artırır

User-Agent Bazlı Filtreleme

Kötü botları filtrelemek için:

if ($http_user_agent ~* (curl|wget|python|scrapy)) {
    return 403;
}

Ancak User-Agent filtreleri tek başına yeterli değildir çünkü kolayca spoof edilebilir.


URI Bazlı Koruma

Login, XMLRPC veya API endpointleri ayrı korunmalıdır.

Örnek:

location /wp-login.php {
    limit_req zone=login burst=5 nodelay;
}

Ayrı zone kullanmak saldırı analizini kolaylaştırır.


Fail2Ban Entegrasyonu

Nginx access log üzerinden otomatik IP banlama yapılabilir.

Örnek filtre:

[Definition]
failregex = ^<HOST> -.*"(GET|POST).*HTTP.*" 429

429 dönen IP adresleri otomatik engellenebilir.


Reverse Proxy Bypass Engelleme

En kritik güvenlik problemlerinden biri origin IP sızıntısıdır.

Firewall üzerinden yalnızca Cloudflare IP bloklarına izin verilmelidir.

Örnek UFW yaklaşımı:

ufw default deny incoming
ufw allow from 173.245.48.0/20 to any port 443

Aksi durumda saldırganlar origin IP adresine doğrudan erişebilir.


Gerçek Dünya Sorunu: False Positive

Aşırı agresif rate limiting:

  • Mobil kullanıcıları
  • NAT arkasındaki kullanıcıları
  • Kurumsal ağları

yanlışlıkla engelleyebilir.

Bu nedenle:

  • Endpoint bazlı limit
  • ASN bazlı analiz
  • Behavioral filtering

daha sağlıklı sonuç verir.


Monitoring ve Log Analizi

Takip edilmesi gereken metrikler:

  • 429 oranı
  • Upstream response süresi
  • Request distribution
  • Bot yoğunluğu
  • ASN analizi

Özellikle access log korelasyonu saldırı tespitinde kritik rol oynar.


Sonuç

Layer 7 saldırıları artık yalnızca yüksek trafik üretmiyor; aynı zamanda uygulama davranışını hedef alıyor.

Bu nedenle modern Nginx güvenliği:

  • Gerçek IP doğrulaması
  • Akıllı rate limiting
  • Reverse proxy izolasyonu
  • Log korelasyonu
  • Otomatik mitigasyon

katmanlarının birlikte çalışmasını gerektiriyor.

Yorumlar

Yorum Yaz

0/1000

Yorumlar incelendikten sonra yayımlanır. Link ve reklam içeren yorumlar kabul edilmez.