- Katılım
- 10 Nisan 2025
- Mesajlar
- 742
- Reaksiyon puanı
- 81
- Konu Yazar
- #1
Temel Prensip:
Rate limiting, kaynak IP veya kullanıcı bazında belirlenen süre aralığında (window) gelen istek sayısını sınırlar. Amaç, saldırganın aşırı trafik üreterek uygulama veya servis kaynaklarını tüketmesini engellemektir.
Algoritmalar:
- Fixed Window Counter
Her zaman dilimi (örneğin 1 dakika) için sayacı sıfırlayan basit sayaç.
Dezavantaj: Saldırgan sınırın hemen öncesi ve sonrası istek yollayarak kaçabilir. - Sliding Window Log
İsteklerin timestamp’leri tutulur, ilgili zaman aralığında istek sayısı dinamik hesaplanır. Daha doğru, ama performans maliyeti yüksek. - Sliding Window Counter
Zaman penceresi birkaç küçük parçaya bölünür. Bu parçalar baz alınarak oran hesaplanır, dengeli sonuç verir. - Token Bucket
Belirli oranla token üretip bucket’a koyar. İstek geldiğinde token harcanır. Token bitince istek reddedilir.
Örnek: 10 rps (requests per second) için saniyede 10 token eklenir. - Leaky Bucket
Kuyruğa alınan istekler sabit hızda işlenir, kuyruk dolunca istekler reddedilir.
Linux Uygulaması:
Kod:
# 1 saniyede en fazla 10 yeni bağlantı (limit burst 20)
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -m limit --limit 10/second --limit-burst 20 -j ACCEPT
iptables -A INPUT -p tcp --dport 80 -m state --state NEW -j DROP
Burada, saniyede 10 yeni bağlantıya izin veriliyor. Limit aşılırsa paketler düşürülüyor.
Nginx Rate Limiting (HTTP)
Kod:
# 10 istek/saniye, burst 20, nodelay ile gecikme olmadan
limit_req_zone $binary_remote_addr zone=one:10m rate=10r/s;
server {
location /api/ {
limit_req zone=one burst=20 nodelay;
}
}
- $binary_remote_addr: IP adresini binary formatta alır (performans için).
- zone=one:10m: 10 MB'lık shared memory alanı ile 160,000 IP takibi yapabilir.
- burst=20: Ani trafik artışlarına kısa süre tolerans.
- nodelay: limit aşımı durumunda bekletmeden doğrudan reddet.
2. Connection Throttling — Teknik Derinlik
Temel Prensip:
Aynı IP’den veya subnet’ten gelen eşzamanlı bağlantı sayısını veya yeni bağlantı kurma hızını sınırlar. Amaç, TCP SYN flood ve benzeri ağ tabanlı DDoS saldırılarını engellemektir.
TCP Katmanı Koruması
- SYN Cookies
TCP üç yönlü el sıkışmasında sunucunun kaynaklarını korur. Bağlantı yarıda kalırsa kaynak kullanılmaz.
Linux’da etkinleştirmek için
Kod:sysctl -w net.ipv4.tcp_syncookies=1
- Backlog ve Queue Ayarları
TCP bağlantı isteklerinin tutulduğu syn_backlog kuyruğu büyüklüğü artırılır.
Kod:sysctl -w net.ipv4.tcp_max_syn_backlog=4096
- Connection Rate Limiting
Aynı IP’den yeni bağlantı kurulma hızına sınır konur.
Kod:# Aynı IP'den eşzamanlı maksimum 10 bağlantı iptables -A INPUT -p tcp --syn -m connlimit --connlimit-above 10 --connlimit-mask 32 -j REJECT # Yeni bağlantı hızını saniyede 20 ile sınırla iptables -A INPUT -p tcp --syn -m limit --limit 20/s --limit-burst 40 -j ACCEPT iptables -A INPUT -p tcp --syn -j DROP
- Connection Rate Limiting
--connlimit-above 10
: Aynı IP’den 10’dan fazla bağlantı kabul etme.--connlimit-mask 32
: IP adresi seviyesinde kontrol (tek IP).--limit 20/s
: Saniyede 20 yeni bağlantıdan fazlası reddedilir.
CDN ve WAF Seviyesinde Uygulama
- CDN altyapısı TCP seviyesinde bağlantı sınırlandırma ve SYN flood koruması uygular.
- Uygulama katmanında ise Rate Limiting kuralları belirlenir.
- Trafik, coğrafi bölge, User-Agent, Cookie ve diğer başlıklara göre analiz edilir.
- Otomatik challenge (CAPTCHA, JS zorlama) tetiklenir.
Özet Teknik Mimarisi
Katman | Koruma Mekanizması | Protokol / Teknoloji |
---|---|---|
Ağ (Network) Katmanı | SYN Cookies, iptables connlimit , TCP backlog ayarları | TCP/IP, iptables/nftables |
Transport Katmanı | TCP Connection Throttling | TCP |
Uygulama Katmanı | Rate Limiting (HTTP Request Limiting) | HTTP, Nginx, HAProxy, CDN WAF |
CDN Seviyesi | Anycast, Global Trafik Dağıtımı, Bot Filtering | CDN Platformları (Cloudflare, Akamai) |