تكوين قوائم استبعاد جدار حماية تطبيق الويب

في بعض الأحيان قد يمنع Azure Web Application Firewall في Azure Front Door طلبا شرعيا. كجزء من ضبط جدار حماية تطبيق الويب (WAF)، يمكنك تكوين WAF للسماح بطلب التطبيق الخاص بك. تسمح لك قوائم استبعاد WAF بحذف سمات طلب محددة من تقييم WAF. يتم تقييم باقي الطلب كالمعتاد. لمزيد من المعلومات حول قوائم الاستبعاد، راجع Azure Web Application Firewall مع قوائم استبعاد Azure Front Door.

يمكن تكوين قائمة استبعاد باستخدام Azure PowerShellوAzure CLIوواجهة برمجة تطبيقات REST وBicep وقوالب Resource Manager Azure ومدخل Microsoft Azure.

السيناريو

لنفترض أنك قمت بإنشاء واجهة برمجة تطبيقات. يرسل عملاؤك طلبات إلى واجهة برمجة التطبيقات الخاصة بك تتضمن عناوين بأسماء مثل userid و user-id.

أثناء ضبط WAF الخاص بك، تلاحظ أنه تم حظر بعض الطلبات المشروعة لأن عناوين المستخدم تضمنت تسلسلات الأحرف التي اكتشفها WAF كهجمات حقن SQL. على وجه التحديد، يكتشف معرف القاعدة 942230 رؤوس الطلبات ويحظر الطلبات. القاعدة 942230 هي جزء من مجموعة قواعد SQLI.

قررت إنشاء استثناء للسماح لهذه الطلبات المشروعة بالمرور دون حظر WAF لها.

إنشاء استثناء

  1. افتح نهج Azure Front Door WAF.

  2. حدد Managed rules>Manage exclusions.

    لقطة شاشة تعرض مدخل Microsoft Azure تعرض صفحة القواعد المدارة لنهج WAF، مع تمييز الزر إدارة الاستثناءات.

  3. حدد ⁧⁩إضافة⁧⁩.

    لقطة شاشة تعرض مدخل Microsoft Azure مع زر إضافة قائمة الاستبعاد.

  4. تكوين قسم ينطبق على الاستثناء:

    الحقل القيمة
    ‏ مجموعة القواعد Microsoft_DefaultRuleSet_2.0
    مجموعة القواعد SQLI
    ‏‏قاعدة 942230 يكشف عن محاولات حقن SQL الشرطية
  5. تكوين شروط مطابقة الاستبعاد:

    الحقل القيمة
    مطابقة المتغير طلب اسم رأس
    عامل تشغيل البدء
    محدد المستخدم
  6. راجع الاستبعاد، والذي يجب أن يبدو مثل لقطة الشاشة التالية:

    لقطة شاشة تعرض مدخل Microsoft Azure تعرض تكوين الاستبعاد.

    ينطبق هذا الاستبعاد على أي رؤوس طلبات تبدأ بالكلمة user. شرط المطابقة غير حساس لحالة الأحرف، لذلك تتم تغطية العناوين التي تبدأ بالاستثناء User أيضا. إذا اكتشفت قاعدة WAF 942230 خطرا في قيم الرأس هذه، فإنها تتجاهل العنوان وتنتقل.

  7. حدد ⁧⁩حفظ⁧⁩.

تحديد محدد استبعاد

استخدم New-AzFrontDoorWafManagedRuleExclusionObject cmdlet لتعريف محدد استبعاد جديد.

يحدد المثال التالي عناوين الطلب التي تبدأ بالكلمة user. شرط المطابقة غير حساس لحالة الأحرف، لذلك تتم تغطية العناوين التي تبدأ بالاستثناء User أيضا.

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

تعريف استبعاد لكل قاعدة

استخدم الأمر Cmdlet New-AzFrontDoorWafManagedRuleOverrideObject لتعريف استثناء جديد لكل قاعدة، والذي يتضمن المحدد الذي أنشأته في الخطوة السابقة.

ينشئ المثال التالي استثناء لمعرف القاعدة 942230.

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

تطبيق الاستبعاد على مجموعة القواعد

استخدم الأمر Cmdlet New-AzFrontDoorWafRuleGroupOverrideObject لإنشاء تجاوز مجموعة قواعد، والذي يطبق الاستبعاد على مجموعة القواعد المناسبة.

يستخدم المثال التالي مجموعة قواعد SQLI لأن هذه المجموعة تحتوي على معرف القاعدة 942230.

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

تكوين مجموعة القواعد المدارة

استخدم الأمر Cmdlet New-AzFrontDoorWafManagedRuleObject لتكوين مجموعة القواعد المدارة، بما في ذلك تجاوز مجموعة القواعد التي قمت بإنشائها في الخطوة السابقة.

يقوم المثال التالي بتكوين مجموعة قواعد DRS 2.0 مع تجاوز مجموعة القواعد واستبعادها.

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

تطبيق تكوين مجموعة القواعد المدارة على ملف تعريف WAF

استخدم الأمر Cmdlet Update-AzFrontDoorWafPolicy لتحديث نهج WAF الخاص بك لتضمين التكوين الذي أنشأته. تأكد من استخدام اسم مجموعة الموارد الصحيح واسم نهج WAF لبيئتك الخاصة.

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

إنشاء استثناء

az network front-door waf-policy managed-rules exclusion add استخدم الأمر لتحديث نهج WAF لإضافة استثناء جديد.

يحدد الاستبعاد عناوين الطلب التي تبدأ بالكلمة user. شرط المطابقة غير حساس لحالة الأحرف، لذلك تتم تغطية العناوين التي تبدأ بالاستثناء User أيضا.

تأكد من استخدام اسم مجموعة الموارد الصحيح واسم نهج WAF لبيئتك الخاصة.

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

مثال على ملف Bicep

يوضح ملف Bicep المثال التالي كيفية:

  • إنشاء نهج Azure Front Door WAF.
  • تمكين مجموعة قواعد DRS 2.0.
  • تكوين استثناء للقاعدة 942230، الموجودة داخل مجموعة قواعد SQLI. ينطبق هذا الاستبعاد على أي رؤوس طلبات تبدأ بالكلمة user. شرط المطابقة غير حساس لحالة الأحرف، لذلك تتم تغطية العناوين التي تبدأ بالاستثناء User أيضا. إذا اكتشفت قاعدة WAF 942230 خطرا في قيم الرأس هذه، فإنها تتجاهل العنوان وتنتقل.
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'
                    }
                  ]
                }
              ]
            }
          ]
        }
      ]
    }
  }
}

الخطوات التالية

تعرّف على المزيد حول Azure Front Door.