Web Uygulaması Güvenlik Duvarı dışlama listeleri

Azure Uygulaması lication Gateway Web Uygulaması Güvenlik Duvarı (WAF), web uygulamaları için koruma sağlar. Bu makalede WAF dışlama listelerinin yapılandırması açıklanmaktadır. Bu ayarlar, Application Gateway'inizle ilişkili WAF ilkesinde bulunur. WAF ilkeleri hakkında daha fazla bilgi edinmek için bkz. Azure Uygulaması lication Gateway üzerinde Azure Web Uygulaması Güvenlik Duvarı ve Application Gateway için Web Uygulaması Güvenlik Duvarı ilkeleri oluşturma.

Bazen WAF, uygulamanız için izin vermek istediğiniz bir isteği engelleyebilir. WAF dışlama listeleri, bir WAF değerlendirmesinden belirli istek özniteliklerini atlamanıza olanak tanır. İsteğin geri kalanı normal olarak değerlendirilir.

Örneğin, Active Directory kimlik doğrulaması için kullanılan belirteçleri ekler. bir istek üst bilgisinde kullanıldığında, bu belirteçler WAF kurallarından hatalı pozitif algılama tetikleyebilecek özel karakterler içerebilir. Üst bilgiyi bir dışlama listesine ekleyerek WAF'yi üst bilgiyi yoksayacak şekilde yapılandırabilirsiniz, ancak WAF yine de isteğin geri kalanını değerlendirir.

Dışlamaları, belirli WAF kuralları değerlendirildiğinde uygulanacak veya tüm WAF kurallarının değerlendirmesine genel olarak uygulanacak şekilde yapılandırabilirsiniz. Dışlama kuralları tüm web uygulamanız için geçerlidir.

Dışlanması gereken istek özniteliklerini tanımlama

WAF dışlama yapılandırırken, isteğin WAF değerlendirmesinin dışında tutulması gereken özniteliklerini belirtmeniz gerekir. Aşağıdaki istek öznitelikleri için WAF dışlaması yapılandırabilirsiniz:

  • İstek üst bilgileri
  • Tanımlama bilgileri isteme
  • İstek öznitelik adı (args) bir dışlama öğesi olarak eklenebilir, örneğin:
    • Form alanı adı
    • JSON varlığı
    • URL sorgu dizesi birleştirmeleri

Tam istek üst bilgisi, gövde, tanımlama bilgisi veya sorgu dizesi öznitelik eşleşmesi belirtebilirsiniz. Alternatif olarak, kısmi eşleşmeler de belirtebilirsiniz. Dışlama yapılandırmak için aşağıdaki işleçleri kullanın:

  • Eşittir: Bu işleç tam eşleşme için kullanılır. Örneğin bearerToken adlı bir üst bilgi seçmek için, seçici bearerToken olarak ayarlanmış equals işlecini kullanın.
  • Şununla başlar: Bu işleç, belirtilen seçici değeriyle başlayan tüm alanlarla eşleşir.
  • Şununla biter: Bu işleç, belirtilen seçici değeriyle biten tüm istek alanlarıyla eşleşir.
  • İçerir: Bu işleç, belirtilen seçici değerini içeren tüm istek alanlarıyla eşleşir.
  • Herhangi birine eşittir: Bu işleç tüm istek alanlarıyla eşleşir. * seçici değeri olacaktır. Örneğin, belirli bir eşleşme değişkeninin tam değerlerini bilmediğiniz ancak istek trafiğinin kural değerlendirmesinin dışında tutulduğundan emin olmak istediğinizde bu işleci kullanabilirsiniz.

Dışlamaları işlerken WAF altyapısı aşağıdaki tabloya göre büyük/küçük harfe duyarlı/duyarsız bir eşleşme gerçekleştirir. Ayrıca, seçiciler olarak normal ifadelere izin verilmez ve XML istek gövdeleri desteklenmez.

