استخدام قواعد مخصصة للتطابق الجغرافي ل Azure WAF لتحسين أمان الشبكة

تعد جدران حماية تطبيقات الويب (WAFs) أداة مهمة تساعد على حماية تطبيقات الويب من الهجمات الضارة. يمكنهم تصفية ومراقبة وإيقاف حركة مرور الويب باستخدام كل من القواعد المعينة مسبقا والمخصصة. يمكنك إنشاء القاعدة الخاصة بك التي يتحقق WAF من كل طلب يحصل عليه. القواعد المخصصة لها أولوية أعلى من القواعد المدارة ويتم التحقق منها أولا.

واحدة من أقوى ميزات Azure Web Application Firewall هي قواعد مخصصة للتطابق الجغرافي. تتيح لك هذه القواعد مطابقة طلبات الويب بالموقع الجغرافي للمكان الذي تأتي منه. قد ترغب في إيقاف الطلبات من أماكن معينة معروفة بالنشاط الضار، أو قد ترغب في السماح بطلبات من أماكن مهمة لعملك. يمكن أن تساعدك قواعد Geomatch المخصصة أيضا على اتباع سيادة البيانات وقوانين الخصوصية من خلال الحد من الوصول إلى تطبيقات الويب الخاصة بك استنادا إلى موقع الأشخاص الذين يستخدمونها.

استخدم معلمة الأولوية بحكمة عند استخدام قواعد مخصصة للتطابق الجغرافي لتجنب المعالجة أو التعارضات غير الضرورية. يقيم Azure WAF القواعد بالترتيب الذي تحدده معلمة الأولوية، وهي قيمة رقمية تتراوح بين 1 و100، مع قيم أقل تشير إلى أولوية أعلى. يجب أن تكون الأولوية فريدة عبر جميع القواعد المخصصة. تعيين أولوية أعلى للقواعد الهامة أو المحددة لأمان تطبيق الويب الخاص بك وأولوية أقل للقواعد الأقل أهمية أو عامة. وهذا يضمن تطبيق WAF الإجراءات الأكثر ملاءمة لحركة مرور الويب الخاصة بك. على سبيل المثال، السيناريو الذي تحدد فيه مسار URI صريح هو الأكثر تحديدا ويجب أن يكون له قاعدة أولوية أعلى من الأنواع الأخرى من الأنماط. يحمي هذا مسارا مهما على التطبيق بأولوية قصوى مع السماح بتقييم حركة مرور أكثر عمومية عبر قواعد مخصصة أخرى أو مجموعات قواعد مدارة.

لتسهيل فهم الفقرة لجمهور تقني يستخدم الصوت الحالي المتوتر والنشط، يمكنك إعادة كتابتها كما يلي:

اختبر قواعدك دائما قبل تطبيقها على الإنتاج ومراقبة أدائها وتأثيرها بانتظام. باتباع أفضل الممارسات هذه، يمكنك تحسين أمان تطبيق الويب الخاص بك باستخدام قوة القواعد المخصصة للتطابق الجغرافي.

تقدم هذه المقالة قواعد التطابق الجغرافي ل Azure WAF وتوضح لك كيفية إنشائها وإدارتها باستخدام مدخل Microsoft Azure وBicep وAzure PowerShell.

أنماط قواعد Geomatch المخصصة

تمكنك قواعد Geomatch المخصصة من تحقيق أهداف أمان متنوعة، مثل حظر الطلبات من المناطق عالية المخاطر والسماح بالطلبات من مواقع موثوق بها. إنها فعالة بشكل خاص في التخفيف من هجمات رفض الخدمة الموزعة (DDoS)، والتي تسعى إلى غمر تطبيق الويب الخاص بك بالعديد من الطلبات من مصادر مختلفة. باستخدام قواعد التطابق الجغرافي المخصصة، يمكنك تحديد المناطق التي تقوم بإنشاء أكبر عدد من حركات مرور DDoS وحظرها على الفور، مع الاستمرار في منح حق الوصول للمستخدمين الشرعيين. في هذه المقالة، يمكنك التعرف على أنماط القواعد المخصصة المختلفة التي يمكنك استخدامها لتحسين Azure WAF باستخدام قواعد مخصصة للتطابق الجغرافي.

