⁧⁩برنامج تعليمي: إنشاء بوابة تطبيق باستخدام جدار حماية تطبيق ويب باستخدام مدخل Microsoft Azure⁧⁩

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

في هذا البرنامج التعليمي، تتعلم كيفية:

  • إنشاء بوابة تطبيق مع تمكين جدار حماية تطبيق ويب
  • إنشاء الأجهزة الظاهرية المستخدمة بصفتها خوادم خلفية
  • إنشاء حساب تخزين وتكوين التشخيص
  • اختبار بوابة التطبيق

رسم تخطيطي لمثال جدار حماية تطبيق ويب.

ملاحظة

نوصي باستخدام وحدة Azure Az PowerShell للتفاعل مع Azure. راجع تثبيت Azure PowerShell للبدء. لمعرفة كيفية الترحيل إلى الوحدة النمطية Az PowerShell، راجع ترحيل Azure PowerShell من AzureRM إلى Az.

المتطلبات الأساسية

إذا لم يكن لديك اشتراك Azure، فأنشئ حساباً مجانياً قبل أن تبدأ.

تسجيل الدخول إلى Azure

سجل الدخول إلى مدخل Azure.

إنشاء بوابة تطبيق

  1. حدد "Create a resource" في القائمة اليسرى لبوابة Azure. تظهر النافذة New.

  2. حدد "Networking" ثم "Application Gateway" في قائمة "Featured" .

«علامة تبويب الأساسيات»

  1. من علامة التبويب "Basics" ، أدخل هذه القيم لإعدادات بوابة التطبيق التالية:

    • "Resource group" : حدد "myResourceGroupAG" لمجموعة الموارد. في حال لم تكن موجودة، حدد "Create new" لإنشائها.

    • "Application gateway name" : أدخل "myAppGateway" لاسم بوابة التطبيق.

    • Tier: حدد WAF V2.

    • نهج WAF: حدد Create new، واكتب اسما للنهج الجديد، ثم حدد OK. يؤدي هذا إلى إنشاء نهج WAF أساسي مع مجموعة قواعد أساسية مدارة (CRS).

      لقطة شاشة من علامة التبويب

  2. لكي يتواصل Azure بين الموارد التي تنشئها، فإنه يحتاج إلى شبكة ظاهرية. يمكنك إما إنشاء شبكة ظاهرية جديدة أو استخدام شبكة موجودة. في هذا المثال، تنشئ شبكة ظاهرية جديدة في نفس الوقت الذي تنشئ فيه بوابة التطبيق. يجري إنشاء مثيلات Application Gateway في شبكات فرعية منفصلة. تُنشئ شبكتين فرعيتين في هذا المثال: واحدة لـ application gateway، والأخرى للخوادم الخلفية.

    ضمن Configure virtual network، حدد Create new لإنشاء شبكة افتراضية جديدة. من نافذة "Create virtual network" التي تفتح، أدخل القيم التالية لإنشاء شبكة ظاهرية وشبكتين فرعيتين:

    • "Name" : أدخل myVNet لاسم الشبكة الظاهرية.

    • "Subnet name" (شبكة Application Gateway الفرعية): تعرض شبكة Subnets شبكة فرعية باسم "Default" . غيِّر اسم هذه الشبكة الفرعية إلى "myAGSubnet" .
      قد لا تحتوي الشبكة الفرعية لبوابة التطبيق إلا على بوابات تطبيق ما. لا يسمح بأي موارد أخرى.

    • "Subnet name" (الشبكة الفرعية لخادم الواجهة الخلفية): من الصف الثاني في شبكة Subnets، اكتب myBackendSubnet في العمود "Subnet name" .

    • "Address range" (الشبكة الفرعية لخادم الواجهة الخلفية): في الصف الثاني من شبكة "Subnets" ، أدخل نطاق عناوين لا يتداخل مع نطاق عناوين "myAGSubnet" . على سبيل المثال، إذا كان نطاق عناوين "myAGSubnet" هو 10.21.0.0/24، أدخل 10.21.1.0/24 لنطاق العناوين "myBackendSubnet" .

    حدد "OK" لإغلاق نافذة "Create virtual network" وحفظ إعدادات الشبكة الظاهرية.

    لقطة شاشة لإنشاء بوابة تطبيق جديدة: إنشاء شبكة ظاهرية.

  3. من علامة التبويب "Basics" ، وافق على القيم الافتراضية للإعدادات الأخرى ثم حدد "Next: Frontends" .

