Quarantine
Quarantine Aksiyonu Nedir?
Quarantine aksiyonu, gelen istekleri belirli anahtarlara göre takip eder ve belirlenen koşulları karşılayan istemcilerin (IP adresi, User-Agent kombinasyonu vb.) geçici olarak erişimlerini kısıtlar. Bu aksiyon, DDoS saldırıları, brute-force (DoS) denemeleri ve anormal trafik davranışlarına karşı otomatik koruma sağlar.
Bu aksiyon hem istek (request) hem de yanıt (response) aşamasında çalışabilir ve hem HTTP hem de L7 TCP vService'lerde kullanılabilir.
TIP
Bir vService üzerinde en fazla beş adet Quarantine aksiyonu tanımlanabilir. Bu sınır aşıldığında fazladan tanımlanan aksiyonlar uyarı verilmeden devreye alınmaz; bu nedenle farklı senaryolar mümkün olduğunca koşullarla tek bir aksiyon içinde yönetilmelidir.
Quarantine Aksiyonu Nasıl Çalışır?
Quarantine aksiyonu üç aşamalı bir koruma mekanizması uygular:
Aşamalar:
| Aşama | Açıklama | Süre |
|---|---|---|
| Takip | İstemci metrikleri (istek sayısı, bant genişliği vb.) toplanır | Tracking Time |
| Değerlendirme | Karantina koşulları kontrol edilir | Anlık |
| Quarantine | Koşulları karşılayan istemci/istemciler engellenir | Quarantine Time |
Detaylı Loglama
Quarantine aksiyonu kapsamında, takip edilen yani Tracking Key alanında seçilen bilgiler ve karantinaya alınan istemcilere ait veriler TR7 üzerinde iki ayrı log yapısında saklanır. Bu yapı sayesinde belirlenen bilgilere göre istemcilerin izlenmesi hem de aktif olarak karantinada bulunan istemcilerin yönetimi ayrı ayrı gerçekleştirilebilir.
İlk log yapısı, takip (tracking) aşamasına ilişkindir. Bu loglar; belirlenen tracking key'lere göre toplanan metrikleri (istek sayısı, bağlantı sayısı, veri miktarı vb.) içerir ve henüz karantina koşullarını tetiklememiş ancak izleme altında olan istemcilerin davranışlarını görünür kılar. Bu sayede potansiyel tehdit oluşturabilecek istemciler, karantinaya alınmadan önce analiz edilebilir.
İkinci log yapısı ise karantinaya alınmış istemcilere aittir. Karantina koşullarını karşılayarak aksiyon uygulanan istemciler bu tabloda listelenir. Burada; istemcinin, karantina başlangıç zamanı, karantina bitiş zamanı, IP adresi gibi bilgiler yer alır.
Her iki log yapısı da TR7 web yönetim arayüzü üzerinden görüntülenebilir. Operatörler, takip edilen istemcileri ve aktif karantinadaki istemcileri anlık olarak izleyebilir, saldırı davranışlarını analiz edebilir ve gerektiğinde operasyonel müdahalede bulunabilir. Ayrıca karantinaya alınmış bir istemci, web arayüzü üzerinden manuel olarak karantinadan çıkarılabilir. Bu özellik, yanlış pozitif durumların hızlıca giderilmesini ve servis sürekliliğinin korunmasını sağlar.
Detaylı bilgi bu sayfadaki Toplanan Veriler Nasıl Görüntülenir? bölümünde yer alır.
Quarantine Aksiyonunun Önemi
Anormal trafik davranışlarına karşı otomatik koruma kritik öneme sahiptir.
Quarantine aksiyonu;
- DDoS saldırılarını otomatik olarak tespit eder ve engeller,
- Brute-force denemelerini istek bazında sınırlar,
- Bant genişliği tüketim saldırılarını önler,
- Uygulama seviyesinde rate limiting sağlar,
- Koşullarla seçici koruma uygular,
- Farklı istemci türlerini (IP, IP+UA, Host+IP) ayrı ayrı takip eder.
Bu nedenle Quarantine aksiyonu, web uygulamalarının güvenliği için temel bir bileşendir.
Kullanılabildiği vService Tipleri
Çalışma Anı
Nasıl Eklenir?
Yeni bir Quarantine Aksiyonu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:
- Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
- Load Balancer → Actions → Add adımları takip edilir.
- Aksiyon için benzersiz ve açıklayıcı bir isim girilir.
- Action Type olarak Quarantine seçilir.
- Aksiyona ait ilgili konfigürasyonlar yapılandırılır.
- Conditions sekmesinden aksiyonun hangi koşul/koşullarda devreye gireceği belirlenir.
Addbutonuna tıklanarak aksiyon eklenir.
Quarantine Aksiyonu Ekleme Formu
Quarantine Aksiyonu Ekleme Formu
INFO
Execution Level
Aksiyonun hangi aşamada çalıştırılacağını belirler.
- On Request: Aksiyon, istek ilgili Kurum Servisine iletilmeden önce uygulanır. Bu seviye, istek üzerinde değişiklik yapılması veya Kurum Servisine ek bilgi iletilmesi gereken durumlarda kullanılır.
- On Response: Aksiyon, yanıt istemciye iletilmeden önce uygulanır. Bu seviye, istemciye gönderilen yanıt üzerinde düzenleme veya ekleme yapılması gereken durumlarda kullanılır.
INFO
Hit Counter Varsayılan: Kapalı
Hit Counter, aksiyonun her çalışmasını sayar (aksiyonun kendi koşuluyla birlikte değerlendirilir; Deny gibi sonlandırıcı aksiyonlarda bile sayım kaybolmaz). Aksiyon bazlı hız ve toplamlar, vService panosundaki Action Hits sekmesinde ve canlı istatistik ekranında görüntülenir; listelerde ayrıca bir kolon olarak görünmez. Sayaç kümülatiftir; elle sıfırlama arayüzü yoktur: sayılan aksiyon kümesi değiştiğinde veya vService yeniden yüklendiğinde sıfırdan başlar, geçmiş ise panoda hız (hit/s) olarak korunur.
Bu aksiyonda sayaç, takip sırasında değil, karantina işlemi uygulandığında artar.
INFO
Set Variable on Hit
Aksiyon her çalıştığında değeri atanacak bir değişken adı girilebilir (isteğe bağlı; varsayılan boş). Ad; harf, rakam ve alt çizgiden oluşabilir (en fazla 32 karakter). Aksiyon tetiklendiğinde değişken 1 değerine atanır ve aynı vService'teki diğer koşul ve aksiyonlarda %TR7VAR(ad) akıllı değişkeniyle okunarak zincirleme davranışlar kurulabilir.
INFO
Tracking Key Varsayılan: IP
Gelen istekleri takip etmek için kullanılacak olan anahtar/anahtarlar bu alanda seçilir. Bu anahtar, karantina değerlendirmesinin hangi istemci bazında yapılacağını belirler.
WARNING
Details bölümünde Rule protocol olarak TCP seçilirse yalnızca IP ve Manual seçenekleri sunulur; V-Host ve User-agent içeren seçenekler listeden kalkar.
Varsayılan seçilebilir seçenekler:
| Tracking Key | Açıklama | Kullanım Senaryosu |
|---|---|---|
| IP | Yalnızca kaynak IP adresine göre takip | Genel DDoS koruması |
| IP + User-agent | IP ve tarayıcı bilgisi kombinasyonu | Bot tespiti, gelişmiş koruma |
| V-Host + IP | Sanal host ve IP kombinasyonu | Multi-tenant ortamlar |
| V-Host + IP + User-agent | En detaylı kombinasyon (önerilen) | Maksimum granülarite |
| Manual | Özel Variables kombinasyonu | Özelleştirilmiş senaryolar |
TIP
- IP: En basit ve performanslı seçenek. Çoğu senaryo için uygundur.
- IP + User-agent: Aynı IP'den farklı tarayıcıları ayırt etmek için.
- Manual: Session ID, kullanıcı adı gibi özel değerlere göre takip için.
Quarantine Keys to Track
Manuel takip seçildiğinde, takip edilecek Smart Variable'lar belirlenir. Birden fazla değer seçilebilir.
TIP
Bu alan Smart Variables destekler. fx butonu ile mevcut değişkenlere erişilebilir ve dinamik içerik oluşturulabilir.
Örnek değişkenler: Source IP, Source Port, Request Header, Request Cookie, Path, Query String, Host, sabit metin değerleri de girilebilir.
Detaylı bilgi Variables sayfasında yer alır.
Quarantine Keys to Track (Manual) Örneği
Örnek kombinasyonlar:
[Source (client) IP address]: Kaynak IP[Source (client) port]: Kaynak port[Request header: X-Forwarded-For]: Proxy arkasındaki gerçek IP[Request cookie: session_id]: Oturum kimliği
INFO
Tracking Time Varsayılan: 10 dakika
İstemci metriklerinin toplanacağı süre belirlenir. Bu süre boyunca istek sayısı, bant genişliği kullanımı gibi seçilen metrikler takip edilir. Birim olarak Seconds, Minutes veya Hours seçilebilir; değer 1 saniye ile 360 saat arasında olmalıdır.
Örnek değerler:
| Süre | Kullanım Senaryosu |
|---|---|
| 1 minute | Hızlı tespit, anlık saldırılar |
| 5 minutes | Dengeli koruma |
| 10 minutes | Uzun vadeli davranış analizi |
| 1 hour | Düşük yoğunluklu saldırılar |
WARNING
Tracking Time, karantina koşullarındaki rate hesaplamalarının periyodunu belirler. Örneğin, "100 istek/dakika" koşulu için en az 1 dakikalık tracking time gereklidir.
INFO
Quarantine Condition
İstemcinin karantinaya alınması için karşılanması gereken koşullar seçilir. Burada sadece Quarantine Condition kullanılabilir. Birden fazla koşul AND veya OR operatörleriyle birleştirilebilir.
Quarantine Condition
AND Operatörü
OR Operatörü
Koşul eklemek için (+) butonuna tıklanır ve aşağıdaki form açılır:
Quarantine Condition Ekleme Formu
Tracking Criteria:
| Kriter | Açıklama | Örnek Kullanım |
|---|---|---|
| HTTP Requests | Tracking Time içindeki HTTP istek sayısı | > 1000 istek |
| HTTP Errors | Tracking Time içindeki HTTP hata sayısı | > 100 hata |
| Incoming Data (B) | Tracking Time içinde gelen veri miktarı | > 100 MB |
| Outgoing Data (B) | Tracking Time içinde giden veri miktarı | > 500 MB |
| Total Connections | Tracking Time içindeki toplam bağlantı sayısı | > 200 bağlantı |
| Current Connections | Tracking Time içindeki anlık bağlantı sayısı | > 50 bağlantı |
TIP
Birden fazla koşul kullanılarak daha hassas kurallar oluşturulur:
HTTP requests > 1000 AND HTTP errors > 50: Hem yüksek trafik hem yüksek hataConnection current > 100 OR Data > 1GB: Çok bağlantı veya çok veri
INFO
Quarantine Time Varsayılan: 10 dakika
Koşulları karşılayan istemcinin karantinada kalacağı süre seçilir. Bu süre boyunca istemci, seçilen işleme göre düşürülür, yönlendirilir veya özel içerik sayfası görüntüler. Birim olarak Seconds, Minutes veya Hours seçilebilir; değer 1 saniye ile 360 saat arasında olmalıdır.
Süre son ihlalden itibaren işler
Karantinadaki istemci koşulu sağlamaya devam ettiği sürece süre yenilenir. Karantina, koşulun son kez sağlandığı andan itibaren bu süre kadar sonra kalkar.
Önerilen değerler:
| Süre | Senaryo |
|---|---|
| 1 minute | Test/geliştirme ortamı |
| 5 minutes | Normal saldırılar |
| 30 minutes | Kalıcı saldırganlar |
| 1 hour | Ciddi saldırı girişimleri |
| 24 hours | Tekrarlayan saldırganlar |
INFO
Quarantine Action Varsayılan: Silent drop
Karantinaya alınan istemciye uygulanacak işlem seçilir.
WARNING
Redirect ve Show content seçenekleri yalnızca HTTP kuralları için sunulur. Details bölümünde Rule protocol olarak TCP seçilirse yalnızca Silent Drop kullanılabilir; daha önce seçilmiş bir değer varsa sessizce Silent Drop'a döner.
TCP kurallarında Silent Drop bağlantıyı sessizce düşürmez; karantinadaki istemcinin bağlantısı reddedilerek kapatılır.
Silent Drop Varsayılan
Seçildiğinde karantinaya alınan istemciden gelen istekler yanıt üretilmeden düşürülür; istemci bağlantı zaman aşımı görür.
Kullanım senaryosu: DDoS saldırıları, bot trafiği
Redirect
Redirect seçildiğinde, karantinaya alınan istemci belirtilen URL'ye yönlendirilir.
Redirect Seçeneği ve Lokasyon Alanı
Redirect Location: Karantinaya alınan istemcinin yönlendirileceği URL.
WARNING
Yönlendirme kalıcı yönlendirme (301) olarak yapılır; durum kodu seçilemez.
Bu alanda değişken listesi açılmayabilir; hedef adres sabit metin olarak yazılmalıdır.
Kullanım senaryosu: Rate limiting sayfası, CAPTCHA doğrulaması
Show Content
Show Content seçildiğinde, karantinaya alınan istemciye özel bir içerik sayfası gösterilir.
Show Content Seçeneği ve Ayarları
Quarantine content: Gösterilecek içerik sayfasıdır. Varsayılan olarak hazır Karantina sayfası (İngilizce) seçilidir; listenin yanındaki + butonuyla formdan çıkmadan yeni bir içerik sayfası da oluşturulabilir. Sayfalar ayrıca Content Pages bölümünden yönetilir.
Quarantine status code: İstemciye döndürülecek HTTP durum kodudur. Listede tüm HTTP durum kodları yer alır; varsayılan 401'dir.
Karantina yanıtı için yaygın tercihler:
- 401 Unauthorized: Yetkisiz (varsayılan)
- 403 Forbidden: Erişim yasak
- 429 Too Many Requests: Çok fazla istek
Kullanım senaryosu: Özel hata sayfaları, kullanıcı bilgilendirme
INFO
Conditions
Bu alanda, ilgili aksiyonun hangi koşul veya koşullar sağlandığında devreye gireceği tanımlanır.
Bir veya birden fazla koşul eklenerek, and/or yapısı ile davranışın hedefli ve kontrollü şekilde uygulanması sağlanabilir.
Koşullar hakkında detaylı bilgi Conditions sayfasında yer alır.
WARNING
Bu alanda herhangi bir koşul tanımlanmazsa, ilgili aksiyon koşulsuz (Always) olarak çalışır. Bu durumda aksiyon, ilgili vService'e gelen tüm trafiğe uygulanır.
Canlı ortamlarda, koşul tanımlanmadan aksiyon kullanılması beklenmeyen durumlara (servis kesintilerine) yol açabilir. Bu nedenle aksiyon oluşturulurken mutlaka en az bir koşul tanımlanması önerilir.
INFO
Details
Eklenen Quarantine aksiyonun hangi vService tipi için oluşturulacağı seçilir. Varsayılan olarak HTTP kullanılır.
- HTTP
- TCP
INFO
Form Butonları
Add
Add butonuna tıklanarak aksiyon ekleme işlemi tamamlanır.
Add & Repeat
Add & Repeat butonu ile aksiyon ekleme işlemi tamamlanır ve farklı konfigürasyonlarla ilgili pencereden çıkılmadan yeni bir aksiyon daha eklenebilir.
Aksiyon Eklendi
Toplanan Veriler Nasıl Görüntülenir?
Quarantine aksiyonu tarafından toplanan veriler, vService'in Logs & Tracking sekmesinden görüntülenebilir. Veriler Karantina Logları (Takip) ve Karantina Logları (Karantina) olmak üzere iki ayrı tabloda sunulur.
Quarantine Logları (Takip)
Quarantine Logları (Karantina)
TR7 web arayüzünden Load Balancer → Load Balancer vService List yolu izlenir.
İlgili vService listeden seçilerek Dashboard ikonuna tıklanır veya doğrudan sol menüden vServices altındaki ilgili servis seçimi yapılır. Her iki yöntemde de ilgili vService'in Dashboard ekranına ulaşılır ve Logs & Tracking sekmesi açılır.
Sol üstteki dropdown menüden Karantina Takip logları veya Karantina tablosu seçilir. (Aksiyona verilen isim görünür.)
Tablo verileri otomatik olarak yüklenir. Tabloyu manuel güncellemek için Refresh butonuna tıklanır.
Karantina Logları (Takip): Tablo Kolonları
| Kolon | Açıklama |
|---|---|
| Last Event | Bu kayıt için son aktivite zamanı |
| Expiry Date | Kaydın tablodan silineceği zaman |
| IP | İzlenen IP adresi (veya seçilen fx değişkenleri) |
| Request | HTTP istek sayısı (yalnızca HTTP) |
| Request.error | HTTP hata sayısı (yalnızca HTTP) |
| Data (in) | Gelen veri miktarı |
| Data (out) | Giden veri miktarı |
| Total Connections | Total bağlantı sayısı |
| Current Connections | Anlık bağlantı sayısı |
Karantina Logları (Karantina): Tablo Kolonları
| Kolon | Açıklama |
|---|---|
| Quarantine Start | Karantinaya giriş |
| Quarantine Expiry | Karantinaya çıkış |
| IP | Karantinaya alınan istemci IP adresi (veya seçilen fx değişkenleri) |
Kaynak Kullanımı ve Optimizasyon
Quarantine aksiyonu, her istek için Karantina Takip Tablosu sorguları gerçekleştirir. Yüksek trafikli ortamlarda dikkat edilmesi gereken bazı noktalar aşağıda listelenmiştir.
Tracking Key seçimi:
- IP en az kaynak tüketen seçenektir.
- Manuel çok fazla key kullanıldığında bellek kullanımı artar.
Tablo boyutları:
- Tracking tablosu: ~20.000 kayıt kapasitesi
- Karantina tablosu: ~5.000 kayıt kapasitesi
Öneriler:
- Tracking Time'ı gereksiz uzun tutmayın.
- Çok geniş koşullar yerine spesifik koşullar kullanılır.
- Yüksek trafikli servislerde IP bazlı tracking tercih edilir.
Karantina kayıtları cihaz bazındadır
Takip sayaçları ve karantina kayıtları her TR7 cihazında ayrı tutulur; cluster'daki cihazlar arasında paylaşılmaz. Trafiği birden fazla cihaza dağılan bir istemci, eşiği her cihazda ayrı ayrı doldurur.
Yapılandırma yenilendiğinde kayıtlar korunur; servis tamamen yeniden başlatıldığında sıfırlanır.
INFO
Karantinadan Elle Çıkarma
Karantinadaki bir istemci, ilgili vService'in Logs & Tracking ekranındaki karantina tablosundan seçilip Remove from Table işlemiyle serbest bırakılabilir. Bu işlem istemcinin takip kaydını da temizler; istemci sıfırdan değerlendirilmeye başlanır.
Operasyonel ve Güvenli Kullanım Önerileri
- Whitelist ile birlikte kullanılır. Bilinen IP'lerin (ofis, partner, monitoring, kurum içi) karantinadan muaf tutulması için Conditions kullanılır.
- Test Ortamında Doğrulayın. Üretim öncesi test ortamında eşik değerlerini doğrulayın. Yanlış konfigürasyon meşru kullanıcıları engelleyebilir.
- Loglama ile izlenir. Karantina olaylarının izlenmesi için Karantina Logları (Takip) ve Karantina Logları (Karantina) ekranları sürekli takip edilir.
- Karantina Süresini Dengeli Tutun. Çok kısa süre etkisiz kalır, çok uzun süre meşru kullanıcıları engelleyebilir.
Canlı Ortamlarda Yaygın Kullanım Senaryoları
Aşağıdaki örnekler, ilgili aksiyonun gerçek sistemlerde en sık karşılaşılan kullanım senaryolarında nasıl uygulandığını göstermektedir. Bu senaryolar, canlı ortamlarda yaygın olarak tercih edilen ve sahada edinilmiş deneyimlere dayanan pratikleri temel alır.
Senaryo 1: DDoS Saldırı Koruması ve Silent Drop
Problem: E-ticaret sitesi DDoS saldırısı altında. Tek bir IP'den dakikada 1000+ istek geliyor ve sunucular aşırı yüklenmiş durumda. Saldırgan IP'leri hızlıca engellemek ve kaynakları korumak gerekiyor.
Çözüm: IP bazlı takiple 1 dakikada 1000'den fazla istek yapan IP'ler 30 dakika boyunca sessizce engellenir.
Konfigürasyon:
- Execution Level: On Request
- Tracking Key: IP
- Tracking Time: 1 Minute
- Quarantine Condition: HTTP Requests > 1000
- Quarantine Time: 30 Minutes
- Quarantine Action: Silent Drop
- Conditions: Source IP 10.0.0.0/8 ile başlamaz (ofis ağını hariç tut)
- Details: HTTP
Sonuç:
- ✅ Otomatik DDoS koruması → 1 dakikada >1000 istek yapan IP'ler anında karantinaya alınır.
- ✅ Silent drop → Saldırgan hiçbir yanıt almaz, bağlantı düşürülür.
- ✅ Whitelist koruması → Ofis ağı (10.0.0.0/8) karantinadan muaf tutulur.
- ✅ Kaynak koruma → Saldırgan IP'ler 30 dakika boyunca engellenir, sunucu yükü azalır.
- ✅ Otomatik temizleme → 30 dakika sonra karantina otomatik kalkar.
Karantina Takip Tablosu:
| IP | Request | Data (in) | Data (out) | Total Connections |
|---|---|---|---|---|
| 203.0.113.45 | 1523 | 15 MB | 2 MB | 1523 |
| 198.51.100.23 | 2041 | 20 MB | 1 MB | 2041 |
Karantina Tablosu:
| IP | Quarantine Start | Quarantine Expiry |
|---|---|---|
| 203.0.113.45 | 2024-01-15 14:23:10 | 2024-01-15 14:53:10 |
| 198.51.100.23 | 2024-01-15 14:24:05 | 2024-01-15 14:54:05 |
Senaryo 2: WordPress/CMS Admin Panel Brute-Force Önleme
Problem: WordPress sitesinin /wp-admin/ login sayfasına bot'lar sürekli brute-force saldırısı yapıyor. 5 dakikada 50+ login denemesi var ve sunucu PHP işlem kapasitesi dolmuş durumda. Başarısız login denemeleri izlenmeli ve saldırganlar engellenmelidir.
Çözüm: IP + User-Agent kombinasyonuyla login path'inde 5 dakikada 50'den fazla istek yapan istemciler tespit edilir ve 15 dakika boyunca sessizce engellenir.
Konfigürasyon:
- Execution Level: On Request
- Tracking Key: IP + User-agent
- Tracking Time: 5 Minutes
- Quarantine Condition: HTTP Requests > 50
- Quarantine Time: 15 Minutes
- Quarantine Action: Silent Drop
- Conditions: Path
/wp-admin/ile başlar - Details: HTTP
Sonuç:
- ✅ Brute-force engelleme → 5 dakikada >50 login denemesi yapan IP+UA kombinasyonları karantinaya alınır.
- ✅ Silent drop → Saldırgan bot'lar hiçbir yanıt almaz, bağlantı düşürülür.
- ✅ PHP kaynak koruması → Gereksiz login işlemleri engellenir, sunucu yükü azalır.
- ✅ Path koşulu → Sadece
/wp-admin/path'i korunur, diğer sayfalar etkilenmez. - ✅ User-Agent takibi → Aynı IP'den farklı tarayıcılar/bot'lar ayrı ayrı izlenir.
Karantina Takip Tablosu:
| IP | User-Agent | Request | Total Connections |
|---|---|---|---|
| 203.0.113.10 | python-requests/2.31.0 | 156 | 156 |
| 198.51.100.5 | Go-http-client/1.1 | 89 | 89 |
Senaryo 3: API Rate Limiting ve Fair Usage Politikası
Problem: Public API endpoint'i (/api/v1/) müşterilere sunuluyor ancak bazı müşteriler dakikada 500+ istek yaparak diğer müşterilerin hizmetini aksatıyor. Fair usage politikası uygulanmalı, aşırı kullanım engellenmelidir. Her API key ayrı ayrı izlenmeli ve key bazlı limit uygulanmalıdır.
Çözüm: API key + IP kombinasyonuyla takip yapılarak dakikada 100 istekten fazlasını gönderen istemciler 1 dakika boyunca rate limit mesajıyla engellenir.
Konfigürasyon:
- Execution Level: On Request
- Tracking Key: Manual
- Quarantine Keys to Track: Smart Variables (fx) butonundan
Request header: X-API-KeyveSource (client) IP addressdeğişkenleri seçilir
- Quarantine Keys to Track: Smart Variables (fx) butonundan
- Tracking Time: 1 Minute
- Quarantine Condition: HTTP Requests > 100
- Quarantine Time: 1 Minute
- Quarantine Action: Show Content
- Quarantine Content: API-Rate-Limit-Error (önceden tanımlanmış content page)
- Status Code: 429 Too Many Requests
- Conditions: Path
/api/v1/ile başlar - Details: HTTP
Sonuç:
- ✅ Fair usage → Her API key dakikada max 100 istek yapabilir.
- ✅ API key takibi → Her API key ayrı ayrı izlenir, multi-user senaryolarda adil limit.
- ✅ Hızlı reset → 1 dakika sonra karantina kalkar, kullanıcı yeniden deneyebilir.
- ✅ 429 status code → Standard HTTP rate limit response, client'lar retry-after uygulayabilir.
- ✅ Manual tracking → X-API-Key ve IP kombinasyonu ile granüler takip.
API Rate Limit Content Page:
{
"error": "rate_limit_exceeded",
"message": "You have exceeded the API rate limit of 100 requests per minute.",
"retry_after": 60,
"documentation": "https://api.example.com/docs/rate-limits"
}Karantina Takip Tablosu:
| X-API-Key | IP | Request | Total Connections |
|---|---|---|---|
| key_abc123...xyz | 203.0.113.50 | 156 | 156 |
| key_def456...uvw | 198.51.100.25 | 89 | 89 |
Senaryo 4: Bant Genişliği Tüketim Saldırısı (Download Flood) Engelleme
Problem: CDN servisinden büyük dosyalar (video, ISO, firmware) sunuluyor. Bazı IP'ler 1 dakikada 10 GB+ veri çekiyor ve bant genişliği tükeniyor. Diğer kullanıcılar yavaşlık yaşıyor. Aşırı download yapan IP'leri geçici olarak engellemek gerekiyor.
Çözüm: IP bazlı takiple 1 dakikada 1 GB'dan fazla veri indiren IP'ler 10 dakika boyunca uyarı sayfasına yönlendirilir.
Konfigürasyon:
- Execution Level: On Response
- Tracking Key: IP
- Tracking Time: 1 Minute
- Quarantine Condition: Outgoing Data (B) > 1073741824 (1 GB)
- Quarantine Time: 10 Minutes
- Quarantine Action: Redirect
- Redirect Location:
/bandwidth-limit.html
- Redirect Location:
- Conditions: Path
/downloads/ile başlar - Details: HTTP
Sonuç:
- ✅ Bant genişliği koruması → 1 dakikada >1 GB indiren IP'ler karantinaya alınır.
- ✅ Redirect uyarı → Kullanıcı bandwidth limit uyarı sayfasına yönlendirilir.
- ✅ Outgoing data takibi → Response body'deki veri miktarı izlenir.
- ✅ Path koşulu → Sadece
/downloads/path'i etkilenir, diğer içerik serbestçe erişilir. - ✅ Geçici engel → 10 dakika sonra kullanıcı yeniden download yapabilir.
Bandwidth Limit Uyarı Sayfası:
<!DOCTYPE html>
<html>
<head>
<title>Bandwidth Limit Exceeded</title>
</head>
<body>
<h1>Download Limit Exceeded</h1>
<p>You have exceeded the download bandwidth limit (1 GB per minute).</p>
<p>To protect service quality for all users, your access to downloads has been temporarily limited.</p>
<p><strong>Your access will be restored in 10 minutes.</strong></p>
<p>If you need higher bandwidth, please contact our support team for enterprise options.</p>
</body>
</html>Karantina Takip Tablosu:
| IP | Request | Data (out) | Total Connections |
|---|---|---|---|
| 192.0.2.100 | 45 | 2.3 GB | 45 |
| 198.51.100.50 | 120 | 1.8 GB | 120 |
