Mengonfigurasi daftar pengecualian firewall aplikasi web

Terkadang Azure Web Application Firewall di Azure Front Door mungkin memblokir permintaan yang sah. Sebagai bagian dari penyetelan firewall aplikasi web (WAF), Anda dapat mengonfigurasi WAF untuk mengizinkan permintaan aplikasi Anda. Daftar pengecualian WAF memungkinkan Anda menghilangkan atribut permintaan tertentu dari evaluasi WAF. Permintaan lainnya dievaluasi seperti biasa. Untuk informasi selengkapnya tentang daftar pengecualian, lihat Azure Web Application Firewall dengan daftar pengecualian Azure Front Door.

Daftar pengecualian dapat dikonfigurasi dengan menggunakan Azure PowerShell, Azure CLI, REST API, Bicep, templat Azure Resource Manager, dan portal Azure.

Skenario

Misalkan Anda telah membuat API. Klien Anda mengirim permintaan ke API Anda yang menyertakan header dengan nama seperti userid dan user-id.

Saat menyetel WAF, Anda melihat bahwa beberapa permintaan yang sah diblokir karena header pengguna menyertakan urutan karakter yang dideteksi WAF sebagai serangan injeksi SQL. Secara khusus, ID aturan 942230 mendeteksi header permintaan dan memblokir permintaan. Aturan 942230 adalah bagian dari grup aturan SQLI.

Anda memutuskan untuk membuat pengecualian untuk memungkinkan permintaan yang sah ini melewatinya tanpa WAF memblokirnya.

Membuat pengecualian

  1. Buka kebijakan WAF Azure Front Door Anda.

  2. Pilih Aturan >terkelolaKelola pengecualian.

    Cuplikan layar yang memperlihatkan portal Azure memperlihatkan halaman Aturan terkelola kebijakan WAF, dengan tombol Kelola pengecualian disorot.

  3. Pilih Tambahkan.

    Cuplikan layar yang memperlihatkan portal Azure dengan tombol Tambahkan daftar pengecualian.

  4. Konfigurasikan bagian pengecualian Berlaku untuk :

    Bidang Nilai
    Seperangkat aturan Microsoft_DefaultRuleSet_2.0
    Grup Aturan SQLI
    Aturan 942230 Mendeteksi upaya injeksi SQL bersyarat
  5. Mengonfigurasi kondisi kecocokan pengecualian:

    Bidang Nilai
    Mencocokan variabel Permintaan nama header
    Operator Dimulai dengan
    Pemilih Pengguna
  6. Tinjau pengecualian, yang akan terlihat seperti cuplikan layar berikut:

    Cuplikan layar yang memperlihatkan portal Azure memperlihatkan konfigurasi pengecualian.

    Pengecualian ini berlaku untuk header permintaan apa pun yang dimulai dengan kata user. Kondisi kecocokan tidak peka huruf besar/kecil, sehingga header yang dimulai dengan User juga dicakup oleh pengecualian. Jika aturan WAF 942230 mendeteksi risiko dalam nilai header ini, aturan tersebut akan mengabaikan header dan melanjutkan.

  7. Pilih Simpan.

Menentukan pemilih pengecualian

Gunakan cmdlet New-AzFrontDoorWafManagedRuleExclusionObject untuk menentukan pemilih pengecualian baru.

Contoh berikut mengidentifikasi header permintaan yang dimulai dengan kata user. Kondisi kecocokan tidak peka huruf besar/kecil, sehingga header yang dimulai dengan User juga dicakup oleh pengecualian.

$exclusionSelector = New-AzFrontDoorWafManagedRuleExclusionObject `
  -Variable RequestHeaderNames `
  -Operator StartsWith `
  -Selector 'user'

Menentukan pengecualian per aturan

Gunakan cmdlet New-AzFrontDoorWafManagedRuleOverrideObject untuk menentukan pengecualian per aturan baru, yang mencakup pemilih yang Anda buat di langkah sebelumnya.

Contoh berikut membuat pengecualian untuk ID aturan 942230.

$exclusion = New-AzFrontDoorWafManagedRuleOverrideObject `
  -RuleId '942230' `
  -Exclusion $exclusionSelector

Menerapkan pengecualian ke grup aturan

Gunakan cmdlet New-AzFrontDoorWafRuleGroupOverrideObject untuk membuat penimpaan grup aturan, yang menerapkan pengecualian ke grup aturan yang sesuai.

Contoh berikut menggunakan grup aturan SQLI karena grup tersebut berisi ID aturan 942230.

$ruleGroupOverride = New-AzFrontDoorWafRuleGroupOverrideObject `
  -RuleGroupName 'SQLI' `
  -ManagedRuleOverride $exclusion

Mengonfigurasi seperangkat aturan terkelola

Gunakan cmdlet New-AzFrontDoorWafManagedRuleObject untuk mengonfigurasi seperangkat aturan terkelola, termasuk penimpaan grup aturan yang Anda buat di langkah sebelumnya.

Contoh berikut mengonfigurasi seperangkat aturan DRS 2.0 dengan pengesampingan grup aturan dan pengecualiannya.

$managedRuleSet = New-AzFrontDoorWafManagedRuleObject `
  -Type 'Microsoft_DefaultRuleSet' `
  -Version '2.0' `
  -Action Block `
  -RuleGroupOverride $ruleGroupOverride

Menerapkan konfigurasi seperangkat aturan terkelola ke profil WAF

Gunakan cmdlet Update-AzFrontDoorWafPolicy untuk memperbarui kebijakan WAF Anda untuk menyertakan konfigurasi yang Anda buat. Pastikan Anda menggunakan nama grup sumber daya dan nama kebijakan WAF yang benar untuk lingkungan Anda sendiri.

Update-AzFrontDoorWafPolicy `
  -ResourceGroupName 'FrontDoorWafPolicy' `
  -Name 'WafPolicy'
  -ManagedRule $managedRuleSet

Membuat pengecualian

az network front-door waf-policy managed-rules exclusion add Gunakan perintah untuk memperbarui kebijakan WAF Anda untuk menambahkan pengecualian baru.

Pengecualian mengidentifikasi header permintaan yang dimulai dengan kata user. Kondisi kecocokan tidak peka huruf besar/kecil, sehingga header yang dimulai dengan User juga dicakup oleh pengecualian.

Pastikan Anda menggunakan nama grup sumber daya dan nama kebijakan WAF yang benar untuk lingkungan Anda sendiri.

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

Contoh file Bicep

Contoh file Bicep berikut menunjukkan cara:

  • Buat kebijakan WAF Azure Front Door.
  • Aktifkan seperangkat aturan DRS 2.0.
  • Konfigurasikan pengecualian untuk aturan 942230, yang ada dalam grup aturan SQLI. Pengecualian ini berlaku untuk header permintaan apa pun yang dimulai dengan kata user. Kondisi kecocokan tidak peka huruf besar/kecil, sehingga header yang dimulai dengan User juga dicakup oleh pengecualian. Jika aturan WAF 942230 mendeteksi risiko dalam nilai header ini, aturan tersebut akan mengabaikan header dan melanjutkan.
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'
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

Langkah berikutnya

Pelajari selengkapnya tentang Azure Front Door.