علامة تبويب "Frontends"

  1. في علامة التبويب Frontends، تحقق من تعيين Frontend IP address type إلى Public.
    يمكنك تكوين عنوان IP للواجهة الأمامية ليكون عام أو كليهما وفقا لحالة الاستخدام الخاصة بك. في هذا المثال، تختار عنوان Public Frontend IP.

    ملاحظة

    بالنسبة إلى Application Gateway v2 SKU، يتم دعم أنواع عناوين IP العامةوكل من الواجهة الأمامية اليوم. تكوين IP للواجهة الأمامية الخاصة فقط غير مدعوم حاليا.

  2. حدد "Add new" لـ عنوان IP العام وأدخل myAGPublicIPAddress لاسم عنوان IP العام، ثم حدد "OK" .

    لقطة شاشة لإنشاء بوابة تطبيق جديدة: الواجهات الأمامية.

  3. حدد Next: Backends.

علامة تبويب "Backends"

يُستخدم التجمع الخلفي لتوجيه الطلبات إلى الخوادم الخلفية التي تخدم الطلب. يمكن أن تتكون تجمعات الواجهة الخلفية من بطاقات NICs، ومجموعات مقياس الجهاز الظاهري، وعناوين IPs العامة، وعناوين IPs الداخلية، وأسماء المجال المؤهلة بالكامل (FQDN)، والنهايات الخلفية متعددة المستأجرين مثل Azure App Service. في هذا المثال، ستقوم بإنشاء تجمع خلفي فارغ مع بوابة التطبيق الخاصة بك ثم إضافة أهداف الخلفية إلى تجمع الواجهة الخلفية لاحقاً.

  1. في علامة التبويب Backends، حدد Add a backend pool.

  2. في نافذة Add a backend pool التي تفتح، أدخِل القيم التالية لإنشاء تجمع خلفي فارغ:

    • "Name" : أدخل myBackendPool لاسم تجمع الواجهة الخلفية.
    • "Add backend pool without targets" : حدد "Yes" لإنشاء تجمع واجهة خلفية دون أهداف. تضيف أهداف الواجهة الخلفية بعد إنشاء بوابة التطبيق.
  3. في نافذة Add a backend pool حدد Add لحفظ تكوين التجمع الخلفي والعودة إلى علامة التبويب Backends.

    لقطة شاشة لإنشاء بوابة تطبيق جديدة: الواجهات الخلفية.

  4. في علامة التبويب Backends حدد Next: Configuration.

علامة تبويب "Configuration"

في علامة التبويب Configuration ستوصل التجمع الأمامي والخلفي التي أنشأته باستخدام قاعدة تحويل.

  1. حدد "Add a routing rule" من عمود "Routing rules" .

  2. من نافذة "Add a routing rule" التي تفتح، أدخل myRoutingRule في "Rule name" .

  3. بالنسبة لـ Priority، اكتب رقم الأولوية.

  4. تتطلب قاعدة التحويل وجود وحدة إصغاء. من علامة التبويب "Listener" داخل نافذة "Add a routing rule" ، أدخل القيم التالية لوحدة الإصغاء:

    • "Listener name" : أدخل myListener لاسم وحدة الإصغاء.

    • عنوان IP للواجهة الأمامية: حدد عام لاختيار عنوان IP العام الذي أنشأته للواجهة الأمامية.

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

    لقطة شاشة من

  5. في علامة التبويب "Backend targets" ، حدد myBackendPool لـ "Backend target" .

  6. بالنسبة لـ Backend settings، حدد Add new لإنشاء إعداد واجهة خلفية جديد. يحدد هذا الإعداد سلوك قاعدة التحويل. في نافذة Add Backend setting التي تفتح، أدخل myBackendSettingلاسم إعدادات الخلفية. وافق على القيم الافتراضية للإعدادات الأخرى في النافذة، ثم حدد Add للعودة إلى نافذة Add a routing rule.

    لقطة شاشة من

  7. من نافذة "Add a routing rule" ، حدد "Add" لحفظ قاعدة التحويل والعودة إلى علامة التبويب "Configuration" .

    لقطة شاشة من

  8. حدد Next: Tags ثم Next: Review + create.

إنشاء علامة التبويب + مراجعتها

راجع الإعدادات في علامة التبويب "Review + create" ، ثم حدد "Create" لإنشاء الشبكة الظاهرية وعنوان IP العام وبوابة التطبيق. قد يستغرق الأمر عدة دقائق لـ Azure لإنشاء application gateway.

انتظر حتى ينتهي التوزيع بنجاح قبل الانتقال إلى القسم التالي.

إضافة أهداف الخلفية

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

لفعل ذلك، ستقوم بما يلي:

  1. إنشاء جهازين ظاهريين جديدين لنظام التشغيل Linux، myVMوmyVM2، لاستخدامهما كخوادم خلفية.
  2. قم بتثبيت NGINX على الأجهزة الظاهرية للتحقق من إنشاء بوابة التطبيق بنجاح.
  3. أضِف خوادم خلفية إلى التجمع الخلفي.

