تصفية نسبة استخدام الشبكة مع مجموعة أمان الشبكة باستخدام Azure CLI

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

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

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

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

  • تتطلب هذه المقالة الإصدار 2.0.28 أو إصدارًا أحدث من واجهة سطر الأوامر من Azure. إذا كنت تستخدم Azure Cloud Shell، يتم تثبيت أحدث إصدار بالفعل.

إنشاء مجموعة أمان الشبكة

تحتوي مجموعة أمان الشبكة على قواعد الأمان. وتحدد قواعد الأمان المصدر والوجهة. يمكن أن تُشكِّل المصادر والوجهات مجموعات أمان التطبيق.

إنشاء مجموعات أمان التطبيق

قم أولاً بإنشاء مجموعة موارد لجميع الموارد التي تم إنشاؤها في هذه المقالة باستخدام az group create. يُنشئ المثال التالي مجموعة موارد في موقع eastus:

az group create \
  --name myResourceGroup \
  --location eastus

قم بإنشاء مجموعة أمان تطبيق باستخدام az network asg create. تُمكِّنك مجموعة أمان التطبيق من تجميع الخوادم ذات متطلبات تصفية المنافذ المماثلة. ينشئ المثال التالي مجموعتين من مجموعات أمان التطبيق.

az network asg create \
  --resource-group myResourceGroup \
  --name myAsgWebServers \
  --location eastus

az network asg create \
  --resource-group myResourceGroup \
  --name myAsgMgmtServers \
  --location eastus

إنشاء مجموعة أمان الشبكة

إنشاء مجموعة أمان الشبكة باستخدام az network nsg create. ينشئ المثال التالي مجموعة أمان شبكة باسم myNsg:

# Create a network security group
az network nsg create \
  --resource-group myResourceGroup \
  --name myNsg

إنشاء قواعد الأمان

أنشئ قاعدة أمان باستخدام az network nsg rule create. ينشئ المثال التالي قاعدة تسمح بحركة المرور الواردة من الإنترنت إلى مجموعة أمان تطبيق myWebServers عبر المنفذين 80 و443:

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name myNsg \
  --name Allow-Web-All \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 100 \
  --source-address-prefix Internet \
  --source-port-range "*" \
  --destination-asgs "myAsgWebServers" \
  --destination-port-range 80 443

ينشئ المثال التالي قاعدة تسمح بنسبة استخدام الشبكة الواردة من الإنترنت إلى مجموعة أمان تطبيق myMgmtServers عبر المنفذ 22:

az network nsg rule create \
  --resource-group myResourceGroup \
  --nsg-name myNsg \
  --name Allow-SSH-All \
  --access Allow \
  --protocol Tcp \
  --direction Inbound \
  --priority 110 \
  --source-address-prefix Internet \
  --source-port-range "*" \
  --destination-asgs "myAsgMgmtServers" \
  --destination-port-range 22

في هذه المقالة، يتصل SSH (المنفذ 22) بالإنترنت للاتصال بالجهاز الظاهري myAsgMgmtServers. بالنسبة لبيئات الإنتاج، بدلاً من توصيل المنفذ 22 بالإنترنت، يوصى بالاتصال بموارد Azure التي تريد إدارتها باستخدام VPN أو اتصال شبكة خاصة.

إنشاء شبكة ظاهرية

قم بإنشاء شبكة ظاهرية باستخدام az network vnet create. ينشيء المثال التالي شبكة ظاهرية باسم myVirtualNetwork:

az network vnet create \
  --name myVirtualNetwork \
  --resource-group myResourceGroup \
  --address-prefixes 10.0.0.0/16

أضف شبكة فرعية إلى شبكة ظاهرية باستخدام az network vnet create. يضيف المثال التالي شبكة فرعية باسم mySubnet إلى الشبكة الظاهرية ويقوم بإقران مجموعة أمان شبكة myNsg بها:

az network vnet subnet create \
  --vnet-name myVirtualNetwork \
  --resource-group myResourceGroup \
  --name mySubnet \
  --address-prefix 10.0.0.0/24 \
  --network-security-group myNsg

أنشئ الأجهزة الظاهرية

قم بإنشاء جهازين ظاهريين في الشبكة الظاهرية حتى يمكنك التحقق من صحة تصفية حركة المرور لاحقاً.

قم بإنشاء جهاز ظاهري VM باستخدام "az vm إنشاء". يقوم المثال التالي بإنشاء جهاز ظاهري سيعمل كخادم ويب. يؤدي خيار --asgs myAsgWebServers إلى أن Azure يجعل واجهة الشبكة التي ينشئها للجهاز الظاهري عضواً في مجموعة أمان تطبيق myAsgWebServers.

