Uygulama sürüm yayın sürecime WAF'ı nasıl dahil etmeliyim?
Kısa cevap
WAF kural seti uygulamanın beklenen istek biçimini tuttuğu için her sürüm WAF için de bir değişikliktir; yayın sürecine üç aşamada adım eklenir (önerilen yaşam döngüsü). Yayından önce: host grubunun kural seti Page Types ekranındaki Export ile yedeklenir; API tanımı değiştiyse yeni endpoint'ler Import (OpenAPI) ile eklenir; test ekibi yeni sürümü Teacher kimliğiyle (TR7-LEARN header ya da cookie değeri veya Teacher IP) gezer ya da Conditional Learning kimliğiyle gezip ardından Analysis & Learning, Combine with Old Rules seçilerek çalıştırılır. Yayın sırasında: büyük değişikliklerde ilgili host grubunun WAF Mode değeri geçici olarak Monitor Mode yapılır; bu adım WEB-CLI'daki waf host-groups update komutuyla yayın betiğine bağlanabilir. Yayından sonra: Event Logs'ta yeni path'lere düşen false positive'ler Allow / Teach ile öğretilir, yanlış bir öğrenme vService'in Log sekmesindeki Revert Learning ile geri alınır ve kayıtlar temizlenince grup yeniden Blocking Mode'a alınır. Teacher ve Conditional learning yalnızca Monitor ya da Blocking modundaki gruplarda anlamlıdır; Analysis & Learning uygulaması geri alınamaz, bu yüzden Export yedeği her zaman ilk adımdır.
Sorun: Her Sürümden Sonra Yeni Sayfalar Engelleniyor
Kural seti bir önceki sürümün sayfalarını, parametrelerini ve değer sınırlarını tanır. Yeni bir ekran, endpoint ya da parametre eklendiğinde bu istekler hiçbir sayfa tipine uymadığı için Any paths kuralına düşer ya da öğrenilmiş sınırlara takılır; host grubu Blocking modundaysa yayının hemen ardından kullanıcılar engellenir. Belirtinin teşhisi için: Yeni sürüm yayınladıktan sonra yeni sayfalar engelleniyor; ne yapmalıyım?
Süreçteki Yeri
| Aşama | Adım | Yöntem |
|---|---|---|
| Yayından önce | Kural setini yedekle | Yöntem 1, 1–2. adımlar |
| Yayından önce | API tanımı değiştiyse yeni endpoint'leri ekle | Yöntem 2 |
| Yayından önce | Test ekibinin gezintisini öğret | Teacher ile Yöntem 1 ya da Conditional learning ve analizle Yöntem 3 |
| Yayın sırasında | Host grubunu geçici olarak Monitor mode'a al | Yöntem 4 ya da WEB-CLI ile Yöntem 5 |
| Yayından sonra | False positive'leri öğret, gerekirse geri al, Blocking mode'a dön | Yöntem 6 |
Yeni bir alan adı yayına giriyorsa o alan adı için ayrı bir host grubu Learning mode ile açılır ve kendi kural setini öğrenir: Host Group nasıl eklenir; Virtual Host Patterns alanına ne yazılır?
Çözüm: Altı Yöntem
Yöntemler birbirinin alternatifi değildir; yayının aşamasına göre birlikte kullanılır. Test gezintisini öğretmek için Teacher (Yöntem 1) ya da Conditional learning (Yöntem 3) seçilir: ikisinin farkı Conditional Learning ile Teacher arasındaki fark nedir; hangisini ne zaman kullanmalıyım? sayfasındadır.
| Durumunuz | Uygun yöntem |
|---|---|
| Test ekibi yeni sürümü gezecek; tetiklenen false positive'ler kendiliğinden öğretilsin | Yöntem 1: Teacher |
| Yeni sürümün OpenAPI tanımı elimde | Yöntem 2: Import (OpenAPI) |
| Yeni ekranlar için sayfa tipleri gezintiden üretilsin | Yöntem 3: Conditional learning + Analysis & Learning |
| Yayın elle yapılıyor; geçiş süresince engelleme istemiyorum | Yöntem 4: Arayüzden geçici Monitor mode |
| Yayın bir betik ya da pipeline ile yapılıyor | Yöntem 5: WEB-CLI ile geçici Monitor mode |
| Yayın tamamlandı; kayıtlarda false positive var | Yöntem 6: Event Logs → Allow / Teach |
Yöntem 1: Teacher Önerilen
- Nasıl çalışırTeacher kimliğini taşıyan istekler puanları ne olursa olsun engellenmez (taraması süre sınırını aşan istek de geçirilir); tetikledikleri ihlaller Teaching Frequency ile seçilen aralıkta kural setine öğretilir. Böylece test ekibi yeni sürümü gezerken kural seti güncellenir, diğer kullanıcılar için koruma sürer.
- Nerede açılır Left Monitor Panel → WAF-Protected vServices → vService → WAF Management → Learning Methods kartı
- Gereksinim WAF alanında değiştirme yetkisi · host grubu Monitor ya da Blocking modunda (Learning modundaki grupta ve Conditional learning kimliği taşıyan istekte öğrenme kaydı önceliklidir, Teacher kaydı oluşmaz)
- vService tipi HTTP
- Kimlik Header ya da cookie adı her zaman
TR7-LEARN'dür; formdaki alana değer yazılır. Teacher IP alanına boşlukla ayrılmış IPv4 adresleri ya da blokları girilir.
Adım adım yapılandırma
WAF Management sekmesinde host grubunun mod kartındaki N page types bağlantısına tıklanır; grubun Page Types sekmesi açılır.
Araç çubuğundaki Export tıklanır; grubun kural seti JSON dosyası olarak iner. Birden çok host grubu varsa her grup için tekrarlanır (WAF kurallarımı yedekleyebilir miyim?).
WAF Management sekmesinde Learning Methods kartının kalem ikonuna (Edit) tıklanır (Learning methods Edit ekranı).
Teacher anahtarı açılır; Teacher Header, Teacher Cookie ya da Teacher IP alanına test ekibinin kimliği girilir. Teaching frequency listesinden 1 minutes, 2 minutes, 5 minutes, 30 minutes ya da 1 hours seçilir; varsayılan değeri None'dır ve None seçiliyken Teacher kayıtları kurala dönüşmez (Teacher Header'ının veya cookie'sinin adı ne olmalı (TR7-LEARN); Conditional Learning için hangi ad kullanılır (TR7-ANALYZE)?).
Pencerenin altındaki Edit butonuna tıklanır; ayar ayrı bir dağıtım adımı olmadan uygulanır. Cluster kurulumunda değişiklik varsayılan auto-sync ile eş cihaza da gönderilir; Manual Sync Mode açıksa Synchronize ile gönderilir. Test ekibi yeni sürümü, örneğin her isteğe TR7-LEARN: <değer> header'ını ekleyerek gezer. Yayın bitince aynı pencerede Teacher kapatılıp Edit ile kaydedilir.
Doğrulama
vService'in Teacher Tracking sekmesinde görünüm Teacher history seçilir.
Gezilen yeni path'ler için öğrenme satırlarıYöntem 2: Import (OpenAPI)
- Nasıl çalışır OpenAPI 3.0 ya da Swagger 2.0 dosyasındaki her path bir sayfa tipine dönüştürülür ve mevcut kural setiyle birleştirilir: belgede olmayan kurallara dokunulmaz, belgedeki path'le aynı path'li kural belgeden türetilen kuralla tümüyle değiştirilir (belgenin kurallara dönüştürülmesi).
- Nerede açılırWAF Management → host grubunun mod kartı → N page types → Import (OpenAPI)
- Gereksinim Yeni sürümün
.json,.yamlya da.ymluzantılı API tanımı; WAF alanında değiştirme yetkisi - vService tipi HTTP
Adım adım yapılandırma
Yöntem 1'in 1–2. adımlarıyla grubun kural seti Export edilir. Aynı path'li kurallardaki elle yapılmış ve öğrenilmiş ayarlar içe aktarmada değişeceğinden geri dönüş yolu bu dosyadır.
Page types araç çubuğunda Import (OpenAPI) tıklanır ve açılan dosya seçiciden tanım dosyası seçilir.
"Are you sure?" sorusu Yes ile onaylanır. İşlem sonunda kaç path'in uygulandığını ve varsa dönüştürme uyarılarını özetleyen bir bildirim görünür; kurallar ayrı bir dağıtım adımı olmadan uygulanır ve cluster'da Yöntem 1'deki gibi eşitlenir. Ayrıntı: OpenAPI tanımımdan API koruma kurallarını otomatik oluşturabilir miyim?
Doğrulama
Page types listesinde yeni endpoint'ler aranır; {id} gibi şablon parametreli path'ler * globuyla görünür.
OpenAPI import: N path appliedYöntem 3: Conditional Learning + Analysis & Learning
- Nasıl çalışırConditional Learning kimliğini taşıyan istekler, grup Blocking modunda olsa bile engellenmeden öğrenme kaydına yazılır (taraması süre sınırını aşan istek de engellenmez ama öğrenme kaydına yazılmaz). Gezinti bittikten sonra Analysis & Learning bu kayıtlardan sayfa tipi üretir; Combine with old rules seçildiğinde mevcut kurallar korunur, yeni sayfalar eklenir (Analizde "Create New Rules" ile "Combine with Old Rules" arasındaki fark nedir?).
- Nerede açılırWAF Management → Learning Methods kartı; host grubunun mod kartındaki Analysis & Learning satırı
- Gereksinim WAF alanında değiştirme yetkisi. Analiz uygulaması Revert learning ile geri alınamaz; Export yedeği önceden alınmış olmalıdır.
- vService tipi HTTP
- Kimlik Header ya da cookie adı her zaman
TR7-ANALYZE'dir; formdaki alana değer yazılır.
Adım adım yapılandırma
Yöntem 1'in 1–2. adımlarıyla grubun kural seti Export edilir.
Learning Methods kartının kalem ikonuna (Edit) tıklanır.
Conditional Learning anahtarı açılır; Conditional Learning Header, Conditional Learning Cookie ya da Conditional Learning IP alanına test ekibinin kimliği girilir (Blocking modundayken belirli trafiği yine de öğrenmeye devam ettirebilir miyim (Conditional Learning)?).
Pencerenin altındaki Edit butonuna tıklanır; ayar ayrı bir dağıtım adımı olmadan uygulanır ve cluster'da Yöntem 1'deki gibi eşitlenir. Test ekibi yeni sürümü bu kimlikle gezer; gezinti zamanı not edilir.
Host grubunun mod kartındaki Analysis & Learning satırına tıklanır; New Analyze penceresi açılır (yeni analiz).
Analyze Date gezinti dönemini kapsayacak şekilde seçilir; ilk açılışta son 3 ay gelir, sonraki açılışlarda o vService için son seçilen aralık hatırlanır. Advanced altındaki Ignore Old Rules anahtarı Combine with old rules konumuna getirilir; pencere her açılışta Create new rules konumunda gelir ve bu seçenek mevcut kural setinin yerine yenisini kurar. Rule Creating Mode mevcut politikayla aynı bırakılır; analiz uygulandığında bu değer Learning methods'daki Rule Creation Policy ayarına da yazılır.
Start Analyzing tıklanır; mod kartında ilerleme çubuğu görünür. Analiz bitince satırda New rozeti çıkar.
New rozetine tıklanır; analiz sonucunun önizlemesi açılır.
Önizlemedeki Edit tıklanır; Analyze Page Types ekranında önerilen sayfa tipleri incelenip daraltılır (Analysis & Learning ile geçmiş trafikten nasıl kural üretirim?). Analiz sonucunda çıkan path'ler kontrol edilir; listede yalnızca WAF kuralı oluşturulacak path'ler kalmalıdır. Bilinmeyen ya da şüpheli path'lerin ağaçta seçilip Exclude from Analysis ile analizden çıkarılması önerilir; bu path'ler Excluded paths listesine eklenir ve kural üretmez.
Apply tıklanır ve "Are you sure?" sorusu Yes ile onaylanır; kurallar ayrı bir dağıtım adımı olmadan uygulanır ve cluster'da Yöntem 1'deki gibi eşitlenir. Uygulama, analizin başlatıldığı andaki kural setini temel alır; analiz başladıktan sonra kurallarda elle ya da öğrenmeyle yapılan değişiklikler uygulamada kaybolur. İş bitince Conditional learning kimlik alanları anahtar açıkken boşaltılıp Edit ile kaydedilir, anahtar ancak ondan sonra kapatılıp yeniden kaydedilir.
Doğrulama
Host grubunun mod kartındaki sayfa tipi sayısına ve Analysis & Learning satırına bakılır.
Sayfa tipi sayısı arttı; satırda Applied rozetiYöntem 4: Arayüzden Geçici Monitor Mode
- Nasıl çalışırMonitor Mode'daki host grubunda eşiği aşan istekler engellenmez, Event Logs'a yazılmaya devam eder. Yayın süresince yeni sürümün tetiklediği ihlaller kullanıcıyı etkilemeden görülür.
- Nerede açılırWAF Management → host grubunun mod kartı → başlık şeridindeki Edit
- Gereksinim WAF alanında değiştirme yetkisi
- vService tipi HTTP
Adım adım yapılandırma
WAF Management sekmesinde yayından etkilenecek host grubunun mod kartının başlık şeridindeki Edit yazısına tıklanır (WAF mode Edit ekranı).
WAF Mode alanında Monitor mode seçilir.
Pencerenin altındaki Edit butonuna tıklanır; mod ayrı bir dağıtım adımı olmadan uygulanır ve cluster'da Yöntem 1'deki gibi eşitlenir. Yayın tamamlanıp Event Logs'taki kayıtlar Yöntem 6 ile temizlenince aynı adımlarla Blocking Mode seçilir (Learning modundan Monitor'a, Monitor'dan Blocking'e ne zaman geçmeliyim?).
Doğrulama
Mod kartının başlığına ve Event Logs'taki yeni kayıtların Action değerine bakılır.
Monitor mode · Not blocked — Monitor modeYöntem 5: WEB-CLI ile Geçici Monitor Mode
- Nasıl çalışır Yayın betiği yayından önce host grubunu Monitor moduna, yayından sonra Blocking moduna alır (waf host-groups örnekleri).
- Nerede açılırWEB-CLI ya da aynı CLI'a SSH ile bağlantı
- Gereksinim WAF alanında değiştirme yetkisi; betik SSH ile bağlanacaksa kullanıcıda Access CLI over SSH açık
- vService tipi HTTP
Adım adım yapılandırma
vService'in host grupları ve kimlikleri listelenir:
waf host-groups list poolId <vService>waf host-groups update poolId <vService> id <grup> --mode monitorEvent Logs'taki kayıtlar Yöntem 6 ile incelendikten sonra:
waf host-groups update poolId <vService> id <grup> --mode blockingMod değişikliği ayrı bir dağıtım adımı olmadan uygulanır ve cluster'da Yöntem 1'deki gibi eşitlenir. Birden çok vService'in grupları tek komutla değiştirilecekse waf host-groups update-many kullanılır: Birden fazla vService'in WAF ayarını veya host group modunu tek seferde değiştirebilir miyim?
Doğrulama
Grubun kaydı görüntülenir.
Komut: waf host-groups show poolId <vService> <grup>
mode değeri monitor; yayından sonra blockingYöntem 6: Event Logs → Allow / Teach
- Nasıl çalışır Yayından sonra yeni path'lerde oluşan kayıtlar seçilip Allow / Teach ile öğretilir; öneri yeni sayfa kuralı açar ya da mevcut kuralı genişletir. Yanlış bir öğrenme vService'in Log sekmesindeki Revert Learning ile geri alınır.
- Nerede açılır Left Monitor Panel → WAF-Protected vServices → vService → Event Logs sekmesi
- Gereksinim WAF alanında değiştirme yetkisi; Revert learning için WAF alanında tam yetki
- vService tipi HTTP
Adım adım yapılandırma
Event Logs sekmesinde sunucu filtresinin Date Range alanı yayın anından itibaren seçilir ve Save & Get Logs tıklanır.
Filtre şeridindeki Path sekmesinde yeni sürümün path'leri seçilir. Saldırı adı ve Attacks sekmesindeki Learning Suggestion satırıyla kaydın gerçekten false positive olduğu doğrulanır.
False positive olduğu doğrulanan satırlar seçilir.
Araç çubuğundaki Allow / Teach butonuna tıklanır; buton seçime göre Allow, Teach ya da Allow / Teach adını alır.
"Are you sure?" sorusu Yes ile onaylanır; kural değişiklikleri doğrudan uygulanır, cluster'da Yöntem 1'deki gibi eşitlenir ve vService'in Log sekmesine öğrenme kaydı düşer (Yanlışlıkla engellenen bir isteğe nasıl izin veririm?). Yanlış bir öğrenme fark edilirse Dashboard sekmesinin sağ panelindeki Log sekmesinde kaydın altındaki Revert Learning kullanılır (Öğrenilen bir kuralı geri alabilir miyim?).
Doğrulama
Öğretilen satırların Attacks kolonuna bakılır; aynı istek tekrarlanıp yeni kayıt oluşup oluşmadığı kontrol edilir.
İlk sayı düşer; bütün imzalar öğretildiyse satır yeşilSık Yapılan Hatalar
Analiz uygulaması geri alınamaz
Analysis & Learning sonucunun uygulanması Revert learning bağlantısı taşımaz. Analizden ve Import (OpenAPI)'dan önce alınan Export dosyası tek geri dönüş yoludur; dosya Page types → Import ile yüklenir ve grubun kural setinin tamamının yerine geçer (Import yaptığımda mevcut kurallar ne olur (tam değiştirme)?).
- Yayından sonra bütün siteyi Learning moduna almak. Learning modunda kural kaynaklı engelleme durur ve Event Logs kaydı üretilmez; yeni sayfalar için yukarıdaki yöntemler yeterlidir (Blocking'e geçtikten sonra uygulama değişirse Learning moduna geri dönmeli miyim?).
- Analizi varsayılan Create new rules ile çalıştırmak. Bu seçenek mevcut kural setinin yerine yenisini kurar; sürüm güncellemesinde Combine with Old Rules seçilir.
- Teacher'ı Learning modundaki grupta kullanmak. Learning modunda öğrenme kaydı önceliklidir; Teacher kaydı oluşmaz ve Teacher history boş kalır.
- Teaching frequency'yi None bırakmak. Teacher kimliği tanınır ama kayıtlar kurala dönüşmez (Teacher trafiği ne kadar sürede kurala dönüşür; tek bir istek yeterli mi?).
- Teacher ya da Conditional learning kimliğini açık unutmak. Kimliği taşıyan istekler puanları ne olursa olsun engellenmez; Conditional learning kimliği anahtar kapatılsa bile alanlar dolu kaldıkça tanınmaya devam eder; kimlik bilen herkes korumayı aşabilir. Yayın bitince Teacher anahtarı kapatılır; Conditional learning kimlik alanları anahtar açıkken boşaltılıp kaydedilir, anahtar ancak ondan sonra kapatılır.
- Yayın sonrası artışa plansız tepki vermek. Yayından sonra fark edilen false positive artışının yönetimi: Uygulama güncellemesinden sonra false positive'ler arttı; ne yapmalıyım?
Dokümantasyonda nasıl yapılır
İlgili sorular
- Yeni sürüm yayınladıktan sonra yeni sayfalar engelleniyor; ne yapmalıyım?
- Uygulama güncellemesinden sonra false positive'ler arttı; ne yapmalıyım?
- Conditional Learning ile Teacher arasındaki fark nedir; hangisini ne zaman kullanmalıyım?
- Test ortamında hazırladığım WAF kurallarını canlıya nasıl taşırım?
