Skip to content
Smarter by Design.Simpler for Business

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:

1. Takip
İstemci metrikleri toplanır (istek sayısı, bant genişliği vb.)
2. Değerlendir
Koşullar kontrol edilir (örn: >100 istek/dk)
3. Karantina
İstemci belirli süre boyunca engellenir.

Aşamalar:

AşamaAçıklamaSüre
Takipİstemci metrikleri (istek sayısı, bant genişliği vb.) toplanırTracking Time
DeğerlendirmeKarantina koşulları kontrol edilirAnlık
QuarantineKoşulları karşılayan istemci/istemciler engellenirQuarantine 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 ​

HTTP
L7 TCP
Network

Çalışma Anı ​

İstek Anı (On Request)
Cevap Anı (On Response)

Nasıl Eklenir? ​

Yeni bir Quarantine Aksiyonu, TR7 web yönetim arayüzü üzerinden aşağıdaki adımlar izlenerek eklenebilir:

  1. Sol altta bulunan TR7 logosuna tıklanarak Configuration Menu açılır.
  2. Load Balancer → Actions → Add adımları takip edilir.
  3. Aksiyon için benzersiz ve açıklayıcı bir isim girilir.
  4. Action Type olarak Quarantine seçilir.
  5. Aksiyona ait ilgili konfigürasyonlar yapılandırılır.
  6. Conditions sekmesinden aksiyonun hangi koşul/koşullarda devreye gireceği belirlenir.
  7. Add butonuna tıklanarak aksiyon eklenir.

Quarantine Aksiyonu Ekleme Formu ​

Quarantine Aksiyonu Ekleme FormuQuarantine Aksiyonu Ekleme Formu

INFO

Action Name ​

Oluşturulacak olan aksiyona benzersiz ve açıklayıcı bir isim girilir.

INFO

Action Type ​

Aksiyon tipi olarak Quarantine seçilir.

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 KeyAçıklamaKullanım Senaryosu
IPYalnızca kaynak IP adresine göre takipGenel DDoS koruması
IP + User-agentIP ve tarayıcı bilgisi kombinasyonuBot tespiti, gelişmiş koruma
V-Host + IPSanal host ve IP kombinasyonuMulti-tenant ortamlar
V-Host + IP + User-agentEn 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ğiQuarantine 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üreKullanım Senaryosu
1 minuteHızlı tespit, anlık saldırılar
5 minutesDengeli koruma
10 minutesUzun vadeli davranış analizi
1 hourDüşü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 ConditionQuarantine Condition

AND OperatörüAND Operatörü

OR 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 FormuQuarantine Condition Ekleme Formu

Tracking Criteria:

KriterAçıklamaÖrnek Kullanım
HTTP RequestsTracking Time içindeki HTTP istek sayısı> 1000 istek
HTTP ErrorsTracking 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 ConnectionsTracking Time içindeki toplam bağlantı sayısı> 200 bağlantı
Current ConnectionsTracking 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 hata
  • Connection 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üreSenaryo
1 minuteTest/geliştirme ortamı
5 minutesNormal saldırılar
30 minutesKalıcı saldırganlar
1 hourCiddi saldırı girişimleri
24 hoursTekrarlayan 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 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ı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 EklendiAksiyon 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ı (Takip)

Quarantine Logları (Karantina)Quarantine Logları (Karantina)

1
Adım 1 vServices ekranına git

TR7 web arayüzünden Load Balancer → Load Balancer vService List yolu izlenir.

2
Adım 2 Logs & Tracking sekmesini aç

İ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.

3
Adım 3 Tabloyu seç

Sol üstteki dropdown menüden Karantina Takip logları veya Karantina tablosu seçilir. (Aksiyona verilen isim görünür.)

4
Adım 4 Verileri yükle

Tablo verileri otomatik olarak yüklenir. Tabloyu manuel güncellemek için Refresh butonuna tıklanır.

Karantina Logları (Takip): Tablo Kolonları

KolonAçıklama
Last EventBu kayıt için son aktivite zamanı
Expiry DateKaydın tablodan silineceği zaman
IPİzlenen IP adresi (veya seçilen fx değişkenleri)
RequestHTTP istek sayısı (yalnızca HTTP)
Request.errorHTTP hata sayısı (yalnızca HTTP)
Data (in)Gelen veri miktarı
Data (out)Giden veri miktarı
Total ConnectionsTotal bağlantı sayısı
Current ConnectionsAnlık bağlantı sayısı

Karantina Logları (Karantina): Tablo Kolonları

KolonAçıklama
Quarantine StartKarantinaya giriş
Quarantine ExpiryKarantinaya çıkış
IPKarantinaya 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:

IPRequestData (in)Data (out)Total Connections
203.0.113.45152315 MB2 MB1523
198.51.100.23204120 MB1 MB2041

Karantina Tablosu:

IPQuarantine StartQuarantine Expiry
203.0.113.452024-01-15 14:23:102024-01-15 14:53:10
198.51.100.232024-01-15 14:24:052024-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:

IPUser-AgentRequestTotal Connections
203.0.113.10python-requests/2.31.0156156
198.51.100.5Go-http-client/1.18989

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-Key ve Source (client) IP address değişkenleri seçilir
  • 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:

json
{
    "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-KeyIPRequestTotal Connections
key_abc123...xyz203.0.113.50156156
key_def456...uvw198.51.100.258989

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
  • 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ı:

html
<!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:

IPRequestData (out)Total Connections
192.0.2.100452.3 GB45
198.51.100.501201.8 GB120