Rate limiting yapabilir miyim (IP başına saniyede X istek)?
Kısa cevap
Evet. En doğrudan yol Quarantine aksiyonudur: Tracking Key = IP, Tracking Time = 1 saniye ve Quarantine Condition = HTTP requests > X seçilir; eşiği aşan IP Quarantine Time boyunca (varsayılan 10 dakika) Quarantine Action ile karşılanır. Engelin yalnızca eşik aşıldığı sürece sürmesi isteniyorsa Advanced Traffic Inspection, Tracking Condition ve Block birlikte kullanılır. Bot/DDoS koruması açıksa L7 DDoS Protection → Source IP Request Protection, AGS açıksa Bot Protection Policies (Trigger Type = Requests) aynı işi görür.
Sorun: Tek Bir İstemci Aşırı İstek Gönderiyor
Kaba kuvvet denemeleri, içerik toplama yazılımları (scraper) ya da hatalı istemciler kısa sürede çok sayıda istek göndererek sunucuları yorar. Her istemcinin belirli bir süre içinde gönderebileceği istek sayısının sınırlanması istenir. TR7'de sınır, seçilen pencere içindeki istek sayısıyla tanımlanır: "saniyede X istek" için pencere 1 saniye yapılır.
Çözüm: Beş Yöntem
Yöntemler birbirinin alternatifidir; aynı trafiğe birden fazlasının uygulanması gerekmez.
| Durumunuz | Uygun yöntem |
|---|---|
| Eşiği aşan istemci belirli bir süre engellensin (HTTP ya da L7 TCP) | Yöntem 1: Quarantine |
| Engel yalnızca eşik aşıldığı sürece sürsün | Yöntem 2: Advanced Traffic Inspection + Tracking Condition + Block |
| HTTP vService'te Bot/DDoS koruması açık | Yöntem 3: L7 DDoS Protection → Source IP Request Protection |
| vService'te AGS açık | Yöntem 4: AGS → Bot Protection Policies (Requests) |
| Source IP Request Protection'ı komut satırından ayarlamak | Yöntem 5: WEB-CLI |
Yöntem 1: Quarantine Önerilen
- Nasıl çalışır İstemcinin istekleri Tracking Time penceresinde sayılır; Quarantine Condition sağlanınca istemci karantina tablosuna yazılır ve Quarantine Time boyunca Quarantine Action uygulanır (nasıl çalışır). Ayrıntı: Quarantine Action nasıl çalışır; eşiği aşan istemci ne kadar süre engellenir?
- Nerede açılırLoad Balancer → Actions → Quarantine · vService → Details → Actions
- Gereksinim Kurum Servisi tarafında değişiklik yoktur
- vService tipi HTTP · L7 TCP
Adım adım yapılandırma
Load Balancer → Actions ekranında Add tıklanır (nasıl eklenir).
Action Name girilir; Action Type = Quarantine, Execution Level = On Request seçilir. Tracking Key = IP (varsayılan) bırakılır; Tracking Time 1 saniye yapılır (varsayılan 10 dakika; aralık 1 saniye – 360 saat). L7 TCP vService için Details altındaki Rule protocol = TCP seçilir; bu durumda anahtar yalnızca IP ya da Manual olabilir.
Quarantine Condition alanının yanındaki + tıklanır; açılan koşul formunda Criteria = Quarantine condition, Tracking Criteria = HTTP requests ve Tracking Operator ile eşik (ör. > 20) girilip Add tıklanır. L7 TCP'de HTTP'ye özgü kriterler yerine bağlantı ve veri kriterleri kullanılır.
Quarantine Time (varsayılan 10 dakika) ve Quarantine Action (varsayılan Silent Drop; HTTP'de Redirect ya da Show content de seçilebilir) belirlenir. Takibin yalnızca belirli yollarda (ör. /login) yapılması için Conditions alanında koşul seçilir; boş bırakılırsa bütün trafik takip edilir.
Add tıklanır; aksiyon listeye eklenir.
Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır.
Save tıklanır; kural ayrı bir dağıtım adımı olmadan uygulanır. Cluster kurulumunda varsayılan auto-sync ile değişiklik eş cihaza da otomatik gönderilir; Manual Sync Mode açıksa eş cihaza elle gönderilir. Karantina kayıtları ise her cihazda ayrı tutulur.
Doğrulama
vService'in Logs & Tracking sekmesinde Logs Type listesinden aksiyon adı (QUARANTINE, süre) tablosu seçilir (karantina logları).
Eşiği aşan istemci listelenirAynı istemciden bir saniyede eşiğin üzerinde istek gönderilir.
Komut: for i in $(seq 1 50); do curl -s -o /dev/null -w '%{http_code}\n' --max-time 3 https://www.example.com/; done
İlk istekler 200, sonra 000 (Silent Drop) Yöntem 2: Advanced Traffic Inspection + Tracking Condition + Block
- Nasıl çalışırAdvanced Traffic Inspection istemci başına sayaç tutar; Tracking Condition sayacı eşikle karşılaştırır ve Block eşiği aşan isteği engeller. Sayaç eşiğin altına inince engel kendiliğinden kalkar.
- Nerede açılırLoad Balancer → Actions · Load Balancer → Conditions
- Gereksinim Kurum Servisi tarafında değişiklik yoktur
- vService tipi HTTP (L7 TCP'de Block yerine TCP Connection Management kullanılır)
Adım adım yapılandırma
Load Balancer → Actions ekranında Add tıklanır.
Action Name girilir; Action Type = Advanced Traffic Inspection seçilir. Fields to Track = Client IP Address, Traffic Tag (3–20 karakter; harf, rakam, -, _; ör. ip-hiz) ve Tracking Period = 1 saniye girilir.
Add tıklanır.
Load Balancer → Conditions ekranında Add tıklanır (nasıl eklenir).
Criteria = Tracking Condition; Tracked Table = 2. adımdaki Traffic tag, Tracking Criteria = HTTP requests ve Tracking Operator ile eşik (ör. > 20) girilir.
Add tıklanır.
Load Balancer → Actions → Add; Action Name girilir, Action Type = Block, Execution Level = On Request, Deny Type = Standard ve Status Code = 429 seçilir; Conditions alanında 6. adımdaki koşul seçilir.
Add tıklanır.
Load Balancer → Load Balancer vService List ekranında vService seçilip Edit tıklanır.
Details altındaki Actions alanında önce Advanced Traffic Inspection, sonra Block aksiyonu seçilir; aksiyonlar listedeki sırayla işlenir.
Save tıklanır.
Doğrulama
Logs & Tracking sekmesinde Logs Type listesinden aksiyon adı (TRACKING, 1s) tablosu seçilir (takip logları).
İstemci başına HTTP request sayaçlarıAynı istemciden bir saniyede eşiğin üzerinde istek gönderilir.
Komut: for i in $(seq 1 50); do curl -s -o /dev/null -w '%{http_code}\n' https://www.example.com/; done
Eşik aşılınca 429; bir saniye sonra yeniden 200Yöntem 3: L7 DDoS Protection → Source IP Request Protection
- Nasıl çalışırSource IP Request Protection, tek bir kaynak adresin Time Window içindeki istek sayısı Request Limit'i aşınca Limit Action uygular; her adres kendi sayacını taşır. İsteğe bağlı Hard Ceiling (Quarantine) ikinci bir kademe ekler.
- Nerede açılır Left Monitor Panel → Bot/DDoS Protected vServices → vService → Bot/DDoS Management → L7 DDoS Protection → Source IP Request Protection
- Gereksinim Bot/DDoS lisansı; vService'te L7 DDoS & Threat Protection açık; engelleme için L7 DDoS Protection Active
- vService tipi HTTP (L7 TCP vService'te istek sayımı yapılmaz)
Adım adım yapılandırma
vService'in düzenleme formunda Details altındaki L7 DDoS & Threat Protection kutusu işaretlenip Save tıklanır (iki yol). Koruma açıldığında L7 DDoS Protection Monitor, IP Reputation Protection Active modunda başlar (başlangıç modları).
Left Monitor Panel → Bot/DDoS Protected vServices → vService → Bot/DDoS Management sekmesinde L7 DDoS Protection kartının Edit bağlantısı tıklanır.
DDoS Protection = Active seçilip Edit tıklanır. Monitor modunda sınır aşımı yalnızca olay olarak kaydedilir.
L7 DDoS Protection kartındaki Source IP Request Protection bloğunun kalem ikonu tıklanır (Edit ekranı).
Time Window = 1 seconds (varsayılan 10 seconds), Request Limit = X (varsayılan 1000) ve Limit Action (varsayılan Show captcha; ör. Block) seçilir. Formun altındaki cümle kartta görünecek ayarı gösterir.
Edit tıklanır; ayrı bir dağıtım adımı olmadan uygulanır.
Doğrulama
Bot/DDoS Event Logs ekranında kayıt seçilir; önizlemenin L7 DDoS sekmesine bakılır.
Source IP Request Protection kaydı, ölçülen değer ve limitYöntem 4: AGS → Bot Protection Policies (Requests)
- Nasıl çalışırBot Protection Policies politikası kapsamdaki istemcinin istek sayısını Trigger Window Duration içinde sayar; Request Threshold aşılınca aksiyon uygulanır.
- Nerede açılırAGS → Protection Policies → Bot Protection Policies · vService → AGS Management → Protection
- Gereksinim AGS lisansı; vService'te AGS açık
- vService tipi HTTP
Adım adım yapılandırma
AGS vService'te açık değilse açılır (iki yol); ayrıntı: WAF, L7 DDoS & Threat Protection ve AGS'yi bir vService'e nasıl bağlarım?
AGS → Protection Policies → Bot Protection Policies ekranında Add tıklanır (nasıl eklenir).
Trigger Type = Requests; Request Threshold, Trigger Window Duration, Policy Scope = IP Address ve Action girilir. Hazır profiller de seçilebilir (hazır profiller).
Add tıklanır.
vService'in AGS Management sekmesinde Protection bölümünün Edit bağlantısı tıklanır; Bot Protection Policies alanında politika seçilir.
Edit / Protection penceresinde Accept tıklanır.
Doğrulama
AGS vService'inin Bot Protection sekmesinde politika seçilir.
Eşiği aşan istemcilerYöntem 5: WEB-CLI
- Nasıl çalışır Yöntem 3'teki Source IP Request Protection ayarları
lb threat-protection updatekomutuyla yazılır (kaynak adres başına istek sayısı). - Nerede açılırWEB-CLI →
lb threat-protection - Gereksinim WEB-CLI erişimi; Bot/DDoS lisansı; vService'te L7 DDoS & Threat Protection açık
- vService tipi HTTP
Adım adım yapılandırma
lb service update id <vService> --threatProtection trueKoruma kaydının kimliği vService'tir; id alanında Tab ile listelenir. --ddosProtection true L7 DDoS Protection'ı Active yapar (Monitor için monitor). Örnek: kaynak adres başına saniyede 20 istek, aşımda 429 ile engelleme:
lb threat-protection update id <vService> --ddosProtection true --ddosSrcIpRequestProtection true --ddosSrcIpRequestWindow.val 1 --ddosSrcIpRequestWindow.unit s --ddosSrcIpRequestLimit 20 --ddosSrcIpRequestAction block --ddosSrcIpRequestBlockStatusCode 429Doğrulama
Koruma kaydı görüntülenir.
Komut: lb threat-protection show <vService>
ddosSrcIpRequestLimit 20 · ddosSrcIpRequestAction blockSık Yapılan Hatalar
- Pencereyi uzun tutup "saniyede X" sanmak. Eşik pencere başınadır: Quarantine'da Tracking Time, Advanced Traffic Inspection'da Tracking Period, Source IP Request Protection'da Time Window 1 saniye yapılır.
- Advanced traffic inspection'ı Block'tan sonra sıralamak. Sayaç aksiyonu vService'in Actions listesinde Block'tan önce olmalıdır.
- NAT ya da proxy arkasındaki kullanıcıları unutmak. Aynı IP'yi paylaşan kullanıcılar tek sayaçta toplanır; TR7 bir CDN ya da proxy arkasındaysa HTTP vService'te önce Trusted Proxy ile gerçek istemci IP'si çözülür.
- Bot/DDoS'u Monitor modunda bırakmak. Monitor modunda sınır aşımı yalnızca olay olarak kaydedilir; engelleme için DDoS Protection = Active yapılır.
- IP dışındaki bir anahtara göre sınırı IP ile kurmak. API anahtarı ya da token başına sınır için: API key / token gibi bir anahtara göre rate limit uygulayabilir miyim?
Dokümantasyonda nasıl yapılır