السيناريو 1 - حظر حركة المرور من جميع البلدان باستثناء "x"

قواعد Geomatch المخصصة مفيدة عندما تهدف إلى حظر حركة المرور من جميع البلدان، ما يمنع واحدة. على سبيل المثال، إذا كان تطبيق الويب الخاص بك يخدم المستخدمين حصريا في الولايات المتحدة، يمكنك صياغة قاعدة مخصصة للتطابق الجغرافي تعوق جميع الطلبات التي لا تنشأ من الولايات المتحدة. تقلل هذه الاستراتيجية بشكل فعال من سطح هجوم تطبيق الويب الخاص بك وتمنع الوصول غير المصرح به من مناطق أخرى. تستخدم هذه التقنية المحددة شرطا نفي لتسهيل نمط حركة المرور هذا. لإنشاء قاعدة مخصصة للتطابق الجغرافي تعوق حركة المرور من جميع البلدان باستثناء الولايات المتحدة، راجع أمثلة المدخل وBicep وPowerShell التالية:

مثال المدخل - بوابة التطبيق

Screenshot showing the Application Gateway WAF add custom rule screen.

مثال المدخل - Front Door

Screenshot showing the Front Door WAF add custom rule screen.

إشعار

لاحظ على Azure Front Door WAF، يمكنك استخدام SocketAddr كمتغير مطابقة وليس RemoteAddr. RemoteAddr المتغير هو عنوان IP للعميل الأصلي الذي يتم إرساله عادة عبر X-Forwarded-For عنوان الطلب. SocketAddr المتغير هو عنوان IP المصدر الذي يراه WAF.

مثال Bicep - بوابة التطبيق

