مشاركة عبر


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

يوفر Azure Application Gateway Web Application Firewall (WAF) الحماية لتطبيقات الويب. توضح هذه المقالة تكوين قوائم استبعاد WAF. توجد هذه الإعدادات في نهج WAF المقترن ببوابة التطبيق. لمعرفة المزيد حول نهج WAF، راجع Azure Web Application Firewall على Azure Application Gateway وإنشاء نهج جدار حماية تطبيق الويب لبوابة التطبيق.

في بعض الأحيان قد يحظر WAF طلبا تريد السماح به للتطبيق الخاص بك. تسمح لك قوائم استبعاد WAF بحذف سمات طلب معينة من تقييم WAF. يتم تقييم باقي الطلب كالمعتاد.

على سبيل المثال، يُدرج Active Directory الرموز المميزة المستخدمة للمصادقة. عند استخدامها في عنوان طلب، يمكن أن تحتوي هذه الرموز المميزة على أحرف خاصة قد تؤدي إلى اكتشاف إيجابي خاطئ من قواعد WAF. بإضافة الرأس إلى قائمة استبعاد، يمكنك تكوين WAF لتجاهل العنوان، ولكن WAF لا يزال يقيم بقية الطلب.

يمكنك تكوين الاستثناءات لتطبيقها عند تقييم قواعد WAF معينة، أو لتطبيقها عالميا على تقييم جميع قواعد WAF. تنطبق قواعد الاستبعاد على تطبيق الويب بأكمله.

تحديد سمات الطلب لاستبعادها

عند تكوين استثناء WAF، يجب تحديد سمات الطلب التي يجب استبعادها من تقييم WAF. يمكنك تكوين استثناء WAF لسمات الطلب التالية:

  • عناوين الطلبات
  • طلب ملفات تعريف الارتباط
  • يمكن إضافة اسم سمة الطلب (args) كعنصر استبعاد، مثل:
    • اسم حقل النموذج
    • كيان JSON
    • سلسلة استعلام URL args

يمكنك تحديد تطابق سمة عنوان أو نص أو ملف تعريف ارتباط أو سلسلة طلب بحث تامة. أو يمكنك تحديد تطابقات جزئية. استخدم عوامل التشغيل التالية لتكوين الاستبعاد:

  • يساوي: يستخدم عامل التشغيل هذا لمطابقة تامة. على سبيل المثال، لتحديد عنوان يسمى bearerToken، استخدم عامل التشغيل يساوي مع تعيين المحدد على أنه bearerToken.
  • Starts with: يتطابق عامل التشغيل هذا مع جميع الحقول التي تبدأ بقيمة المحدد المحددة.
  • Ends with: يتطابق عامل التشغيل هذا مع جميع حقول الطلب التي تنتهي بقيمة المحدد المحددة.
  • Contains: يتطابق عامل التشغيل هذا مع جميع حقول الطلب التي تحتوي على قيمة المحدد المحددة.
  • يساوي أي: يطابق عامل التشغيل هذا جميع حقول الطلب. * هي قيمة المحدد. على سبيل المثال، يمكنك استخدام عامل التشغيل هذا عندما لا تعرف القيم الدقيقة لمتغير مطابقة معين ولكنك تريد التأكد من أن حركة مرور الطلب لا تزال مستبعدة من تقييم القواعد.

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

جزء نص الطلب CRS 3.1 والإصدارات السابقة CRS 3.2 والإحدث
راس* حساسة لحالة الأحرف حساسة لحالة الأحرف
الكوكي* حساسة لحالة الأحرف حساس لحالة الأحرف
سلسلة الاستعلام* حساسة لحالة الأحرف حساس لحالة الأحرف
النص الأساسي المشفر بعنوان URL حساسة لحالة الأحرف حساس لحالة الأحرف
نص JSON حساسة لحالة الأحرف حساس لحالة الأحرف
نص XML غير معتمد غير معتمد
نص متعدد الأحزاب حساسة لحالة الأحرف حساس لحالة الأحرف

*اعتمادا على التطبيق الخاص بك، يمكن أن تكون أسماء وقيم الرؤوس وملفات تعريف الارتباط والاستعلام حساسة لحالة الأحرف أو غير حساسة.

إشعار

لمزيد من المعلومات ومساعدة استكشاف الأخطاء وإصلاحها، راجع استكشاف أخطاء WAF وإصلاحها.

طلب السمات حسب المفاتيح والقيم

عند تكوين استثناء، تحتاج إلى تحديد ما إذا كنت تريد استبعاد المفتاح أو القيمة من تقييم WAF.

على سبيل المثال، افترض أن طلباتك تتضمن هذا العنوان:

My-Header: 1=1