يتم تحديد خيار --nsg "" لمنع Azure من إنشاء مجموعة أمان شبكة افتراضية لواجهة الشبكة التي ينشئها Azure عند إنشاء الجهاز الظاهري. لتبسيط هذه المقالة، يتم استخدام كلمة مرور. تُستخدم المفاتيح عادةً في عمليات توزيع الإنتاج. إذا كنت تستخدم مفاتيح، يجب عليك أيضاً تكوين إعادة توجيه عامل SSH للخطوات المتبقية. لمزيد من المعلومات، راجع الوثائق الخاصة بعميل SSH الخاص بك. استبدل <replace-with-your-password> في الأمر التالي بكلمة مرور من اختيارك.

adminPassword="<replace-with-your-password>"

az vm create \
  --resource-group myResourceGroup \
  --name myVmWeb \
  --image Ubuntu2204 \
  --vnet-name myVirtualNetwork \
  --subnet mySubnet \
  --nsg "" \
  --asgs myAsgWebServers \
  --admin-username azureuser \
  --admin-password $adminPassword

ويستغرق إنشاء جهاز ظاهري بضع دقائق. بعد إنشاء الجهاز الظاهري، يتم إرجاع ناتج مشابه للمثال التالي:

{
  "fqdns": "",
  "id": "/subscriptions/00000000-0000-0000-0000-000000000000/resourceGroups/myResourceGroup/providers/Microsoft.Compute/virtualMachines/myVmWeb",
  "location": "eastus",
  "macAddress": "00-0D-3A-23-9A-49",
  "powerState": "VM running",
  "privateIpAddress": "10.0.0.4",
  "publicIpAddress": "13.90.242.231",
  "resourceGroup": "myResourceGroup"
}

لاحظ publicIpAddress. يُستخدم هذا العنوان للوصول إلى الجهاز الظاهري من الإنترنت في خطوة لاحقة. إنشاء جهاز ظاهري ليعمل كخادم إدارة:

az vm create \
  --resource-group myResourceGroup \
  --name myVmMgmt \
  --image Ubuntu2204 \
  --vnet-name myVirtualNetwork \
  --subnet mySubnet \
  --nsg "" \
  --asgs myAsgMgmtServers \
  --admin-username azureuser \
  --admin-password $adminPassword

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

اختبار عوامل تصفية حركة مرور البيانات

استخدم الأمر التالي لإنشاء جلسة SSH باستخدام الجهاز الظاهري myVmMgmt. استبدل <publicIpAddress> بعنوان IP العام لجهاز الجهاز الظاهري. في المثال أعلاه، عنوان IP هو 13.90.242.231.

ssh azureuser@<publicIpAddress>

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

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

استخدم الأمر التالي إلى SSH إلى الجهاز الظاهري myVmWeb من الجهاز الظاهري myVmMgmt:

ssh azureuser@myVmWeb

ينجح الاتصال لأن قاعدة الأمان الظاهرية الموجودة داخل كل مجموعة أمان شبكة تسمح بحركة المرور عبر جميع المنافذ بين جميع عناوين IP داخل الشبكة الظاهرية. لا يمكنك توصيل SSH إلى الجهاز الظاهري myVmWeb من الإنترنت لأن قاعدة الأمان الخاصة بـ myAsgWebServers لا تسمح باستخدام المنفذ 22 الوارد من الإنترنت.

استخدم الأوامر التالية لتثبيت خادم ويب nginx على الجهاز الظاهري myVmWeb:

# Update package source
sudo apt-get -y update

# Install NGINX
sudo apt-get -y install nginx

يُسمح للجهاز الظاهري myVmWeb بالوصول إلى الإنترنت لاسترداد nginx لأن قاعدة الأمان الافتراضية تسمح بكل نسبة استخدام شبكة صادرة إلى الإنترنت. قم بإنهاء جلسة myVmWeb SSH التي تتركك في مطالبة username@myVmMgmt:~$ للجهاز الظاهري myVmMgmt. لاسترداد شاشة الترحيب nginx من الجهاز الظاهري myVmWeb، أدخل الأمر التالي:

curl myVmWeb

قم بتسجيل الخروج من الجهاز الظاهري myVmMgmt. للتأكد من أنه يمكنك الوصول إلى خادم الويب myVmWeb من خارج Azure، أدخل curl <publicIpAddress> من جهاز الكمبيوتر الخاص بك. ينجح الاتصال، لأنه يسمح للمنفذ 80 الوارد من الإنترنت إلى مجموعة أمان التطبيق myAsgWebServers التي توجد بها واجهة الشبكة المتصلة بالجهاز الظاهري myVmWeb.

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

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

az group delete --name myResourceGroup --yes

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

في هذه المقالة، قمت بإنشاء مجموعة أمان الشبكة وإقرانها بشبكة فرعية ظاهرية. لمعرفة المزيد حول مجموعات أمان الشبكة، راجع "Network security group overview" و"Manage a network security group".

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