إشعار
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تسجيل الدخول أو تغيير الدلائل.
يتطلب الوصول إلى هذه الصفحة تخويلاً. يمكنك محاولة تغيير الدلائل.
يوفر 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
- Azure PowerShell
- Azure CLI
- Bicep
- قالب ARM
لتكوين استثناء لكل قاعدة باستخدام مدخل Microsoft Azure، اتبع الخطوات التالية:
انتقل إلى نهج WAF، وحدد القواعد المدارة.
حدد إضافة استثناءات.
في ينطبق على، حدد مجموعة قواعد CRS لتطبيق الاستبعاد عليها، مثل OWASP_3.2.
حدد إضافة قواعد، وحدد القواعد التي تريد تطبيق الاستثناءات عليها.
تكوين متغير المطابقة وعامل التشغيل والمحدد. ثم حدد حفظ.
يمكنك تكوين استثناءات متعددة.
يمكنك أيضاً استبعاد User-Agent العنوان من التقييم فقط حسب القاعدة 942270:
- مدخل Microsoft Azure
- Azure PowerShell
- Azure CLI
- Bicep
- قالب ARM
اتبع الخطوات الموضحة في المثال السابق، وحدد القاعدة 942270 في الخطوة 4.
الاستثناءات العالمية
يمكنك تكوين استثناء لتطبيقه عبر جميع قواعد WAF.
مثال
لنفترض أنك تريد استبعاد القيمة في معلمة المستخدم التي تم تمريرها في الطلب عبر عنوان URL. على سبيل المثال، لنفترض أنه من الشائع في البيئة الخاصة بك أن تحتوي وسيطة user سلسلة الاستعلام على سلسلة تعرضها WAF كمحتوى ضار، لذلك تمنعها. يمكنك استبعاد جميع وسيطات سلسلة الاستعلام حيث يبدأ الاسم بالكلمة user، بحيث لا يقيم WAF قيمة الحقل.
يوضح المثال التالي كيف يمكنك استبعاد وسيطة user سلسلة الاستعلام من التقييم:
- مدخل Microsoft Azure
- Azure PowerShell
- Azure CLI
- Bicep
- قالب ARM
لتكوين استثناء عمومي باستخدام مدخل Microsoft Azure، اتبع الخطوات التالية:
انتقل إلى نهج WAF، وحدد القواعد المدارة.
حدد إضافة استثناءات.
في ينطبق على، حدد عمومي
تكوين متغير المطابقة وعامل التشغيل والمحدد. ثم حدد حفظ.
يمكنك تكوين استثناءات متعددة.
لذلك إذا تم فحص عنوان URL http://www.contoso.com/?user%3c%3e=joe بواسطة WAF، فإنه لا يقيم سلسلة joe، ولكنه لا يزال يقيم اسم المعلمة المستخدم٪3c٪3e.
الخطوات التالية
- بعد تكوين إعدادات WAF الخاصة بك، يمكنك معرفة كيفية عرض سجلات WAF الخاصة بك. لمزيد من المعلومات، راجع عمليات التشخيص في Application Gateway.
- تعرف على المزيد حول أمان شبكة Azure