قد يتم الكشف عن قيمة العنوان (1=1) كهجوم من قبل WAF. ولكن إذا كنت تعرف أن هذه قيمة شرعية للسيناريو الخاص بك، يمكنك تكوين استثناء لقيمة العنوان. للقيام بذلك، يمكنك استخدام متغير مطابقة RequestHeaderValues، ويحتوي عامل التشغيل، والمحدد (My-Header). يوقف هذا التكوين تقييم كافة القيم للعنوان My-Header.

إشعار

تتوفر سمات الطلب حسب المفتاح والقيم فقط في CRS 3.2 أو أحدث و Bot Manager 1.0 أو أحدث.

تعمل سمات الطلب حسب الأسماء بنفس طريقة عمل سمات الطلب حسب القيم، ويتم تضمينها للتوافق مع الإصدارات السابقة مع CRS 3.1 والإصدارات السابقة. نوصي باستخدام سمات الطلب حسب القيم بدلاً من السمات حسب الأسماء. على سبيل المثال، استخدم RequestHeaderValues بدلاً من RequestHeaderNames.

في المقابل، إذا اكتشف WAF اسم الرأس (My-Header) كهجوم، يمكنك تكوين استثناء لمفتاح العنوان باستخدام سمة طلب RequestHeaderKeys. تتوفر السمة RequestHeaderKeys فقط في CRS 3.2 أو أحدث و Bot Manager 1.0 أو أحدث.

أمثلة سمة الطلب

يعرض الجدول التالي بعض الأمثلة حول كيفية تنظيم استبعادك لمتغير مطابقة معين.

سمة لاستبعاد مطابقة متغيرة selectorMatchOperator محدد المثال عينة طلب ما يتم استبعاده
سلسلة الاستعلام RequestArgKeys يساوي /etc/passwd أوري: http://localhost:8080/?/etc/passwd=test /etc/passwd
سلسلة الاستعلام RequestArgKeys يساويAny ‏‫غير متوفر‬ أوري: http://localhost:8080/?/etc/passwd=test&.htaccess=test2 /etc/passwd و.htaccess
سلسلة الاستعلام أسماء الطلبات يساوي text أوري: http://localhost:8080/?text=/etc/passwd /etc/passwd
سلسلة الاستعلام أسماء الطلبات يساويAny ‏‫غير متوفر‬ أوري: http://localhost:8080/?text=/etc/passwd&text2=.cshrc /etc/passwd و.cshrc
سلسلة الاستعلام قيم الطلبات يساوي text أوري: http://localhost:8080/?text=/etc/passwd /etc/passwd
سلسلة الاستعلام قيم الطلبات يساويAny ‏‫غير متوفر‬ أوري: http://localhost:8080/?text=/etc/passwd&text2=.cshrc /etc/passwd و.cshrc
نص الطلب RequestArgKeys يحتوي على sleep نص الطلب: {"sleep(5)": "test"} sleep(5)
نص الطلب RequestArgKeys يساويAny ‏‫غير متوفر‬ نص الطلب: {".zshrc": "value", "sleep(5)":"value2"} .zshrc وsleep(5)
نص الطلب أسماء الطلبات يساوي test نص الطلب: {"test": ".zshrc"} .zshrc
نص الطلب أسماء الطلبات يساويAny ‏‫غير متوفر‬ نص الطلب: {"key1": ".zshrc", "key2":"sleep(5)"} .zshrc وsleep(5)
نص الطلب قيم الطلبات يساوي test نص الطلب: {"test": ".zshrc"} .zshrc
نص الطلب قيم الطلبات يساويAny ‏‫غير متوفر‬ نص الطلب: {"key1": ".zshrc", "key2":"sleep(5)"} .zshrc وsleep(5)
الرأس مفتاح عنوان الطلب يساوي X-Scanner راس: {"X-Scanner": "test"} X-scanner
الرأس مفتاح عنوان الطلب يساويAny ‏‫غير متوفر‬ راس: {"X-Scanner": "test", "x-ratproxy-loop": "value"} X-Scanner وx-ratproxy-loop
الرأس أسماء عناوين الطلبات يساوي head1 راس: {"head1": "X-Scanner"} X-scanner
الرأس أسماء عناوين الطلبات يساويAny ‏‫غير متوفر‬ راس: {"head1": "myvar=1234", "User-Agent": "(hydra)"} myvar=1234 و(hydra)
الرأس قيم عنوان الطلب يساوي head1 راس: {"head1": "X-Scanner"} X-scanner
الرأس قيم عنوان الطلب يساويAny ‏‫غير متوفر‬ راس: {"head1": "myvar=1234", "User-Agent": "(hydra)"} myvar=1234 و(hydra)
ملف تعريف الارتباط RequestCookieKeys يحتوي على /etc/passwd راس: {"Cookie": "/etc/passwdtest=hello1"} /etc/passwdtest
ملف تعريف الارتباط RequestCookieKeys يساويAny ‏‫غير متوفر‬ راس: {"Cookie": "/etc/passwdtest=hello1", "Cookie": ".htaccess=test1"} /etc/passwdtest و.htaccess
ملف تعريف الارتباط أسماء الطلبات يساوي arg1 راس: {"Cookie": "arg1=/etc/passwd"} /etc/passwd
ملف تعريف الارتباط أسماء الطلبات يساويAny ‏‫غير متوفر‬ راس: {"Cookie": "arg1=/etc/passwd", "Cookie": "arg1=.cshrc"} /etc/passwd و.cshrc
ملف تعريف الارتباط قيم الطلبات يساوي arg1 راس: {"Cookie": "arg1=/etc/passwd"} /etc/passwd
ملف تعريف الارتباط قيم الطلبات يساويAny ‏‫غير متوفر‬ راس: {"Cookie": "arg1=/etc/passwd", "Cookie": "arg1=.cshrc"} /etc/passwd و.cshrc

