Allow / Teach yaptığımda arka planda hangi kural değişir (Learning Suggestion)?
Kısa cevap
Allow / Teach bir imzayı kapatmaz; isteğin Host değerine göre host grubunu, path'ine göre sayfa tipi kuralını bulur ve değişikliği o kurala yazar (kurallar nereden gelir). Hedef şu sırayla aranır: önce path'e uyan kurallarda o parametre için tanımlı değişken kuralı (exact path, glob ya da regex, Any Paths sırasıyla), yoksa path'e uyan en özel kuralın alan için ortak kuralı; bu kural alan için hiç denetim tanımlamıyorsa alanın denetimi Any Paths'ten kopyalanarak kurala eklenir (Existing rule will be extended). İmza isabetinde imza hedefin OWASP Exclusions listesine eklenir. Yapısal ihlalde sayısal sınır gözlenen değerin biraz üstüne genişletilir, ad izinli listeye eklenir ya da zorunlu listeden çıkarılır, metot izinli metotlara eklenir, değer deseni tümüyle kaldırılır ya da engel anahtarı kapatılır. Kara liste isabetinde kural değişmez; adres Frontend Blacklist Exclusions listesine yazılır. Header alanındaki değişiklikler her zaman Any Paths kuralına yazılır. Eşleşen kural Any Paths ise ve Rule Creation Policy saldırının alanını kapsıyorsa, isteğin path'i için yeni bir exact kural açılır (New rule will be created). Event Logs önizlemesinin Attacks sekmesindeki Learning Suggestion satırı bu kararı işlemden önce cümleyle gösterir.
Nasıl Çalışır?
Allow / Teach her saldırı için hedefi şu sırayla bulur:
| Adım | Seçim |
|---|---|
| Host grubu | İsteğin Host değeri grupların Virtual Host Patterns desenleriyle karşılaştırılır; uyan grup yoksa varsayılan grup (Bir istek hangi host group'a düşer; hiçbirine uymazsa ne olur?) |
| Değişken kuralı | Path'e uyan kurallarda o parametre için tanımlı değişken kuralı; birden çok kuralda varsa exact path, glob ya da regex, Any Paths sırasıyla ilki. Path alanındaki saldırıda değişken kuralı aranmaz, kuralın kendi path denetimi hedeflenir |
| Ortak kural | Değişken kuralı yoksa path'e uyan en özel kuralın (exact path, glob ya da regex, Any Paths sırasıyla) alan için ortak kuralı; bu kural alan için hiç denetim tanımlamıyorsa Any Paths'ten kopyalanan yeni ortak kural |
Öğrenme yeni bir değişken kuralı açmaz; değişken kuralı yalnızca zaten tanımlıysa hedeflenir (learning methods). Parametre sayısı, anahtar uzunluğu gibi alanın bütününe ait yapısal denetimler her zaman ortak kurala yazılır.
Learning Suggestion metinleri ve karşılıkları:
| Learning Suggestion metni | Değişiklik |
|---|---|
<imza> will be marked as OWASP exclusion | İmza hedefin OWASP Exclusions listesine eklenir |
<alan>: <ad> will be added | Ad izinli listeye (ör. izinli parametreler) eklenir |
<alan>: <ad> will be removed from the list | Ad zorunlu listeden çıkarılır |
<alan> is <eski> now and will be <yeni> | Sayısal sınır gözlenen değerin biraz üstüne genişletilir (ör. gözlenen 1000 için 1024, 300 için 384) |
<alan> will be updated as <yeni> | Metot izinli metotlara eklenir |
<alan> will be disabled | Değer deseni tümüyle kaldırılır ya da engel anahtarı (ör. geçersiz gövdeyi engelleme) kapatılır |
Adding <IP> as blacklist exclusion | Adres Frontend Blacklist Exclusions listesine yazılır; vService'in Frontend Blacklist listesinde varsa oradan çıkarılır (Event Logs'taki "Add to Whitelist (vService)" bir IP'yi WAF incelemesinden muaf tutar mı, yoksa yalnızca kara liste istisnası mı ekler?) |
Already learned | Değişiklik gerekmiyor; öğretme butonu pasiftir |
Değer deseni ihlalinde öneriye şu not eklenir: Learning cannot narrow a regex, only remove it. Deseni korumak için kural elle düzenlenir ("Edit Corresponding Rule" ile eşleşen kuralı log üzerinden nasıl düzenlerim?).
Rule Creation Policy, eşleşen kural Any Paths olduğunda yeni kural açılıp açılmayacağını belirler:
| Rule Creation Policy | Yeni exact kural açılan alanlar |
|---|---|
| Page Independent | Hiçbiri; değişiklik Any Paths'e yazılır |
| Data Based (varsayılan) | Query, JSON, XML, Raw, Form |
| Comprehensive | Path, Query, JSON, XML, Raw, Form |
Header hiçbir politikada yeni kural açmaz (Header'dan öğrenilen kurallar neden sayfa bazında değil, Any Paths kuralına yazılıyor?). İzinli metot ihlali ise Page Independent dışındaki politikalarda her zaman yeni exact kural açar. Yeni kural izinli metotları, path derinliğini ve path OWASP ayarlarını Any Paths'ten devralır (Rule Creation Policy'yi değiştirmek mevcut kuralları değiştirir mi?).
TR7'de Öneriyi Okumak ve Geri Almak
- Öneriyi okumak: Left Monitor Panel → WAF-Protected vServices → vService → Event Logs sekmesinde kayda tıklanır; önizlemenin Attacks sekmesinde saldırı satırı seçilir. Corresponding Rule satırı hedef kuralın path'ini (değişken kuralıysa parametre adıyla), Learning Suggestion satırı yapılacak değişikliği, altındaki not New rule will be created ya da Existing rule will be extended durumunu gösterir.
- Uygulamak: Değişiklik Are you sure? onayından sonra ayrı bir önizleme ya da dağıtım adımı olmadan uygulanır (Yanlışlıkla engellenen bir isteğe nasıl izin veririm?).
- Geri almak: Event Logs ekranında geri alma işlemi yoktur. Dashboard ya da WAF Management sekmesinin sağındaki WAF - WAAP Data Flow Panel'in Log sekmesinde, kaynağı WAF Logs olan öğrenme kaydının altındaki Revert Learning butonu kullanılır; WAF alanında tam yetki gerekir. Öğrenmenin açtığı kural o günden beri değiştirilmemişse kural silinir. Değişiklik Any Paths'e yazılmışsa geri alma o kuralı kullanan bütün path'leri etkiler (Öğrenilen bir kuralı geri alabilir miyim?).
- Kapsamı seçmek: Değişikliğin tek bir parametreye inmesi için önce o parametrenin değişken kuralı eklenir (Bir false positive'i yalnızca tek bir parametre için mi, tüm sayfa için mi düzeltmeliyim?).
Sık Karıştırılan Noktalar
- "Allow imzayı kapatır." İmza yalnızca hedef kuralın alanında istisna olur; diğer alanlarda ve sayfalarda taranmaya devam eder.
- "Sayısal sınır gözlenen değere eşitlenir." Sınır gözlenen değerin biraz üstüne yuvarlanarak pay bırakılır.
- "Header false positive'i yalnızca o sayfa için öğretilir." Header değişiklikleri her zaman Any Paths kuralına, yani host grubunun bütününe yazılır.
- "Corresponding Rule Any Paths ise değişiklik bütün siteye yazılır." Politika alanı kapsıyorsa isteğin path'i için yeni exact kural açılır; öneri satırının altındaki not bunu gösterir.
Dokümantasyonda nasıl yapılır