properties: {
    customRules: [
      {
        name: 'GeoRule1'
        priority: 10
        ruleType: 'MatchRule'
        action: 'Block'
        matchConditions: [
          {
            matchVariables: [
              {
                variableName: 'RemoteAddr'
              }
            ]
            operator: 'GeoMatch'
            negationConditon: true
            matchValues: [
              'US'
            ]
            transforms: []
          }
        ]
        state: 'Enabled'
      }

مثال Bicep - Front Door

properties: {
    customRules: {
      rules: [
        {
          name: 'GeoRule1'
          enabledState: 'Enabled'
          priority: 10
          ruleType: 'MatchRule'
          matchConditions: [
            {
              matchVariable: 'SocketAddr'
              operator: 'GeoMatch'
              negateCondition: true
              matchValue: [
                'US'
              ]
              transforms: []
            }
          ]
          action: 'Block'
        }

مثال Azure PowerShell - بوابة التطبيق

$RGname = "rg-waf "
$policyName = "waf-pol"
$variable = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable -Operator GeoMatch -MatchValue "US" -NegationCondition $true
$rule = New-AzApplicationGatewayFirewallCustomRule -Name GeoRule1 -Priority 10 -RuleType MatchRule -MatchCondition $condition -Action Block
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $RGname
$policy.CustomRules.Add($rule)
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy

مثال Azure PowerShell - Front Door

$RGname = "rg-waf"
$policyName = "wafafdpol"
$matchCondition = New-AzFrontDoorWafMatchConditionObject -MatchVariable SocketAddr -OperatorProperty GeoMatch -MatchValue "US" -NegateCondition $true
$customRuleObject = New-AzFrontDoorWafCustomRuleObject -Name "GeoRule1" -RuleType MatchRule -MatchCondition $matchCondition -Action Block -Priority 10
$afdWAFPolicy= Get-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $RGname
Update-AzFrontDoorWafPolicy -InputObject $afdWAFPolicy -Customrule $customRuleObject

السيناريو 2 - حظر حركة المرور من جميع البلدان باستثناء "x" و"y" التي تستهدف URI "foo" أو "bar"

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

يعالج هذا النمط حمولات الطلبات من الولايات المتحدة وكندا من خلال مجموعات القواعد المدارة، واصطياد أي هجمات ضارة، مع حظر الطلبات من جميع البلدان الأخرى. يضمن هذا النهج أن جمهورك المستهدف فقط يمكنه الوصول إلى تطبيق الويب الخاص بك، وتجنب نسبة استخدام الشبكة غير المرغوب فيها من مناطق أخرى.

لتقليل الإيجابيات الكاذبة المحتملة، قم بتضمين رمز البلد ZZ في القائمة لالتقاط عناوين IP التي لم يتم تعيينها بعد إلى بلد في مجموعة بيانات Azure. تستخدم هذه التقنية شرطا نفي لنوع الموقع الجغرافي وشرط غير نفي لمطابقة URI.

لإنشاء قاعدة مخصصة للتطابق الجغرافي تمنع حركة المرور من جميع البلدان باستثناء الولايات المتحدة وكندا إلى URI محدد، راجع أمثلة المدخل وBicep وAzure PowerShell المتوفرة.

مثال المدخل - بوابة التطبيق

Screenshot showing add custom rule for Application Gateway.

مثال المدخل - Front Door

Screenshot showing add custom rule for Front Door.

مثال Bicep - بوابة التطبيق

properties: {
    customRules: [
      {
        name: 'GeoRule2'
        priority: 11
        ruleType: 'MatchRule'
        action: 'Block'
        matchConditions: [
          {
            matchVariables: [
              {
                variableName: 'RemoteAddr'
              }
            ]
            operator: 'GeoMatch'
            negationConditon: true
            matchValues: [
              'US'
              'CA'
            ]
            transforms: []
          }
          {
            matchVariables: [
              {
                variableName: 'RequestUri'
              }
            ]
            operator: 'Contains'
            negationConditon: false
            matchValues: [
              '/foo'
              '/bar'
            ]
            transforms: []
          }
        ]
        state: 'Enabled'
      }

مثال Bicep - Front Door

properties: {
    customRules: {
      rules: [
        {
          name: 'GeoRule2'
          enabledState: 'Enabled'
          priority: 11
          ruleType: 'MatchRule'
          matchConditions: [
            {
              matchVariable: 'SocketAddr'
              operator: 'GeoMatch'
              negateCondition: true
              matchValue: [
                'US'
                'CA'
              ]
              transforms: []
            }
            {
              matchVariable: 'RequestUri'
              operator: 'Contains'
              negateCondition: false
              matchValue: [
                '/foo'
                '/bar'
              ]
              transforms: []
            }
          ]
          action: 'Block'
        }

مثال Azure PowerShell - بوابة التطبيق

$RGname = "rg-waf "
$policyName = "waf-pol"
$variable1a = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition1a = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable1a -Operator GeoMatch -MatchValue @(“US”, “CA”) -NegationCondition $true
$variable1b = New-AzApplicationGatewayFirewallMatchVariable -VariableName RequestUri
$condition1b = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable1b -Operator Contains -MatchValue @(“/foo”, “/bar”) -NegationCondition $false
$rule1 = New-AzApplicationGatewayFirewallCustomRule -Name GeoRule2 -Priority 11 -RuleType MatchRule -MatchCondition $condition1a, $condition1b -Action Block
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $RGname
$policy.CustomRules.Add($rule1)
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy

مثال Azure PowerShell - Front Door

$RGname = "rg-waf"
$policyName = "wafafdpol"
$matchCondition1a = New-AzFrontDoorWafMatchConditionObject -MatchVariable SocketAddr -OperatorProperty GeoMatch -MatchValue @(“US”, "CA") -NegateCondition $true
$matchCondition1b = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestUri -OperatorProperty Contains -MatchValue @(“/foo”, “/bar”) -NegateCondition $false
$customRuleObject1 = New-AzFrontDoorWafCustomRuleObject -Name "GeoRule2" -RuleType MatchRule -MatchCondition $matchCondition1a, $matchCondition1b -Action Block -Priority 11
$afdWAFPolicy= Get-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $RGname
Update-AzFrontDoorWafPolicy -InputObject $afdWAFPolicy -Customrule $customRuleObject1

السيناريو 3 - حظر حركة المرور على وجه التحديد من البلد "x"

يمكنك استخدام قواعد مخصصة للتطابق الجغرافي لمنع حركة المرور من بلدان معينة. على سبيل المثال، إذا كان تطبيق الويب الخاص بك يتلقى العديد من الطلبات الضارة من البلد "x"، قم بإنشاء قاعدة مخصصة للتطابق الجغرافي لحظر جميع الطلبات من ذلك البلد. وهذا يحمي تطبيق الويب الخاص بك من الهجمات المحتملة ويقلل من تحميل الموارد. طبق هذا النمط لمنع العديد من البلدان الضارة أو المعادية. تتطلب هذه التقنية شرط مطابقة لنمط حركة المرور. لحظر حركة المرور من البلد "x"، راجع أمثلة المدخل وBicep وAzure PowerShell التالية.

مثال المدخل - بوابة التطبيق

Screenshot showing the application gateway add custom rule screen.

مثال المدخل - Front Door

Screenshot showing the front door add custom rule screen.

مثال Bicep - بوابة التطبيق

properties: {
    customRules: [
      {
        name: 'GeoRule3'
        priority: 12
        ruleType: 'MatchRule'
        action: 'Block'
        matchConditions: [
          {
            matchVariables: [
              {
                variableName: 'RemoteAddr'
              }
            ]
            operator: 'GeoMatch'
            negationConditon: false
            matchValues: [
              'US'
            ]
            transforms: []
          }
        ]
        state: 'Enabled'
      }

مثال Bicep - Front Door

properties: {
    customRules: {
      rules: [
        {
          name: 'GeoRule3'
          enabledState: 'Enabled'
          priority: 12
          ruleType: 'MatchRule'
          matchConditions: [
            {
              matchVariable: 'SocketAddr'
              operator: 'GeoMatch'
              negateCondition: false
              matchValue: [
                'US'
              ]
              transforms: []
            }
          ]
          action: 'Block'
        }

مثال Azure PowerShell - بوابة التطبيق

$RGname = "rg-waf "
$policyName = "waf-pol"
$variable2 = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition2 = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable2 -Operator GeoMatch -MatchValue "US" -NegationCondition $false
$rule2 = New-AzApplicationGatewayFirewallCustomRule -Name GeoRule3 -Priority 12 -RuleType MatchRule -MatchCondition $condition2 -Action Block
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $RGname
$policy.CustomRules.Add($rule2)
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy

مثال Azure PowerShell - Front Door

$RGname = "rg-waf"
$policyName = "wafafdpol"
$matchCondition2 = New-AzFrontDoorWafMatchConditionObject -MatchVariable SocketAddr -OperatorProperty GeoMatch -MatchValue "US" -NegateCondition $false
$customRuleObject2 = New-AzFrontDoorWafCustomRuleObject -Name "GeoRule3" -RuleType MatchRule -MatchCondition $matchCondition2 -Action Block -Priority 12
$afdWAFPolicy= Get-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $RGname
Update-AzFrontDoorWafPolicy -InputObject $afdWAFPolicy -Customrule $customRuleObject2

أنماط مضادة للقاعدة المخصصة ل Geomatch

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

بدلا من استخدام allow إجراء، استخدم block إجراء بشرط الرفض، كما هو موضح في الأنماط السابقة. وهذا يضمن السماح فقط بنسبة استخدام الشبكة من البلدان المطلوبة ومنع WAF من جميع حركة المرور الأخرى.

السيناريو 4 - السماح بنسبة استخدام الشبكة من البلد "x"

تجنب تعيين قاعدة التطابق الجغرافي المخصصة للسماح بنسبة استخدام الشبكة من بلد معين. على سبيل المثال، إذا كنت تريد السماح بنسبة استخدام الشبكة من الولايات المتحدة بسبب قاعدة عملاء كبيرة، فقد يبدو إنشاء قاعدة مخصصة مع الإجراء allow والقيمة United States مثل الحل. ومع ذلك، تسمح هذه القاعدة لجميع حركات المرور من الولايات المتحدة، بغض النظر عما إذا كانت تحتوي على حمولة ضارة أم لا، حيث allow يتجاوز الإجراء معالجة القواعد الإضافية لقواعد القواعد المدارة. بالإضافة إلى ذلك، لا يزال WAF يعالج نسبة استخدام الشبكة من جميع البلدان الأخرى، مما يستهلك الموارد. يعرض هذا تطبيق الويب الخاص بك إلى طلبات ضارة من الولايات المتحدة التي كان WAF سيحظرها بخلاف ذلك.

السيناريو 5 - السماح بنسبة استخدام الشبكة من جميع المقاطعات باستثناء "x"

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

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

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