تأمين تطبيقات الويب باستخدام جدار حماية تطبيق الويب Azure (WAF)
14/01/2025
تهدف هذه المقالة الفنية والتعليمية إلى توجيه محللي الأمن ومسؤولي تكنولوجيا المعلومات ومهندسي الأنظمة في تنفيذ وتكوين جدار حماية تطبيقات الويب Azure (WAF) لحماية تطبيقات الويب من الهجمات الشائعة. في المشهد الرقمي حيث تعد تطبيقات الويب بوابة للعديد من الشركات، فقد أصبحت أهدافًا متكررة لمجموعة متنوعة من الهجمات الإلكترونية، مثل حقن SQL، والبرمجة النصية عبر المواقع (XSS)، وغيرها من نقاط الضعف العشرة الأوائل في OWASP. يوفر Azure WAF طبقة أساسية من الحماية للتخفيف من هذه المخاطر، وضمان توفر البيانات وسلامتها وسريتها [1].
مقدمة
تعد تطبيقات الويب مكونات مهمة للبنية التحتية لتكنولوجيا المعلومات لجميع المؤسسات تقريبًا. ومع ذلك، فإن تعرضهم للإنترنت يجعلهم عرضة للهجمات التي يمكن أن تؤدي إلى اختراق البيانات ومقاطعة الخدمات والإضرار بسمعة الشركة. يعمل جدار حماية تطبيقات الويب (WAF) بمثابة وكيل عكسي، حيث يقوم بفحص حركة مرور HTTP/HTTPS القادمة والخروج من تطبيق الويب، وتحديد الطلبات الضارة وحظرها قبل وصولها إلى خادم التطبيق. يوفر Azure WAF، المتوفر كأحد ميزات Azure Application Gateway أو Azure Front Door، حماية مركزية وقابلة للتطوير لتطبيقات الويب الخاصة بك المستضافة في Azure أو حتى في البيئات المختلطة [2].
سيغطي هذا الدليل العملي المفاهيم الأساسية لـ Azure WAF، وأنماط التشغيل الخاصة به (الكشف والوقاية)، وتكوين سياسات WAF مع مجموعات القواعد المُدارة (مجموعة قواعد OWASP الأساسية - CRS) والقواعد المخصصة. سيتم توفير إرشادات خطوة بخطوة لنشر WAF مع Azure Application Gateway، واختبار فعاليتها ضد الهجمات الشائعة والتحقق من صحة النتائج، بالإضافة إلى مناقشة أفضل الممارسات ونصائح استكشاف الأخطاء وإصلاحها. الهدف هو تمكين القارئ من تكوين وإدارة Azure WAF بشكل مستقل ومهني وموثوق، وحماية تطبيقات الويب الخاصة به من التهديدات الأكثر انتشارًا.
ما سبب أهمية Azure WAF لحماية تطبيقات الويب؟
- الحماية الشاملة: الدفاع ضد هجمات الويب الشائعة، بما في ذلك حقن SQL، والبرمجة النصية عبر المواقع (XSS)، وإدراج الملفات، وهجمات الروبوتات، وغيرها من نقاط الضعف العشرة الأوائل في OWASP [3].
- القواعد المُدارة: تستخدم مجموعات القواعد المُدارة (مثل OWASP CRS) التي يتم تحديثها تلقائيًا بواسطة Microsoft، مما يضمن الحماية ضد أحدث التهديدات دون تدخل يدوي.
- القواعد المخصصة: تسمح بإنشاء قواعد مخصصة لتلبية متطلبات الأمان الخاصة بالتطبيقات، أو حظر أنماط حركة مرور محددة، أو الحماية من الثغرات الأمنية التي لا تغطيها القواعد المُدارة.
- أوضاع التشغيل المرنة: تعمل في وضع "الاكتشاف" (يراقب الهجمات ويسجلها فقط) أو "المنع" (يمنع الهجمات بشكل فعال)، مما يسمح بالتحكم التدريجي في التنفيذ.
- التكامل الأصلي مع Azure: يتكامل بسلاسة مع Azure Application Gateway (للتطبيقات الداخلية) وAzure Front Door (للتطبيقات العالمية)، مما يوفر حلاً كاملاً لتسليم التطبيقات مع الأمان المضمن.
- قابلية التوسع والتوافر العالي: استفد من قابلية التوسع والتوافر العالي لخدمات تسليم تطبيقات Azure، مما يضمن أن الحماية نشطة وفعالة دائمًا.
- الامتثال: يساعد المؤسسات على تلبية المتطلبات التنظيمية ومعايير الأمان التي تتطلب حماية تطبيقات الويب.
المتطلبات الأساسية
لتنفيذ Azure WAF، ستحتاج إلى العناصر التالية:
- اشتراك Azure النشط: اشتراك Azure لإنشاء الموارد وإدارتها.
- الوصول الإداري: حساب يتمتع بالأذونات اللازمة لإنشاء الموارد وإدارتها مثل بوابات التطبيقات والأبواب الأمامية وسياسات WAF (مثل "المتعاون" أو "مسؤول الشبكة").
- تطبيق الويب الموجود: تطبيق ويب (مستضاف في Azure أو في أي مكان آخر) تريد حمايته. في هذا الدليل، سنفترض وجود تطبيق ويب بسيط يمكن الوصول إليه عبر بوابة التطبيقات.
- الشبكة الافتراضية (VNet) والشبكات الفرعية: شبكة افتراضية وشبكات فرعية تم تكوينها لبوابة التطبيق وتطبيق الويب.
خطوة بخطوة: تنفيذ Azure WAF باستخدام بوابة التطبيق
لنقم بتكوين Azure WAF لحماية ملفتطبيق ويب باستخدام بوابة تطبيق Azure.
1. إنشاء بوابة تطبيق Azure باستخدام WAF
- افتح المتصفح الخاص بك وانتقل إلى بوابة Azure:
https://portal.azure.com. - قم بتسجيل الدخول باستخدام حساب لديه الأذونات اللازمة.
- في حقل البحث العلوي، اكتب "بوابة التطبيق" وحدده من النتائج.
-
انقر فوق "+ إنشاء".
-
الأساسيات:
- الاشتراك: حدد اشتراكك.
- مجموعة الموارد: أنشئ مجموعة موارد جديدة (على سبيل المثال،
rg-waf-appgw) أو حدد مجموعة موجودة. - اسم بوابة التطبيق: أدخل اسمًا (على سبيل المثال:
appgw-waf-01). - المنطقة: حدد المنطقة.
- المستوى: حدد
الإصدار القياسي v2(يتوفر WAF فقط في المستوى v2). - تمكين WAF: حدد "نعم".
- اسم سياسة WAF: قم بتسمية سياسة WAF (على سبيل المثال،
wafpolicy-appgw-01). - وضع WAF: ابدأ بـ "الاكتشاف" لمراقبة القواعد وضبطها قبل الانتقال إلى "الوقاية".
-
انقر فوق "التالي: الواجهات الأمامية".
-
الواجهات الأمامية:
- نوع عنوان IP للواجهة الأمامية: حدد
عام. - عنوان IP العام: انقر على
+إضافة جديدوقم بتسمية عنوان IP العام (على سبيل المثال:pip-appgw-waf).
- نوع عنوان IP للواجهة الأمامية: حدد
-
انقر فوق "التالي: الواجهات الخلفية".
-
الخلفيات:
- انقر على "+إضافة تجمع خلفي".
- اسم تجمع الواجهة الخلفية: أعطه اسمًا (على سبيل المثال،
app-backend-pool). - إضافة مجموعة خلفية بدون أهداف: حدد "لا".
- نوع الوجهة: حدد
عنوان IP أو FQDN. - عنوان IP/FQDN: أدخل عنوان IP أو FQDN لتطبيق الويب الخاص بك (على سبيل المثال:
10.0.0.4لجهاز افتراضي في VNet، أو FQDN لخدمة التطبيقات). - انقر فوق "إضافة".
-
انقر فوق "التالي: التكوين".
-
الإعداد:
- إعدادات التوجيه: انقر على
+إضافة قاعدة توجيه. - اسم القاعدة: أعطها اسمًا (على سبيل المثال:
rule-http). - الأولوية: اترك الإعداد الافتراضي.
- المستمع:
- اسم المستمع: أدخل اسمًا (على سبيل المثال:
listener-http). - عنوان IP للواجهة الأمامية: حدد عنوان IP العام الذي تم إنشاؤه.
- البروتوكول: حدد
HTTP(للبدء، يمكنك إضافة HTTPS لاحقًا). - المنفذ:
80.
- اسم المستمع: أدخل اسمًا (على سبيل المثال:
- الأهداف الخلفية:
- نوع الهدف: حدد
Backend Pool. - تجمع الواجهة الخلفية: حدد "تجمع الواجهة الخلفية للتطبيق".
- تكوين الواجهة الخلفية: انقر على
+إضافة جديد.- اسم إعداد الواجهة الخلفية: أعطه اسمًا (على سبيل المثال،
http-setting). - بروتوكول الواجهة الخلفية:
HTTP. - المنفذ الخلفي:
80(أو منفذ تطبيق الويب الخاص بك). - استخدام مسبار مخصص: حدد
لا(في هذا المثال البسيط). - انقر فوق "إضافة".
- اسم إعداد الواجهة الخلفية: أعطه اسمًا (على سبيل المثال،
- نوع الهدف: حدد
- انقر فوق "إضافة" في قاعدة التوجيه.
- إعدادات التوجيه: انقر على
-
انقر فوق "التالي: العلامات".
- انقر فوق "التالي: مراجعة + إنشاء".
-
قم بمراجعة الإعدادات ثم انقر فوق "إنشاء".
- الشرح: تقوم هذه العملية بإنشاء بوابة تطبيق مع ملف WAF مرتبط. سيبدأ WAF بفحص حركة المرور في وضع "الكشف".
2. تكوين قواعد WAF المُدارة والمخصصة
بعد النشر، يمكنك ضبط سياسة WAF.
- في بوابة Azure، انتقل إلى بوابة التطبيق الخاصة بك (
appgw-waf-01). - في جزء التنقل الأيسر، ضمن "الإعدادات"، حدد جدار حماية تطبيق الويب.
-
انقر فوق اسم سياسة WAF الخاصة بك (
wafpolicy-appgw-01). -
وضع السياسة: في قسم
نظرة عامة، يمكنك تغييرالوضعمنالاكتشافإلىالمنععندما تكون واثقًا من أن قواعدك لا تحظر حركة المرور المشروعة. -
القواعد المُدارة:
- في جزء التنقل الأيسر لسياسة WAF، حدد القواعد المُدارة.
- تأكد من أن "مجموعة القواعد الافتراضية لـ OWASP" (على سبيل المثال، "OWASP_CRS/3.2") "ممكّنة".
- يمكنك تعطيل قواعد محددة ضمن المجموعة المُدارة إذا تسببت في نتائج إيجابية خاطئة، ولكن قم بذلك بحذر وبعد دراسة متأنية فقط.
-
القواعد المخصصة:
- في جزء التنقل الأيسر لسياسة WAF، حدد القواعد المخصصة.
- انقر على
+إضافة قاعدة مخصصة. - اسم القاعدة: أعطها اسمًا (على سبيل المثال:
BloquearIPMalicioso). - الأولوية: قم بتعيين الأولوية (الأرقام الأصغر لها أولوية أعلى).
- يكتبالقاعدة:
مطابقة. - الحالة:
- نوع المتغير:
RemoteAddress. - المشغل:
IPMatch. - القيمة: أدخل عنوان IP أو نطاق CIDR الذي تريد حظره (على سبيل المثال:
192.168.1.10/32).
- نوع المتغير:
-
الإجراء: حدد "حظر".
-
الشرح: تسمح لك القواعد المخصصة بتحديد منطق الحظر بناءً على معايير محددة مثل عناوين IP ورؤوس HTTP وسلاسل الاستعلام وما إلى ذلك.
-
انقر فوق إضافة ثم حفظ في سياسة WAF.
3. مراقبة WAF ومراجعة السجلات
يعد الرصد ضروريًا لفهم فعالية WAF وتعديل السياسات.
- في بوابة Azure، انتقل إلى بوابة التطبيق الخاصة بك (
appgw-waf-01). - في جزء التنقل الأيمن، ضمن "المراقبة"، حدد سجلات التشخيص.
- انقر فوق "+إضافة تكوين تشخيصي".
- اسم التكوين التشخيصي: أعطه اسمًا (على سبيل المثال:
diag-waf). - فئات السجل: حدد "ApplicationGatewayAccessLog" و"ApplicationGatewayFirewallLog".
- تفاصيل الوجهة: حدد
إرسال إلى مساحة عمل Log Analyticsواختر مساحة العمل الخاصة بك. -
انقر حفظ.
-
بعد بضع دقائق، انتقل إلى مساحة عمل Log Analytics الخاصة بك.
- في جزء التنقل الأيمن، حدد السجلات.
- استخدم استعلامات KQL (لغة استعلام Kusto) لتحليل سجلات WAF:
- لمشاهدة جميع أحداث WAF:
كوستو AzureDiagnostics | حيث ResourceProvider == "MICROSOFT.NETWORK" | حيث الفئة == "ApplicationGatewayFirewallLog" | مشروع TimeGenerated، hostname_s، requestUri_s، الرسالة، action_s، Policy_s | الترتيب حسب TimeGenerated desc - لعرض الهجمات المحظورة (إذا كان WAF في وضع "المنع"):
كوستو AzureDiagnostics | حيث ResourceProvider == "MICROSOFT.NETWORK" | حيث الفئة == "ApplicationGatewayFirewallLog" | حيث action_s == "محظور" | مشروع TimeGenerated، hostname_s، requestUri_s، الرسالة، RuleId_s | الترتيب حسب TimeGenerated desc
- لمشاهدة جميع أحداث WAF:
التحقق والاختبار
يعد اختبار WAF أمرًا بالغ الأهمية للتأكد من أنه يحظر الهجمات المتوقعة ولا يحظر حركة المرور المشروعة (الإيجابيات الكاذبة).
1. اختبار الهجمات الشائعة (حقن SQL، XSS)
-
السيناريو: حاول الوصول إلى تطبيق الويب الخاص بك من خلال بوابة التطبيق (باستخدام عنوان IP العام أو FQDN) ومحاكاة هجوم حقن SQL على عنوان URL أو معلمة نموذج.
- مثال لعنوان URL مع محاولة إدخال SQL (لا يتم تشغيله في الإنتاج دون إذن):
http://<seu_ip_publico_appgw>/index.php?id=1' OR '1'='1 - مثال لعنوان URL مع محاولة XSS:
http://<seu_ip_publico_appgw>/search?query=<script>alert('XSS')</script>
- مثال لعنوان URL مع محاولة إدخال SQL (لا يتم تشغيله في الإنتاج دون إذن):
-
الإجراء المتوقع (وضع الكشف): إذا كان WAF في وضع "الاكتشاف"، فيجب السماح بالطلب، ولكن يجب أن تسجل سجلات WAF في Log Analytics الهجوم والقاعدة التي اكتشفته.
-
الإجراء المتوقع (وضع المنع): إذا كان WAF في وضع
المنع، فيجب حظر الطلب، ويجب أن يعرض المتصفح صفحة خطأ WAF (عادةً خطأ HTTP 403 محظور). -
التحقق: تحقق من سجلات WAF في Log Analytics للتأكد من اكتشاف الهجمات (في وضع الكشف) أو حظرها (في وضع المنع).
2. اختبار القواعد المخصصة (حظر IP)
- السيناريو: حاول الوصول إلى تطبيق الويب الخاص بك من عنوان IP الذي قمت بتكوينه في القاعدة المخصصة لحظر IP.
- الإجراء المتوقع: يجب حظر الوصول، ويجب أن يعرض المتصفح صفحة خطأ WAF.
- التحقق: تحقق من سجلات WAF في Log Analytics للتأكد من حظر عنوان IP بواسطة القاعدة المخصصة.
نصائح أمنية وأفضل الممارسات
- البدء في وضع الكشف: قم دائمًا بنشر WAF في وضع "الاكتشاف" في البداية. راقب السجلات بعناية لتحديد النتائج الإيجابية الخاطئة وضبط القواعد قبل التبديل إلى وضع "الوقاية".
- ضبط WAF: الضبط الدقيق أمر بالغ الأهمية. قم بتعطيل قواعد محددة تولد نتائج إيجابية خاطئة (حظر حركة المرور المشروعة) أو قم بإضافة قواعد استبعاد لمعلمات محددة. تجنب تعطيل مجموعات القواعد بأكملها.
- القواعد المخصصة: استخدم القواعد المخصصة للتعامل مع متطلبات الأمان المحددة لتطبيقكo أو للتخفيف من الثغرات الأمنية المكتشفة حديثًا قبل تحديث القواعد المُدارة.
- تحديثات CRS: حافظ على تحديث مجموعة القواعد المُدارة (OWASP CRS) لضمان الحماية ضد أحدث التهديدات. عادةً ما يتم تحديث Azure WAF تلقائيًا، ولكن تحقق من الإصدار.
- التكامل مع Azure Front Door: بالنسبة لتطبيقات الويب العالمية أو تلك التي تتطلب تحسين الأداء والتوجيه المتقدم، فكر في نشر WAF على Azure Front Door. وهذا يوفر الحماية على حافة شبكة Microsoft العالمية.
- المراقبة والتنبيه: قم بتكوين التنبيهات في Azure Monitor للأحداث الأمنية لـ WAF، مثل الهجمات المحظورة أو الحالات الشاذة. قم بدمج سجلات WAF مع SIEM (مثل Microsoft Sentinel) للحصول على عرض مركزي.
- اختبار الأمان المنتظم: قم بإجراء اختبارات الاختراق وعمليات فحص الثغرات الأمنية بشكل منتظم على تطبيقات الويب الخاصة بك لتحديد نقاط الضعف الجديدة والتحقق من فعالية WAF.
- مبدأ الامتياز الأقل: تأكد من أن المستخدمين المصرح لهم فقط لديهم أذونات لتكوين سياسات WAF وإدارتها.
استكشاف الأخطاء وإصلاحها الشائعة
- WAF لا يمنع الهجمات المتوقعة:
- تأكد من أن WAF في وضع "المنع" وليس في وضع "الاكتشاف".
- تأكد من تمكين مجموعة القواعد المُدارة (OWASP CRS).
- قم بمراجعة سجلات WAF في Log Analytics لمعرفة ما إذا تم اكتشاف الهجوم وما هي القاعدة التي تم تشغيلها. قد تحتاج إلى ضبط حساسية CRS أو إضافة قاعدة مخصصة.
- تأكد من عدم وجود قواعد استبعاد أو قوائم بيضاء تسمح بحركة مرور ضارة.
- WAF يحظر حركة المرور المشروعة (الإيجابيات الكاذبة):
- ابدأ بتحليل سجلات WAF الخاصة بك في Log Analytics لتحديد القاعدة التي تمنع حركة المرور المشروعة.
- بالنسبة للقاعدة المحددة، يمكنك:
- تعطيل قاعدة محددة (الملاذ الأخير).
- أضف قاعدة استبعاد للمعلمة أو الرأس المحدد الذي يسبب النتيجة الإيجابية الخاطئة.
- ضبط عتبة تسجيل الشذوذ (في حالة استخدام CRS في وضع تسجيل الشذوذ).
- فكر في العودة إلى وضع "الاكتشاف" مؤقتًا لضبط القواعد.
- انخفض أداء التطبيق بعد تمكين WAF:
- يضيف WAF قدرًا صغيرًا من الكمون بسبب فحص حركة المرور. تأكد من أن حجم بوابة التطبيق أو الباب الأمامي مناسب.
- التحقق من سجلات أداء بوابة التطبيق في Azure Monitor.
- WAF غير مرتبط بالتطبيق الصحيح:
- تأكد من أن سياسة WAF مرتبطة ببوابة التطبيق أو الباب الأمامي الصحيح.
- تأكد من أن حركة المرور إلى تطبيق الويب الخاص بك تمر فعليًا عبر بوابة التطبيق/الباب الأمامي مع تمكين WAF.
الخلاصة
يعد Azure Web Application Firewall (WAF) وسيلة دفاع أساسية لحماية تطبيقات الويب ضد عدد لا يحصى من الهجمات الإلكترونية. من خلال توفير طبقة من فحص حركة المرور والتصفية على حافة الشبكة، يعمل WAF كدرع يحمي من نقاط الضعف المعروفة وتهديدات يوم الصفر. إن مرونة استخدام مجموعات القواعد المُدارة والمخصصة، إلى جانب التكامل الأصلي مع خدمات تسليم تطبيقات Azure، تجعل من Azure WAF حلاً قويًا وقابلاً للتطوير لأي مؤسسة. ومن خلال التنفيذ الدقيق والضبط الدقيق للسياسات والمراقبة المستمرة، يمكن لمتخصصي الأمن التأكد من أن تطبيقات الويب الخاصة بهم تظل آمنة ومتوفرة ومتوافقة، مما يعزز الوضع الأمني العام للمؤسسة في مواجهة مشهد التهديدات المتطور باستمرار.
المراجع:
[1] مايكروسوفت تعلم. ما هو جدار حماية تطبيق ويب Azure؟. متوفر على: https://learn.microsoft.com/pt-br/azure/web-application-firewall/overview [2] مايكروسوفت تعلم. جدار حماية تطبيق الويب (WAF) على بوابة تطبيق Azure. متوفر على: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/ag-overview [3] مؤسسة أواسب. أفضل 10 أوواسب. متاح على: https://owasp.org/www-project-top-ten/ [4] مايكروسوفت تعلم. * إنشاء سياسات جدار الحمايةl بوابة تطبيق الويب (WAF) لبوابة تطبيق Azure. متوفر على: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/create-waf-policy-ag [5] مايكروسوفت تعلم. قواعد WAF CRS ومجموعات القواعد. متوفر على: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/application-gateway-waf-collection-rules [6] مايكروسوفت تعلم. * مراقبة وتسجيل WAF . متوفر على: https://learn.microsoft.com/pt-br/azure/web-application-firewall/ag/waf-diagnostics