Web uygulaması güvenlik duvarı dışlama listelerini yapılandırma
Bazen Azure Front Door'daki Azure Web Uygulaması Güvenlik Duvarı yasal bir isteği engelleyebilir. Web uygulaması güvenlik duvarınızı (WAF) ayarlamanın bir parçası olarak WAF'yi uygulamanızın isteğine izin verecek şekilde yapılandırabilirsiniz. WAF dışlama listeleri, bir WAF değerlendirmesinden belirli istek özniteliklerini atlamanıza olanak tanır. İsteğin geri kalanı normal olarak değerlendirilir. Dışlama listeleri hakkında daha fazla bilgi için bkz. Azure Front Door dışlama listeleriyle Azure Web Uygulaması Güvenlik Duvarı.
Dışlama listesi Azure PowerShell, Azure CLI, REST API, Bicep, Azure Resource Manager şablonları ve Azure portal kullanılarak yapılandırılabilir.
Senaryo
Bir API oluşturduğunuzu varsayalım. İstemcileriniz API'nize ve user-id
gibi userid
adlara sahip üst bilgiler içeren istekler gönderir.
WAF'nizi ayarlarken, kullanıcı üst bilgileri WAF'nin SQL ekleme saldırıları olarak algıladığı karakter dizilerini içerdiğinden bazı meşru isteklerin engellendiğini fark edeceksiniz. Özellikle, kural kimliği 942230 istek üst bilgilerini algılar ve istekleri engeller. Kural 942230, SQLI kural grubunun bir parçasıdır.
Bu meşru isteklerin WAF tarafından engellenmeden geçmesine izin vermek için bir dışlama oluşturmaya karar verirsiniz.
Dışlama oluşturma
Azure Front Door WAF ilkenizi açın.
Yönetilen kurallar>Dışlamaları yönet'i seçin.
Add (Ekle) seçeneğini belirleyin.
Dışlamanın Uygulandığı yer bölümünü yapılandırın:
Alan Değer Kural kümesi Microsoft_DefaultRuleSet_2.0 Kural grubu SQLI Kural 942230 Koşullu SQL ekleme girişimlerini algılar Dışlama eşleştirme koşullarını yapılandırın:
Alan Değer Değişkeni eşleştir İstek üst bilgisi adı Operatör İle başlar Seçici Kullanıcı Aşağıdaki ekran görüntüsüne benzemesi gereken dışlama işlemini gözden geçirin:
Bu dışlama, sözcüğüyle
user
başlayan tüm istek üst bilgileri için geçerlidir. Eşleşme koşulu büyük/küçük harfe duyarsız olduğundan, ileUser
başlayan üst bilgiler de dışlama kapsamındadır. WAF kuralı 942230 bu üst bilgi değerlerinde bir risk algılarsa, üst bilgiyi yoksayar ve devam eder.Kaydet’i seçin.
Dışlama seçici tanımlama
Yeni bir dışlama seçici tanımlamak için New-AzFrontDoorWafManagedRuleExclusionObject cmdlet'ini kullanın.
Aşağıdaki örnek, sözcüğüyle user
başlayan istek üst bilgilerini tanımlar. Eşleşme koşulu büyük/küçük harfe duyarsız olduğundan, ile User
başlayan üst bilgiler de dışlama kapsamındadır.
$exclusionSelector = New-AzFrontDoorWafManagedRuleExclusionObject `
-Variable RequestHeaderNames `
-Operator StartsWith `
-Selector 'user'
Kural başına dışlama tanımlama
Önceki adımda oluşturduğunuz seçiciyi içeren yeni bir kural başına dışlama tanımlamak için New-AzFrontDoorWafManagedRuleOverrideObject cmdlet'ini kullanın.
Aşağıdaki örnek, 942230 kural kimliği için bir dışlama oluşturur.
$exclusion = New-AzFrontDoorWafManagedRuleOverrideObject `
-RuleId '942230' `
-Exclusion $exclusionSelector
Kural grubuna dışlama uygulama
New-AzFrontDoorWafRuleGroupOverrideObject cmdlet'ini kullanarak, dışlama işlemini uygun kural grubuna uygulayan bir kural grubu geçersiz kılması oluşturun.
Aşağıdaki örnekte SQLI kural grubu kullanılır çünkü bu grup 942230 kural kimliğini içerir.
$ruleGroupOverride = New-AzFrontDoorWafRuleGroupOverrideObject `
-RuleGroupName 'SQLI' `
-ManagedRuleOverride $exclusion
Yönetilen kural kümesini yapılandırma
Önceki adımda oluşturduğunuz kural grubu geçersiz kılma dahil olmak üzere yönetilen kural kümesini yapılandırmak için New-AzFrontDoorWafManagedRuleObject cmdlet'ini kullanın.
Aşağıdaki örnek, DRS 2.0 kural kümesini kural grubu geçersiz kılma ve dışlama ile yapılandırmaktadır.
$managedRuleSet = New-AzFrontDoorWafManagedRuleObject `
-Type 'Microsoft_DefaultRuleSet' `
-Version '2.0' `
-Action Block `
-RuleGroupOverride $ruleGroupOverride
Yönetilen kural kümesi yapılandırmasını WAF profiline uygulama
WAF ilkenizi oluşturduğunuz yapılandırmayı içerecek şekilde güncelleştirmek için Update-AzFrontDoorWafPolicy cmdlet'ini kullanın. Kendi ortamınız için doğru kaynak grubu adını ve WAF ilke adını kullandığınızdan emin olun.
Update-AzFrontDoorWafPolicy `
-ResourceGroupName 'FrontDoorWafPolicy' `
-Name 'WafPolicy'
-ManagedRule $managedRuleSet
Dışlama oluşturma
az network front-door waf-policy managed-rules exclusion add
KOMUTUNU kullanarak WAF ilkenizi yeni bir dışlama ekleyecek şekilde güncelleştirin.
Dışlama, sözcüğüyle user
başlayan istek üst bilgilerini tanımlar. Eşleşme koşulu büyük/küçük harfe duyarsız olduğundan, ile User
başlayan üst bilgiler de dışlama kapsamındadır.
Kendi ortamınız için doğru kaynak grubu adını ve WAF ilke adını kullandığınızdan emin olun.
az network front-door waf-policy managed-rules exclusion add \
--resource-group FrontDoorWafPolicy \
--policy-name WafPolicy \
--type Microsoft_DefaultRuleSet \
--rule-group-id SQLI \
--rule-id 942230 \
--match-variable RequestHeaderNames \
--operator StartsWith \
--value user
Örnek Bicep dosyası
Aşağıdaki örnek Bicep dosyasında şunların nasıl yapıldığını gösterilmektedir:
- Azure Front Door WAF ilkesi oluşturun.
- DRS 2.0 kural kümesini etkinleştirin.
- SQLI kural grubunda bulunan 942230 kuralı için bir dışlama yapılandırın. Bu dışlama, sözcüğüyle
user
başlayan tüm istek üst bilgileri için geçerlidir. Eşleşme koşulu büyük/küçük harfe duyarsız olduğundan, ileUser
başlayan üst bilgiler de dışlama kapsamındadır. WAF kuralı 942230 bu üst bilgi değerlerinde bir risk algılarsa, üst bilgiyi yoksayar ve devam eder.
param wafPolicyName string = 'WafPolicy'
@description('The mode that the WAF should be deployed using. In "Prevention" mode, the WAF will block requests it detects as malicious. In "Detection" mode, the WAF will not block requests and will simply log the request.')
@allowed([
'Detection'
'Prevention'
])
param wafMode string = 'Prevention'
resource wafPolicy 'Microsoft.Network/frontDoorWebApplicationFirewallPolicies@2022-05-01' = {
name: wafPolicyName
location: 'Global'
sku: {
name: 'Premium_AzureFrontDoor'
}
properties: {
policySettings: {
enabledState: 'Enabled'
mode: wafMode
}
managedRules: {
managedRuleSets: [
{
ruleSetType: 'Microsoft_DefaultRuleSet'
ruleSetVersion: '2.0'
ruleSetAction: 'Block'
ruleGroupOverrides: [
{
ruleGroupName: 'SQLI'
rules: [
{
ruleId: '942230'
enabledState: 'Enabled'
action: 'AnomalyScoring'
exclusions: [
{
matchVariable: 'RequestHeaderNames'
selectorMatchOperator: 'StartsWith'
selector: 'user'
}
]
}
]
}
]
}
]
}
}
}
Sonraki adımlar
Azure Front Door hakkında daha fazla bilgi edinin.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin