WAF Rules (Page Types)
Page Types, bir host grubunun WAF kurallarının listelendiği ve yönetildiği ekrandır. Her sayfa tipi; bir path deseni ile o path'e gelen isteklere uygulanacak denetim ayarlarının (izin verilen HTTP metotları, path uzunluk ve derinlik kısıtları, OWASP taraması ve alan denetimleri) birleşimidir.
Sayfa tipi listesi, WAF'ın korunan uygulama hakkında bildiği her şeydir: hangi adreslerin var olduğu, her adresin hangi metotlarla çağrıldığı, hangi parametreleri taşıdığı ve bu parametrelerin hangi sınırlar içinde kaldığı bu listede tanımlıdır. Bir istek geldiğinde WAF önce isteğin path'ini bu listeyle eşleştirir; istek, eşleşen kuralın yapılandırmasıyla denetlenir.
Sayfa tipi aslında bir WAF kuralıdır
Denetlenen her ihlal, isteğin saldırı puanına eklenir. Host grubu Blocking modunda çalışıyorsa ve toplam puan engelleme eşiğine ulaşırsa istek engellenir; aksi hâlde istek Kurum Servisine iletilir. Yani gelen bir isteğin engellenip engellenmeyeceğine, o isteğe eşleşen sayfa tipine bakılarak karar verilir.
Kurallar Nereden Gelir?
Sayfa tipleri üç kaynaktan üretilir:
| Kaynak | Nasıl çalışır |
|---|---|
| Öğrenme analizi | Analysis & Learning, host grubunun geçmiş trafiğini inceleyip sayfa tipi ve kural önerileri üretir. Kural tabanının büyük bölümü normalde bu yolla oluşur. |
| Log üzerinden öğretme | Event Logs ekranında bir istek Allow veya Teach ile öğretildiğinde, öğrenilen değer o isteğin path'ine eşleşen kurala yazılır. Bu kural çoğu durumda Any Paths'tir; öğrenmenin ayrı bir sayfa tipi olarak yazılıp yazılmayacağını vService'in Rule Creation Policy ayarı belirler. Header kapsamlı öğrenmeler ise her koşulda paylaşılan Any Paths kuralına işlenir. |
| Elle tanımlama | Add ile kural doğrudan yazılır; ayrıca Import ve Import (OpenAPI) ile dosyadan üretilir. |
Listedeki her kural, kaynağından bağımsız olarak aynı ekranlarla düzenlenir ve silinir.
Ekrana Erişim
- Left Monitor Panel açılır.
- Sol üstteki kategori sekmelerinden WAF-Protected vServices seçilir.
- TR7 üzerinde tanımlı, WAF koruması etkin vService'ler listelenir.
- İzlenecek vService'e tıklanır; ekran, vService'in adını taşıyan Dashboard sekmesiyle açılır.
- Açılan ekranda WAF Management sekmesine tıklanır.
- Mod kartının altındaki N Page Types satırına tıklanır. Satırın tamamı bağlantıdır: baştaki kalem ikonu da, yanındaki metin de aynı ekranı açar. Sayaç, Any Paths kuralını da içerir.
Page Types sekmesi, başlığında ilgili host grubunun adıyla açılır (varsayılan grup için Default Host Group). Her host grubu kendi sayfa tipi listesini ayrı tutar; ekran her zaman tek bir host grubunun kurallarını gösterir.
Page Types Listeleme Ekranı
WAF Management → N Page Types yolu izlenerek seçili host grubunun sayfa tipi listesine ulaşılır. Bu ekran üzerinden sayfa tipi ekleme, düzenleme, silme, birleştirme ve kural setini dışa/içe aktarma işlemleri yapılır.
Page Types Listeleme Ekranı
Tablo varsayılan olarak şu kolonlarla açılır:
| Kolon | Açıklama |
|---|---|
| Path | Sayfa tipinin path deseni. Glob desenli path'ler vurgu rengiyle, catch-all kural italik Any Paths etiketiyle gösterilir. |
| Check Fields | Kurala tanımlı alan denetimleri (ör. Form, Header, JSON, Query, Raw, Xml). |
Varsayılan olarak gizlenen kolon bulunmaz.
İtalik yazılan Any Paths satırı grubun hazır (catch-all) kuralıdır: hiçbir sayfa tipine eşleşmeyen tüm istekleri karşılar ve varsayılan yapılandırmasında Form, Header, Json, Query, Raw ve Xml alan denetimleriyle gelir. Path bu listede yer almaz; path denetimleri ayrı bir alan bölümü değil, kuralın kendi üzerindeki ayarlardır. Kural listeden kaldırılabilir ancak yok olmaz: Delete işlemi Any Paths için silme değil varsayılana sıfırlama anlamına gelir. Silme ve yeniden oluşturma tek bir işlemde gerçekleştiği için satır listeden bir an bile kaybolmaz, yalnızca içeriği varsayılana döner. Kuralın ortak (common) denetimleri ise hiçbir koşulda silinemez.
Sıfırlama elle eklenen denetimleri götürür
Sıfırlamayla birlikte varsayılan path ayarları, altı ortak alan denetimi ve önerilen başlık argüman kuralları geri gelir; kullanıcının Any Paths kuralına elle eklediği argüman denetimleri kaybolur. Ayrıca sıfırlama her zaman varsayılan şablonu kullanır: vService sıkı bir koruma düzeyinde çalışıyor olsa bile kural gevşek şablonla geri oluşturulur.
Araç çubuğundaki öğeler soldan sağa aşağıdaki sırayla yer alır; son iki öğe (Page Information ve Page Size) tablonun altındaki bilgi şeridinde bulunur.
Columns
Tabloda hangi kolonların gösterileceği seçilir. Aynı panelde kolonlar sürüklenerek yeniden sıralanır ve kolon başına hizalama seçilir; Fit rows to the page butonuyla satır yüksekliği sayfaya sığdırılır, Reset butonuyla kolon düzeni varsayılana alınır. Düzen kullanıcı bazında saklanır.
Add
Add butonuna tıklanarak gruba elle yeni bir sayfa tipi eklenir; ayrıntı Add sayfasındadır.
Edit
Edit butonuna tıklanarak seçili sayfa tipinin ayarları değiştirilir; form Add ile birebir aynıdır. Buton yalnızca tek bir sayfa tipi seçildiğinde etkinleşir; ayrıntı Edit sayfasındadır.
Delete
Bir veya birden fazla sayfa tipi seçilip Delete butonuna tıklandığında ilgili kurallar Check Fields yapılandırmalarıyla birlikte kaldırılır; Any Paths için işlem silme değil varsayılana sıfırlamadır. Ayrıntı Delete sayfasındadır.
Merge
Seçilen iki veya daha fazla kural Merge butonuyla tek bir kuralda birleştirilir; benzer exact path kurallarını tek glob kurala katlamak için kullanılır. Seçimde Any Paths varsa buton etkinleşmez. Ayrıntı Merge sayfasındadır.
Export
Export butonuna tıklanarak grubun tüm sayfa tipleri tek bir JSON dosyası olarak indirilir; ayrıntı Export sayfasındadır.
Import
Import butonuna tıklanarak dışa aktarılmış JSON dosyası gruba geri yüklenir; grubun kural seti tümüyle değiştirilir. Ayrıntı Import sayfasındadır.
Export (OpenAPI)
Export (OpenAPI) butonuna tıklanarak kural seti standart OpenAPI 3.0 belgesi olarak indirilir; ayrıntı Export (OpenAPI) sayfasındadır.
Import (OpenAPI)
Import (OpenAPI) butonuna tıklanarak OpenAPI veya Swagger tanım dosyasından sayfa tipi üretilir ve mevcut kurallarla birleştirilir. Ayrıntı Import (OpenAPI) sayfasındadır.
Export Table
Export Table butonuna tıklanarak tablo Excel, CSV veya PDF olarak dışa aktarılır. Açılan pencerede Filename, Format ve Data Source ile dışa aktarılacak Columns belirlenir; kalan alanlar biçime göre görüntülenir: CSV'de CSV Separator, Excel'de Excel Sheet Name, PDF'te Page Orientation ve Page Size. Dosyaya yalnızca tabloda görünen kolonlar yazılır; kural yapılandırmasını içermez ve Import ile geri yüklenemez.
Search
Tablodaki tüm bilgilerde arama yapmak için kullanılır.
RegExp Search
Tabloda bulunan tüm bilgilerde düzenli ifade (RegExp) ile arama yapmak için kullanılır.
Column Based Search
Tabloda bulunan bilgilerde sütun bazlı arama yapmak için kullanılır.
Page Information
Listede görüntülenen sayfa tipi sayısına ait bilgiler yer alır: Showing N-M of T records ve seçili sayfa tipi sayısı (N selected, seçim yokken Nothing selected).
Page Size
Sayfada görüntülenecek maksimum sayfa tipi sayısı seçilir. Varsayılan 100; seçenekler 5, 10, 20, 50, 100, 200, 500 ve All. Seçim saklanmaz.
Import ile Import (OpenAPI) aynı şey değildir
Import, dosyadaki kural setini grubun mevcut kurallarının yerine koyar. Import (OpenAPI) ise belgedeki path'leri mevcut kurallarla birleştirir: belgede geçen bir path'in kuralı bütünüyle değiştirilir, belgede geçmeyen kurallar olduğu gibi kalır. İki işlemin karıştırılması, kural setinin beklenmedik biçimde kaybedilmesine yol açar.
Her iki işlem de yalnızca genel bir "Are you sure?" onayı sorar; tam değiştirme konusunda ayrıca uyarmaz.
TR7'nin kendi ürettiği OpenAPI belgesi Any Paths kuralını da taşır; bu belge içe aktarıldığında birleştirme modunda bile grubun Any Paths yapılandırması belgedekiyle değiştirilir. Üçüncü taraf belgelerde Any Paths kuralına dokunulmaz.
Sağ Tık Menüsü
Bir satıra sağ tıklandığında, başlığında kuralın path'i (catch-all kuralda Any Paths) bulunan bir menü açılır. İşlemler yalnızca sağ tıklanan kurala uygulanır; listede yapılmış seçim menüyü etkilemez.
| İşlem | Ne yapar |
|---|---|
| Edit | Kuralın düzenleme formunu açar; araç çubuğundaki Edit ile aynı formdur. |
| Delete | Sağ tıklanan kuralı siler (Any Paths için varsayılana sıfırlar); araç çubuğundaki silme ile aynı onay sorusu görüntülenir. |
Seçilen Sayfa Tipinin Önizlemesi
Listede bir satıra tıklandığında ekranın sağında kuralın detay paneli açılır. Başlıkta kuralın path'i (catch-all kuralda Any Paths etiketi), altında host grubunun adı bulunur.
| İşlem | Ne yapar |
|---|---|
| Kopyalama | Kuralın path'ini panoya kopyalar. |
| Edit | Araç çubuğundaki Edit işleminin aynısını yapar. |
| Delete | Araç çubuğundaki Delete işleminin aynısını yapar. |
Panelde yedi sekme bulunur; sekmelerin içeriği ve alan denetimleri Path Check Fields sayfasında anlatılmıştır:
İzin verilen metotlar, path uzunluğu ve derinliği, path imza taraması.
Sorgu dizesi denetimleri.
İstek başlığı denetimleri.
JSON gövde denetimleri.
XML gövde denetimleri.
Form gövdesi ve dosya yükleme denetimleri.
Ham gövde denetimleri.
Çalışma Anı: Kural Eşleşmesi
Bir istek geldiğinde path'i, host grubunun sayfa tipleriyle şu öncelik sırasında eşleştirilir:
Devralma, denetim bölümü ve argüman düzeyindedir: bir kuralın hiç tanımlamadığı alan denetimlerini ve tanımlamadığı tek tek argümanları, path'e uyan glob kural veya Any Paths kuralı tamamlar. Kuralın kendi path ayarları ise olduğu gibi uygulanır ve o path için Any Paths'in path ayarlarının yerine geçer.
Exact, Glob ve Any Paths arasındaki öncelik kuralların listedeki yerinden bağımsızdır. Buna karşılık aynı path'e birden çok glob kuralı uyuyorsa ve bunlar aynı denetim bölümünü ya da aynı argümanı tanımlıyorsa, önce tanımlanmış olan kural kazanır; sonrakiler yalnızca ilk kuralın tanımlamadığı bölümleri ve argümanları tamamlar.