إشعار

إذا قمت بإنشاء استثناء باستخدام selectorMatchOperator EqualsAny، تحويل أي شيء تضعه في حقل المحدد إلى "*" بواسطة الواجهة الخلفية عند إنشاء الاستبعاد.

نطاقات الاستبعاد

يمكن تكوين الاستثناءات لتطبيقها على مجموعة معينة من قواعد WAF، أو على مجموعات القواعد، أو عالميا عبر جميع القواعد.

تلميح

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

الاستثناءات لكل قاعدة

يمكنك تكوين استثناء لقاعدة معينة أو مجموعة من القواعد أو مجموعة قواعد معينة. يجب تحديد القاعدة أو القواعد التي ينطبق عليها الاستبعاد. تحتاج أيضاً إلى تحديد سمة الطلب التي يجب استبعادها من تقييم WAF. لاستبعاد مجموعة كاملة من القواعد، قم بتوفير المعلمة ruleGroupName فقط، تكون المعلمة rules مفيدة فقط عندما تريد تقييد الاستبعاد بقواعد معينة لمجموعة.

تتوفر استثناءات كل قاعدة عند استخدام مجموعة قواعد OWASP (CRS) الإصدار 3.2 أو أحدث أو إصدار مجموعة قواعد Bot Manager 1.0 أو أحدث.

مثال

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

يمكن أن يكون هناك أي عدد من الأسباب لتعطيل تقييم هذا العنوان. قد تكون هناك سلسلة يكتشفها WAF ويفترض أنها ضارة. على سبيل المثال، User-Agent قد يتضمن العنوان هجوم x=x حقن SQL الكلاسيكي في سلسلة. في بعض الحالات، يمكن أن يكون ذلك حركة مرور شرعية. لذلك قد تحتاج إلى استبعاد هذا العنوان من تقييم WAF.

يمكنك استخدام الأساليب التالية لاستبعاد User-Agent العنوان من التقييم بواسطة جميع قواعد حقن SQL:

لتكوين استثناء لكل قاعدة باستخدام مدخل Microsoft Azure، اتبع الخطوات التالية:

  1. انتقل إلى نهج WAF، وحدد القواعد المدارة.

  2. حدد إضافة استثناءات.

    لقطة شاشة لمدخل Azure تُظهر كيفية إضافة استثناء جديد لكل قاعدة لنهج W A F.

  3. في ينطبق على، حدد مجموعة قواعد CRS لتطبيق الاستبعاد عليها، مثل OWASP_3.2.

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

  4. حدد إضافة قواعد، وحدد القواعد التي تريد تطبيق الاستثناءات عليها.

  5. تكوين متغير المطابقة وعامل التشغيل والمحدد. ثم حدد حفظ.

يمكنك تكوين استثناءات متعددة.

يمكنك أيضاً استبعاد User-Agent العنوان من التقييم فقط حسب القاعدة 942270:

اتبع الخطوات الموضحة في المثال السابق، وحدد القاعدة 942270 في الخطوة 4.

الاستثناءات العالمية

يمكنك تكوين استثناء لتطبيقه عبر جميع قواعد WAF.

مثال

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

يوضح المثال التالي كيف يمكنك استبعاد وسيطة user سلسلة الاستعلام من التقييم:

لتكوين استثناء عمومي باستخدام مدخل Microsoft Azure، اتبع الخطوات التالية:

  1. انتقل إلى نهج WAF، وحدد القواعد المدارة.

  2. حدد إضافة استثناءات.

    لقطة شاشة لمدخل Azure تُظهر كيفية إضافة استثناء عالمي جديد لكل قاعدة لنهج W A F.

  3. في ينطبق على، حدد عمومي

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

  4. تكوين متغير المطابقة وعامل التشغيل والمحدد. ثم حدد حفظ.

يمكنك تكوين استثناءات متعددة.

لذلك إذا تم فحص عنوان URL http://www.contoso.com/?user%3c%3e=joe بواسطة WAF، فإنه لا يقيم سلسلة joe، ولكنه لا يزال يقيم اسم المعلمة المستخدم٪3c٪3e.

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