İstek Gövdesi Bölümü CRS 3.1 ve Öncesi CRS 3.2 ve Üzeri
Üstbilgi* Büyük/Küçük Harfe Duyarsız Büyük/Küçük Harfe Duyarsız
Çerez* Büyük/Küçük Harfe Duyarsız Büyük/Küçük Harfe Duyarlı
Sorgu Dizesi* Büyük/Küçük Harfe Duyarsız Büyük/Küçük Harfe Duyarlı
URL Ile Kodlanmış Gövde Büyük/Küçük Harfe Duyarsız Büyük/Küçük Harfe Duyarlı
JSON Gövdesi Büyük/Küçük Harfe Duyarsız Büyük/Küçük Harfe Duyarlı
XML Gövdesi Desteklenmiyor Desteklenmiyor
Çok Parçalı Gövde Büyük/Küçük Harfe Duyarsız Büyük/Küçük Harfe Duyarlı

*Uygulamanıza bağlı olarak üst bilgilerinizin, tanımlama bilgilerinizin ve sorgu birleştirmelerinizin adları ve değerleri büyük/küçük harfe duyarlı veya duyarsız olabilir.

Dekont

Daha fazla bilgi ve sorun giderme yardımı için bkz . WAF sorun giderme.

Anahtarlara ve değerlere göre istek öznitelikleri

Bir dışlama yapılandırırken, anahtarı mı yoksa değeri WAF değerlendirmesinin dışında mı tutmak istediğinizi belirlemeniz gerekir.

Örneğin, isteklerinizin şu üst bilgiyi içerdiğini varsayalım:

My-Header: 1=1

Üst bilginin (1=1) değeri WAF tarafından bir saldırı olarak algılanabilir. Ancak bunun senaryonuz için geçerli bir değer olduğunu biliyorsanız, üst bilgi değeri için bir dışlama yapılandırabilirsiniz. Bunu yapmak için RequestHeaderValues match değişkenini, işlecini ve seçiciyi (My-Header ) kullanırsınız. Bu yapılandırma, üst bilgisi My-Headeriçin tüm değerlerin değerlendirilmesini durdurur.

Dekont

Anahtar ve değerlere göre istek öznitelikleri yalnızca CRS 3.2 veya daha yeni ve Bot Manager 1.0 veya daha yeni sürümlerde kullanılabilir.

Adlara göre istek öznitelikleri, değerlere göre istek öznitelikleriyle aynı şekilde çalışır ve CRS 3.1 ve önceki sürümlerle geriye dönük uyumluluk için eklenir. İstek özniteliklerini adlara göre öznitelikler yerine değerlere göre kullanmanızı öneririz. Örneğin, RequestHeaderNames yerine RequestHeaderValues kullanın.

Buna karşılık, WAF'niz üst bilginin adını (My-Header) bir saldırı olarak algılarsa, RequestHeaderKeys istek özniteliğini kullanarak üst bilgi anahtarı için bir dışlama yapılandırabilirsiniz. RequestHeaderKeys özniteliği yalnızca CRS 3.2 veya daha yeni ve Bot Manager 1.0 veya daha yeni sürümlerde kullanılabilir.

İstek özniteliği örnekleri

Aşağıdaki tabloda, belirli bir eşleşme değişkeni için dışlamanızı nasıl yapılandırabileceğinize ilişkin bazı örnekler gösterilmektedir.