إنشاء جهاز ظاهري

  1. في مدخل Microsoft Azure، حدد "Create a resource" . تظهر نافذة Create a resource .

  2. ضمن الجهاز الظاهري، حدد إنشاء.

  3. أدخل هذه القيم في علامة التبويب "Basics" لإعدادات الجهاز الظاهري التالية:

    • "Resource group" : حدد "myResourceGroupAG" لاسم مجموعة الموارد.
    • "Virtual machine name" : أدخل myVM لاسم الجهاز الظاهري.
    • الصورة: Ubuntu Server 20.04 LTS - Gen2.
    • نوع المصادقة: كلمة المرور
    • اسم المستخدم: أدخل اسما لاسم مستخدم المسؤول.
    • "Password" : عين كلمة مرور المسؤول.
    • المنافذ العامة الواردة: حدد بلا.
  4. اقبل الإعدادات الافتراضية الأخرى ثم حدد "Next: Disks" .

  5. وافق على الإعدادات الافتراضية لعلامة التبويب "Disks" ثم حدد "Next: Networking" .

  6. في علامة التبويب "Networking" ، تحقق من تحديد myVNet لـ "Virtual network" وتعيين "Subnet" على myBackendSubnet.

  7. بالنسبة لـPublic IP، اخترNone.

  8. اقبل الإعدادات الافتراضية الأخرى ثم حدد "Next: Management" .

  9. حدد Next: Monitoring، وقم بتعيين Boot diagnostics إلى Disable. اقبل الإعدادات الافتراضية، ثم حدد Review + create.

  10. في علامة التبويب Review + create راجع الإعدادات، وصحح أي أخطاء في التحقق من السلامة، ثم حدد Create.

  11. انتظر حتى يتكمل إنشاء الجهاز الظاهري قبل المتابعة.

تثبيت NGINX للاختبار

في هذا المثال، يمكنك تثبيت NGINX على الأجهزة الظاهرية فقط للتحقق من إنشاء Azure لبوابة التطبيق بنجاح.

  1. افتح Bash Cloud Shell. للقيام بذلك، حدد أيقونة Cloud Shell من شريط التنقل العلوي لمدخل Microsoft Azure ثم حدد Bash من القائمة المنسدلة.

    لقطة شاشة تعرض Bash Cloud Shell.

  2. قم بتشغيل الأمر التالي لتثبيت NGINX على الجهاز الظاهري:

     az vm extension set \
     --publisher Microsoft.Azure.Extensions \
     --version 2.0 \
     --name CustomScript \
     --resource-group myResourceGroupAG \
     --vm-name myVM \
     --settings '{ "fileUris": ["https://raw.githubusercontent.com/Azure/azure-docs-powershell-samples/master/application-gateway/iis/install_nginx.sh"], "commandToExecute": "./install_nginx.sh" }'
    
  3. أنشئ جهازا ظاهريا ثانيا وقم بتثبيت NGINX باستخدام هذه الخطوات التي أكملتها مسبقا. استخدم myVM2 لاسم الجهاز الظاهري ولإعداد --vm-name ل cmdlet.

إضافة خوادم الواجهة الخلفية إلى تجمع الواجهة الخلفية

  1. حدد "All resources" ، ثم حدد myAppGateway.

  2. حدد "Backend pools" من القائمة اليسرى.

  3. حدد "myBackendPool" .

  4. ضمن "Target type" ، حدد "Virtual machine" من القائمة المنسدلة.

  5. من "Target" ، حدد واجهة الشبكة المرتبطة لـ myVM من القائمة المنسدلة.

  6. كرر الأمر مع myVM2.

    إضافة خوادم الواجهة الخلفية

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

  8. انتظر حتى يكتمل التوزيع قبل المتابعة إلى الخطوة التالية.

اختبار بوابة التطبيق

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

  1. ابحث عن عنوان IP العام لـ application gateway في صفحته Overview. لقطة شاشة لعنوان IP العام لبوابة التطبيق في صفحة نظرة عامة.

    أو يمكنك تحديد All resources، وإدخال myAGPublicIPAddress في مربع البحث، ثم تحديد في نتائج البحث. يعرض Azure عنوان IP العام في الصفحة نظرة عامة.

  2. نسخ عنوان IP العام، ثم ألصقه في شريط العنوان في متصفحك.

  3. تحقق من الاستجابة. تتحقق الاستجابة الصالحة من إنشاء بوابة التطبيق بنجاح ويمكنها إجراء اتصال ناجح بالواجهة الخلفية.

    لقطة شاشة لاختبار بوابة التطبيق.

تنظيف الموارد

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

لإزالة مجموعة الموارد:

  1. في القائمة اليمنى مدخل Microsoft Azure، حدد "Resource groups" .
  2. في صفحة "Resource groups" ، ابحث عن 0yResourceGroupAG في القائمة، ثم حددها.
  3. في "Resource group page" ، حدد "Delete resource group" .
  4. أدخل myResourceGroupAG لـ TYPE THE RESOURCE GROUP NAME ثم حدد "Delete" .

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