WAF'ın tespit ettiği saldırıya göre Load Balancer tarafında farklı aksiyon alabilir miyim (WAF Attack Signature / Signature Group condition)?
Kısa cevap
Evet. Load Balancer koşullarında (Conditions) iki WAF ölçütü vardır: WAF Attack Signature seçilen imzaları, WAF Attack Signature Group seçilen saldırı kategorilerinin bütün imzalarını yakalar; yalnızca "WAF engelledi mi" sorusu için If is a WAF block hazır koşulu kullanılır. Koşul bir action'a (Block, Show Content, Location Redirection, Quarantine, Add HTTP Header gibi) bağlanır ve action vService'in Details listesindeki Actions alanına eklenir. WAF ölçütleri, WAF'ın o istek için saldırı kaydı ürettiği durumda eşleşir: istek engelleme eşiğine ulaştığında (host grubu Monitor modunda olsa da) ya da durumu Monitor olan bir imza tetiklendiğinde. Learning modunda ve eşiğin altında kalan tekil tespitlerde eşleşmez; If is a WAF block yalnızca Blocking modunda WAF isteği gerçekten engellediğinde eşleşir. Action'lar WAF'ın engelleme sayfasından (Blocking Page) önce çalıştığı için isteği sonlandıran bir action kendi yanıtını döndürür; Add HTTP Header gibi sonlandırmayan bir action'dan sonra WAF engellemesi olduğu gibi uygulanır. Böylece Monitor modundaki bir host grubunda yalnızca belirli kategoriler engellenebilir ya da WAF puanı Kurum Servisine header ile iletilebilir. Yalnızca engelleme sayfası değişecekse WAF'ın Conditional Blocking Pages alanı kullanılır. Ölçütler yalnızca WAF'ı açık HTTP vService'te çalışır.
Sorun: WAF'ın Kararına Göre Farklı Davranmak Gerekiyor
Host grubu henüz Monitor modunda olduğu hâlde belirli saldırı kategorilerinin (ör. SQL Injection) şimdiden engellenmesi, belirli bir imza tetiklendiğinde özel bir yanıt verilmesi, saldırganın karantinaya alınması ya da WAF'ın puanının Kurum Servisine iletilmesi istenebilir. WAF'ın kendi ayarları kararı yalnızca engelle ya da izle olarak verir; tespit edilen saldırıya göre farklı bir davranış Load Balancer koşulları ve action'larıyla kurulur.
Çözüm: 3 Yöntem
| Durumunuz | Uygun yöntem |
|---|---|
| Tespit edilen imzaya ya da kategoriye göre engelleme, yönlendirme, karantina, header ekleme | Yöntem 1: Koşul + action |
| Blocking modunda yalnızca engelleme sayfasını kategoriye göre değiştirmek istiyorum | Yöntem 2: Conditional Blocking Pages |
| Komut satırından | Yöntem 3: WEB-CLI |
Yöntem 1: Koşul + Action Önerilen
- Nasıl çalışır WAF ölçütlü koşul, WAF taramasının sonucunu okur; koşula bağlı action vService'in Actions listesinde, WAF'ın engelleme yanıtından önce çalışır.
- Nerede açılırLoad Balancer → Conditions · Load Balancer → Actions · vService → Details → Actions
- Gereksinim vService'te WAF açık; host grubu Monitor ya da Blocking modunda (Learning modunda koşul eşleşmez)
- vService tipi HTTP
Adım adım yapılandırma
Sol alttaki TR7 logosuyla Configuration Menu açılır; Load Balancer → Conditions ekranında Add tıklanır (nasıl eklenir).
Condition Name girilir (boş bırakılırsa listede yalnızca seçim sayısını gösteren otomatik bir açıklama görünür). Criteria alanında ihtiyaca göre seçim yapılır:
| Criteria | Doldurulan alan | Eşleşme |
|---|---|---|
| WAF Attack Signature Group | WAF Attack Signature Groups: bir ya da birden çok kategori (ör. SQL Injection, Cross-Site Scripting) | Seçilen kategorilerden herhangi bir imza saldırı kaydında varsa |
| WAF Attack Signature | WAF Attack Signatures: kural adıyla aranarak bir ya da birden çok imza | Seçilen imzalardan herhangi biri saldırı kaydında varsa |
Listelerde yerleşik imzalar ve yapısal kurallar bulunur; özel (custom) WAF kuralları listelenmez. Criteria kaydedildikten sonra değiştirilemez.
Add tıklanır; koşul listeye eklenir.
Load Balancer → Actions ekranında Add tıklanır (nasıl eklenir).
Action Name girilir, Execution Level = On Request bırakılır ve ihtiyaca göre Action Type seçilir:
| Amaç | Action Type | Ayar |
|---|---|---|
| Kategoriyi engellemek | Block | Deny Type = Standard, Status Code varsayılan 403 |
| Özel bir sayfa göstermek | Show Content | Content Page ve Status Code (varsayılanı 200 olduğundan 403 gibi bir kod seçilir) |
| Başka bir adrese göndermek | Location Redirection | Hedef adres ve yönlendirme kodu |
| Saldırganı bir süre bütünüyle engellemek | Quarantine | Süre ve izleme anahtarı (Quarantine Action nasıl çalışır; eşiği aşan istemci ne kadar süre engellenir?) |
| WAF puanını Kurum Servisine iletmek | Add HTTP Header | Header to Add (ör. X-WAF-Score) ve Header Content alanında fx ile WAF Score değişkeni (%WAFSCORE) (WAF değişkenleri) |
Conditions alanında 3. adımda oluşturulan koşul seçilir. Yalnızca WAF'ın engellediği isteklere işlem yapılacaksa hazır If is a WAF block koşulu seçilir. İsteğe bağlı olarak Hit Counter açılır.
Add tıklanır; action listeye eklenir.
Load Balancer → Load Balancer vService List ekranında WAF'ı açık HTTP vService seçilip Edit tıklanır.
Details altındaki Actions alanında action seçilir. Action'lar listedeki sırayla çalışır; isteği sonlandıran bir action'dan sonrakiler çalışmaz (aksiyon sıralaması).
Save tıklanır; ayrı bir dağıtım adımı yoktur. Action vService'e eklenmedikçe çalışmaz. Cluster'da değişiklik varsayılan auto-sync ile eş cihaza da gönderilir; Manual Sync Mode açıksa Synchronize ile elle gönderilir.
Doğrulama
Seçilen kategoriyi tetikleyen bir test isteği gönderilir (örnek SQL Injection kategorisi için).
Komut: curl -s -o /dev/null -w "%{http_code}\n" "https://www.example.com/?id=1%27%20OR%20%271%27=%271"
403WAF Event Logs ekranında isteğin saldırı kaydına; Hit Counter açıksa vService Dashboard'unun Action Hits sekmesine bakılır.
Saldırı kaydı oluşur, action sayacı artarYöntem 2: Conditional Blocking Pages
- Nasıl çalışır WAF bir isteği engellediğinde koşullu sayfalar tanım sırasıyla denenir, koşulu uyan ilk satırın sayfası ve durum kodu döner; hiçbiri uymazsa varsayılan engelleme sayfası döner.
- Nerede açılır Left Monitor Panel → WAF-Protected vServices → vService → WAF Management → Inspection & Blocking → Blocking Page kartı
- Gereksinim Host grubu Blocking modunda; 1–3. adımlardaki gibi oluşturulmuş bir WAF ölçütlü koşul; gösterilecek sayfa için bir Content Pages profili
- vService tipi HTTP
Adım adım yapılandırma
Yöntem 1'in 1–3. adımları uygulanarak WAF Attack Signature Group (ya da WAF Attack Signature) koşulu oluşturulur.
Left Monitor Panel → WAF-Protected vServices → vService → WAF Management sekmesinde, Inspection & Blocking bölümündeki Blocking Page kartının sağ üstündeki kalem ikonu tıklanır (Blocking Page Edit ekranı).
Conditional Blocking Pages alanında Add Conditional Page tıklanır.
Condition alanında 1. adımdaki koşul, Page Profile alanında gösterilecek içerik profili seçilir; Status Code varsayılan olarak Use Default Status Code (Blocking Status Code, varsayılan 418) gelir, gerekirse satıra özel kod seçilir. Koşulu boş bırakılan satır engellenen her istekle eşleşir; satırlar sırayla denendiği için o satırdan sonraki satırlar ve varsayılan engelleme sayfası kullanılmaz. Bu yüzden her satırda koşul seçilir.
Edit tıklanır; ayrı bir dağıtım adımı yoktur. Ayrıntılar: Koşula bağlı farklı engelleme sayfaları tanımlayabilir miyim (Conditional Blocking Pages)?
Doğrulama
Koşuldaki kategoriyi tetikleyen bir istek gönderilir.
Komut: curl -s -i "https://www.example.com/?id=1%27%20OR%20%271%27=%271"
Satırda seçilen durum kodu ve sayfa içeriğiYöntem 3: WEB-CLI
- Nasıl çalışır Yöntem 1'deki koşul, action ve bağlama WEB-CLI komutlarıyla yapılır. WEB-CLI'da ölçütlerin adı
waf_attack_idvewaf_attack_group'tur. - Nerede açılır WEB-CLI →
lb condition·lb action·lb service - Gereksinim WEB-CLI erişimi
- vService tipi HTTP (örnek Block action'ıyla)
Adım adım yapılandırma
Kategori, WAF kural veritabanındaki anahtarıyla yazılır (ör. SQL Injection için sqlInjection, Cross-Site Scripting için xss); tek imza için criteria waf_attack_id --wafAttackIds.0 ile imza kimliği verilir:
lb condition add criteria waf_attack_group --wafAttackGroups.0 sqlInjection --name waf-sqliKomut başarılı olduğunda çıktı vermez.
--cond alanı koşulun adını değil kimliğini alır. Kimlik listenin id sütunundan okunur (lbConditions- ile başlar):
lb condition list<koşul-kimliği> yerine 2. adımdaki kimlik yazılır; Status Code varsayılan 403'tür (aksiyon örnekleri):
lb action add type deny name waf-sqli-block --cond <koşul-kimliği>lb service show <vService>Çıktıdaki rules.0, rules.1 … satırları vService'te tanımlı action'lardır.
--rules.N o sıradaki mevcut action'ın yerine geçer; bu yüzden yeni action ilk boş sıraya yazılır. vService'te hiç action yoksa sıra 0'dır; iki action varsa --rules.2 kullanılır:
lb service update id <vService> --rules.0 waf-sqli-blockDoğrulama
vService kaydı yeniden görüntülenir.
Komut: lb service show <vService>
rules satırlarında waf-sqli-blockSık Yapılan Hatalar
- Learning modunda koşulun eşleşmesini beklemek. Learning modunda WAF saldırı kaydı üretmez; WAF ölçütlü koşullar eşleşmez. Host grubu en az Monitor moduna alınır.
- Monitor modunda If is a WAF block kullanmak. Monitor modunda WAF isteği engellemediği için bu koşul eşleşmez; Monitor modunda WAF Attack Signature ya da WAF Attack Signature Group kullanılır.
- Eşiğin altındaki tespitlerde eşleşme beklemek. Koşul, engelleme eşiğine ulaşan ya da durumu Monitor olan bir imzayı tetikleyen isteklerde eşleşir; tek başına eşiğe ulaşmayan düşük puanlı imzalar koşulu tetiklemez.
- Sonlandıran action'ın WAF kaydını kaldırdığını sanmak. WAF saldırı kaydı ve sayaçları yine oluşur; yalnızca istemciye giden yanıt değişir.
- Koşulu oluşturup action'ı vService'e eklememek. Koşul ve action tek başına çalışmaz; action vService'in Actions alanına eklenip Save edilir.
- WEB-CLI'da
--rules.0ile mevcut action'ı ezmek. Dolu bir sıraya yazılan action oradakinin yerine geçer; öncelb service showile ilk boş sıra bulunur. - Koşulu L7 TCP ya da Network vService'te kullanmak. WAF ölçütleri yalnızca WAF'ı açık HTTP vService'te eşleşir.
Dokümantasyonda nasıl yapılır