Dışlanması Gereken Öznitelik matchVariable selectorMatchOperator Örnek seçici Örnek istek Dışlananlar
Sorgu dizesi RequestArgKeys Eşittir /etc/passwd Urı: http://localhost:8080/?/etc/passwd=test /etc/passwd
Sorgu dizesi RequestArgKeys EqualsAny Yok Urı: http://localhost:8080/?/etc/passwd=test&.htaccess=test2 /etc/passwd ve .htaccess
Sorgu dizesi RequestArgNames Eşittir text Urı: http://localhost:8080/?text=/etc/passwd /etc/passwd
Sorgu dizesi RequestArgNames EqualsAny Yok Urı: http://localhost:8080/?text=/etc/passwd&text2=.cshrc /etc/passwd ve .cshrc
Sorgu dizesi RequestArgValues Eşittir text Urı: http://localhost:8080/?text=/etc/passwd /etc/passwd
Sorgu dizesi RequestArgValues EqualsAny Yok Urı: http://localhost:8080/?text=/etc/passwd&text2=.cshrc /etc/passwd ve .cshrc
Request body RequestArgKeys Contains sleep İstek gövdesi: {"sleep(5)": "test"} sleep(5)
Request body RequestArgKeys EqualsAny Yok İstek gövdesi: {".zshrc": "value", "sleep(5)":"value2"} .zshrc ve sleep(5)
Request body RequestArgNames Eşittir test İstek gövdesi: {"test": ".zshrc"} .zshrc
Request body RequestArgNames EqualsAny Yok İstek gövdesi: {"key1": ".zshrc", "key2":"sleep(5)"} .zshrc ve sleep(5)
Request body RequestArgValues Eşittir test İstek gövdesi: {"test": ".zshrc"} .zshrc
Request body RequestArgValues EqualsAny Yok İstek gövdesi: {"key1": ".zshrc", "key2":"sleep(5)"} .zshrc ve sleep(5)
Üst bilgi RequestHeaderKeys Eşittir X-Scanner Üstbilgi: {"X-Scanner": "test"} X-scanner
Üst bilgi RequestHeaderKeys EqualsAny Yok Üstbilgi: {"X-Scanner": "test", "x-ratproxy-loop": "value"} X-Scanner ve x-ratproxy-loop
Üst bilgi RequestHeaderNames Eşittir head1 Üstbilgi: {"head1": "X-Scanner"} X-scanner
Üst bilgi RequestHeaderNames EqualsAny Yok Üstbilgi: {"head1": "myvar=1234", "User-Agent": "(hydra)"} myvar=1234 ve (hydra)
Üst bilgi RequestHeaderValues Eşittir head1 Üstbilgi: {"head1": "X-Scanner"} X-scanner
Üst bilgi RequestHeaderValues EqualsAny Yok Üstbilgi: {"head1": "myvar=1234", "User-Agent": "(hydra)"} myvar=1234 ve (hydra)
Tanımlama Bilgisi RequestCookieKeys Contains /etc/passwd Üstbilgi: {"Cookie": "/etc/passwdtest=hello1"} /etc/passwdtest
Tanımlama Bilgisi RequestCookieKeys EqualsAny Yok Üstbilgi: {"Cookie": "/etc/passwdtest=hello1", "Cookie": ".htaccess=test1"} /etc/passwdtest ve .htaccess
Tanımlama Bilgisi RequestCookieNames Eşittir arg1 Üstbilgi: {"Cookie": "arg1=/etc/passwd"} /etc/passwd
Tanımlama Bilgisi RequestCookieNames EqualsAny Yok Üstbilgi: {"Cookie": "arg1=/etc/passwd", "Cookie": "arg1=.cshrc"} /etc/passwd ve .cshrc
Tanımlama Bilgisi RequestCookieValues Eşittir arg1 Üstbilgi: {"Cookie": "arg1=/etc/passwd"} /etc/passwd
Tanımlama Bilgisi RequestCookieValues EqualsAny Yok Üstbilgi: {"Cookie": "arg1=/etc/passwd", "Cookie": "arg1=.cshrc"} /etc/passwd ve .cshrc

Dekont

selectorMatchOperator EqualsAnykullanarak bir dışlama oluşturursanız, seçici alanına eklediğiniz her şey dışlama oluşturulduğunda arka uç tarafından "*" olarak dönüştürülür.

Dışlama kapsamları

Dışlamalar belirli bir WAF kuralları kümesine, kural kümelerine veya genel olarak tüm kurallara uygulanacak şekilde yapılandırılabilir.

Bahşiş

Saldırganların sisteminizden yararlanması için yanlışlıkla yer bırakmamak için olabildiğince dar ve belirli dışlamalar yapmak iyi bir uygulamadır. Bir dışlama kuralı eklemeniz gerektiğinde, mümkün olan her yerde kural başına dışlamaları kullanın.

Kural başına dışlamalar

Belirli bir kural, kural grubu veya kural kümesi için dışlama yapılandırabilirsiniz. Dışlamanın uygulanacağı kuralı veya kuralları belirtmeniz gerekir. WAF değerlendirmesinin dışında tutulması gereken istek özniteliğini de belirtmeniz gerekir. Tam bir kural grubunu dışlamak için yalnızca parametresini ruleGroupName sağlayın; rules parametre yalnızca dışlamayı bir grubun belirli kurallarıyla sınırlamak istediğinizde kullanışlıdır.

