Aracılığıyla paylaş


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-idgibi 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

  1. Azure Front Door WAF ilkenizi açın.

  2. Yönetilen kurallar>Dışlamaları yönet'i seçin.

    WAF ilkesinin Yönetilen kurallar sayfasını gösteren ve Dışlamaları yönet düğmesinin vurgulandığı Azure portal gösteren ekran görüntüsü.

  3. Add (Ekle) seçeneğini belirleyin.

    Dışlama listesi Ekle düğmesini içeren Azure portal gösteren ekran görüntüsü.

  4. 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
  5. 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ı
  6. Aşağıdaki ekran görüntüsüne benzemesi gereken dışlama işlemini gözden geçirin:

    Dışlama yapılandırmasını gösteren Azure portal gösteren ekran görüntüsü.

    Bu dışlama, sözcüğüyle userbaş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, ile User 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.

  7. 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 userbaş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 userbaş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 userbaş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, ile User 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.