Kural başına dışlamalar, OWASP (CRS) kural kümesi sürüm 3.2 veya üzeri ya da Bot Manager kural kümesi sürüm 1.0 veya üzerini kullandığınızda kullanılabilir.

Örnek

WAF'nin istek üst bilgisinin değerini User-Agent yoksaymasını istediğinizi varsayalım. User-Agent Üst bilgi, ağ protokolü eşlerinin istekte bulunan yazılım kullanıcı aracısının uygulama türünü, işletim sistemini, yazılım satıcısını veya yazılım sürümünü tanımlamasını sağlayan bir özellik dizesi içerir. Daha fazla bilgi için bkz . User-Agent.

Bu üst bilginin değerlendirilmesini devre dışı bırakmak için çeşitli nedenler olabilir. WAF'nin algılayıp kötü amaçlı olduğunu varsayacağı bir dize olabilir. Örneğin, User-Agent üst bilgi bir dizede klasik SQL ekleme saldırısını x=x içerebilir. Bazı durumlarda bu geçerli trafik olabilir. Bu nedenle bu üst bilgiyi WAF değerlendirmesinin dışında tutmanız gerekebilir.

Üst bilgiyi tüm SQL ekleme kuralları tarafından değerlendirmenin dışında tutmak User-Agent için aşağıdaki yaklaşımları kullanabilirsiniz:

Azure portalını kullanarak kural başına dışlama yapılandırmak için şu adımları izleyin:

  1. WAF ilkesine gidin ve Yönetilen kurallar'ı seçin.

  2. Dışlama ekle'yi seçin.

    Screenshot of the Azure portal that shows how to add a new per-rule exclusion for the W A F policy.

  3. Şunun için geçerlidir bölümünde, dışlamanın uygulanacağı CRS kural kümesini (örneğin, OWASP_3.2) seçin.

    Screenshot of the Azure portal that shows the per-rule exclusion configuration for the W A F policy.

  4. Kural ekle'yi seçin ve dışlamaları uygulamak istediğiniz kuralları seçin.

  5. Eşleştirme değişkenini, işlecini ve seçiciyi yapılandırın. Ardından Kaydet'i seçin.

Birden çok dışlama yapılandırabilirsiniz.

Üst bilgiyi yalnızca 942270 kuralına göre değerlendirmenin dışında tutabilirsiniz User-Agent :

Önceki örnekte açıklanan adımları izleyin ve 4. adımda 942270 kuralını seçin.

Genel dışlamalar

Tüm WAF kurallarında uygulanacak bir dışlama yapılandırabilirsiniz.

Örnek

İstekte URL aracılığıyla geçirilen kullanıcı parametresindeki değeri dışlamak istediğinizi varsayalım. Örneğin, sorgu dizesi bağımsız değişkeninin user WAF'nin kötü amaçlı içerik olarak görüntülediği bir dize içermesinin ortamınızda yaygın olduğunu ve dolayısıyla bunu engellediğini varsayalım. WAF'nin alanın değerini değerlendirmemesi için adın sözcüğüyle userbaşladığı tüm sorgu dizesi bağımsız değişkenlerini dışlayabilirsiniz.

Aşağıdaki örnekte, sorgu dizesi bağımsız değişkenini değerlendirmeden user nasıl dışlayabileceğiniz gösterilmektedir:

Azure portalını kullanarak genel dışlama yapılandırmak için şu adımları izleyin:

  1. WAF ilkesine gidin ve Yönetilen kurallar'ı seçin.

  2. Dışlama ekle'yi seçin.

    Screenshot of the Azure portal that shows how to add a new global exclusion for the W A F policy.

  3. Şunun için geçerlidir bölümünde Genel'i seçin

    Screenshot of the Azure portal that shows the global exclusion configuration for the W A F policy.

  4. Eşleştirme değişkenini, işlecini ve seçiciyi yapılandırın. Ardından Kaydet'i seçin.

Birden çok dışlama yapılandırabilirsiniz.

Dolayısıyla, URL http://www.contoso.com/?user%3c%3e=joe WAF tarafından taranırsa, joe dizesini değerlendirmez, ancak yine de user%3c%3e parametre adını değerlendirir.

Sonraki adımlar