نشر وتكوين نهج Azure Firewall باستخدام Azure PowerShell

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

إحدى الطرق التي يمكنك التحكم في الوصول إلى شبكة الاتصال الصادرة من شبكة فرعية Azure هي باستخدام جدار حماية Azure وسياسة جدار الحماية. باستخدام Azure Firewall، يمكنك تكوين:

  • قواعد التطبيق التي تعرّف أسماء المجالات المؤهلة بالكامل (FQDN)، والتي يمكن الوصول إليها من شبكة فرعية.
  • قواعد الشبكة التي تعرّف عنوان المصدر، والبروتوكول، ومنفذ الوجهة، وعنوان الوجهة.

يتم عرض حركة مرور شبكة الاتصال لقواعد جدار الحماية المكونة عند توجيه نسبة استخدام الشبكة إلى جدار الحماية كبوابة الشبكة الفرعية الافتراضية.

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

  • AzureFirewallSubnet - جدار الحماية في هذه الشبكة الفرعية.
  • Workload-SN - خادم حمل العمل في هذه الشبكة الفرعية. مرور شبكة الاتصال هذه الخاصة بالشبكة الفرعية عبر جدار الحماية.
  • AzureBastionSubnet - الشبكة الفرعية المستخدمة في Azure Bastion، والتي تُستخدم للاتصال بخادم حمل العمل.

لمعرفة مزيد من المعلومات بخصوص Azure Bastion، راجع ما هو Azure Bastion؟

هام

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

Tutorial network infrastructure

في هذه المقالة، ستتعرف على كيفية:

  • إعداد بيئة شبكة اختبار
  • انشر جدار الحماية
  • إنشاء مسار افتراضي
  • إنشاء نهج جدار الحماية
  • تكوين قاعدة تطبيق للسماح بالوصول لـwww.google.com
  • تكوين قاعدة شبكة اتصال للسماح بالوصول إلى خوادم DNS الخارجية
  • اختبار جدار الحماية

يمكنك إكمال هذا الإجراء باستخدام مدخل Microsoft Azure، إذا كنت تفضل ذلك.

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

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

يتطلب هذا الإجراء تشغيل PowerShell محلياً. يجب أن يكون لديك وحدة Azure PowerShell مثبتة. قم بتشغيل Get-Module -ListAvailable Az للعثور على الإصدار. إذا كنت بحاجة إلى الترقية، فراجع تثبيت الوحدة النمطية Azure PowerShell. بعد التحقق من إصدار PowerShell، قم بتشغيل Connect-AzAccount لإنشاء اتصال مع Azure.

إعداد الشبكة

أولاً، إنشاء مجموعة موارد لاحتواء الموارد اللازمة لتوزيع جدار الحماية. ثم قم بإنشاء شبكة VNet وشبكات فرعية وخوادم اختبار.

إنشاء مجموعة موارد

تحتوي مجموعة الموارد على جميع الموارد للتوزيع.

New-AzResourceGroup -Name Test-FW-RG -Location "East US"

قم بإنشاء شبكة ظاهرية ومضيف Azure Bastion

تحتوي هذه الشبكة الظاهرية على ثلاث شبكات فرعية:

إشعار

حجم الشبكة الفرعية AzureFirewallSubnet هو /26. لمزيد من المعلومات عن حجم الشبكة الفرعية، راجع الأسئلة المتداولة عن Azure Firewall.

$Bastionsub = New-AzVirtualNetworkSubnetConfig -Name AzureBastionSubnet -AddressPrefix 10.0.0.0/27
$FWsub = New-AzVirtualNetworkSubnetConfig -Name AzureFirewallSubnet -AddressPrefix 10.0.1.0/26
$Worksub = New-AzVirtualNetworkSubnetConfig -Name Workload-SN -AddressPrefix 10.0.2.0/24

الآن، قم بإنشاء الشبكة الظاهرية:

$testVnet = New-AzVirtualNetwork -Name Test-FW-VN -ResourceGroupName Test-FW-RG `
-Location "East US" -AddressPrefix 10.0.0.0/16 -Subnet $Bastionsub, $FWsub, $Worksub

قم بإنشاء عنوان IP عام لمضيف Azure Bastion

$publicip = New-AzPublicIpAddress -ResourceGroupName Test-FW-RG -Location "East US" `
   -Name Bastion-pip -AllocationMethod static -Sku standard

قم بإنشاء مضيف Azure Bastion

New-AzBastion -ResourceGroupName Test-FW-RG -Name Bastion-01 -PublicIpAddress $publicip -VirtualNetwork $testVnet

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

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

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

#Create the NIC
$wsn = Get-AzVirtualNetworkSubnetConfig -Name  Workload-SN -VirtualNetwork $testvnet
$NIC01 = New-AzNetworkInterface -Name Srv-Work -ResourceGroupName Test-FW-RG -Location "East us" -Subnet $wsn

#Define the virtual machine
$VirtualMachine = New-AzVMConfig -VMName Srv-Work -VMSize "Standard_DS2"
$VirtualMachine = Set-AzVMOperatingSystem -VM $VirtualMachine -Windows -ComputerName Srv-Work -ProvisionVMAgent -EnableAutoUpdate
$VirtualMachine = Add-AzVMNetworkInterface -VM $VirtualMachine -Id $NIC01.Id
$VirtualMachine = Set-AzVMSourceImage -VM $VirtualMachine -PublisherName 'MicrosoftWindowsServer' -Offer 'WindowsServer' -Skus '2019-Datacenter' -Version latest

#Create the virtual machine
New-AzVM -ResourceGroupName Test-FW-RG -Location "East US" -VM $VirtualMachine -Verbose

إنشاء نهج جدار الحماية

$fwpol = New-AzFirewallPolicy -Name fw-pol -ResourceGroupName Test-FW-RG -Location eastus

قم بتكوين قاعدة تطبيق نهج جدار الحماية

تسمح قاعدة التطبيق بالوصول الصادر إلى www.google.com.

$RCGroup = New-AzFirewallPolicyRuleCollectionGroup -Name AppRCGroup -Priority 100 -FirewallPolicyObject $fwpol
$apprule1 = New-AzFirewallPolicyApplicationRule -Name Allow-google -SourceAddress "10.0.2.0/24" -Protocol "http:80","https:443" -TargetFqdn www.google.com
$appcoll1 = New-AzFirewallPolicyFilterRuleCollection -Name App-coll01 -Priority 100 -Rule $appRule1 -ActionType "Allow"
Set-AzFirewallPolicyRuleCollectionGroup -Name $RCGroup.Name -Priority 100 -RuleCollection $appcoll1 -FirewallPolicyObject $fwPol

يتضمن جدار حماية Azure مجموعة قواعد مضمنة لأجل FQDNs البنية الأساسية المسموح بها بشكل افتراضي. FQDNs هي خاصة بالمنصة ولا يمكن استخدامها لأغراض أخرى. لمزيد من المعلومات، راجع FQDNs البنية التحتية.

قم بتكوين قاعدة شبكة نهج جدار الحماية

تسمح قاعدة الشبكة بالوصول الصادر إلى عنواني IP في المنفذ 53 (DNS).

$RCGroup = New-AzFirewallPolicyRuleCollectionGroup -Name NetRCGroup -Priority 200 -FirewallPolicyObject $fwpol
$netrule1 = New-AzFirewallPolicyNetworkRule -name Allow-DNS -protocol UDP -sourceaddress 10.0.2.0/24 -destinationaddress 209.244.0.3,209.244.0.4 -destinationport 53
$netcoll1 = New-AzFirewallPolicyFilterRuleCollection -Name Net-coll01 -Priority 200 -Rule $netrule1 -ActionType "Allow"
Set-AzFirewallPolicyRuleCollectionGroup -Name $RCGroup.Name -Priority 200 -RuleCollection $netcoll1 -FirewallPolicyObject $fwPol

انشر جدار الحماية

قم الآن بتوزيع جدار الحماية في الشبكة الظاهرية.

# Get a Public IP for the firewall
$FWpip = New-AzPublicIpAddress -Name "fw-pip" -ResourceGroupName Test-FW-RG `
  -Location "East US" -AllocationMethod Static -Sku Standard
# Create the firewall
$Azfw = New-AzFirewall -Name Test-FW01 -ResourceGroupName Test-FW-RG -Location "East US" -VirtualNetwork $testVnet -PublicIpAddress $FWpip -FirewallPolicyId $fwpol.Id


#Save the firewall private IP address for future use

$AzfwPrivateIP = $Azfw.IpConfigurations.privateipaddress
$AzfwPrivateIP

لاحظ عنوان IP الخاص. ستستخدمه لاحقاً عند إنشاء المسار الافتراضي.

إنشاء مسار افتراضي

قم بإنشاء جدول، مع تعطيل انتشار مسار BGP

$routeTableDG = New-AzRouteTable `
  -Name Firewall-rt-table `
  -ResourceGroupName Test-FW-RG `
  -location "East US" `
  -DisableBgpRoutePropagation

#Create a route
 Add-AzRouteConfig `
  -Name "DG-Route" `
  -RouteTable $routeTableDG `
  -AddressPrefix 0.0.0.0/0 `
  -NextHopType "VirtualAppliance" `
  -NextHopIpAddress $AzfwPrivateIP `
 | Set-AzRouteTable

#Associate the route table to the subnet

Set-AzVirtualNetworkSubnetConfig `
  -VirtualNetwork $testVnet `
  -Name Workload-SN `
  -AddressPrefix 10.0.2.0/24 `
  -RouteTable $routeTableDG | Set-AzVirtualNetwork

تغيير عنوان DNS الأساسي والثانوي لواجهة شبكة Srv-Work

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

$NIC01.DnsSettings.DnsServers.Add("209.244.0.3")
$NIC01.DnsSettings.DnsServers.Add("209.244.0.4")
$NIC01 | Set-AzNetworkInterface

اختبار جدار الحماية

الآن، اختبر جدار الحماية للتأكد من أنه يعمل كما هو متوقع.

  1. اتصل بجهاز Srv-Work الظاهري باستخدام Bastion، وقم بتسجيل الدخول.

    Connect using Bastion.

  2. في Srv-Work، افتح نافذة PowerShell وقم بتشغيل الأوامر التالية:

    nslookup www.google.com
    nslookup www.microsoft.com
    

    ينبغي أن يعرض كلا الأمرين إجابات توضح أن استعلامات DNS الخاصة بك تمر عبر جدار الحماية.

  3. شغّل الأوامر التالية:

    Invoke-WebRequest -Uri https://www.google.com
    Invoke-WebRequest -Uri https://www.google.com
    
    Invoke-WebRequest -Uri https://www.microsoft.com
    Invoke-WebRequest -Uri https://www.microsoft.com
    

    يجب أن تنجح طلبات www.google.com ويجب أن تفشل طلبات www.microsoft.com. يوضح هذا أن قواعد جدار الحماية الخاص بك تعمل بالشكل المتوقع.

إذن الآن، تحققت من أن قواعد نهج جدار الحماية تعمل:

  • يمكنك حل أسماء DNS باستخدام خادم DNS الخارجي المكون.
  • يمكنك التصفح للوصول إلى اسمح المجال المؤهل بالكامل (FQDN) المسموح به، ولكن ليس لأي مجالٍ آخر.

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

يمكنك الاحتفاظ بموارد جدار الحماية الخاصة بك من أجل المزيد من الاختبار، أو إذا لم تعد هناك حاجة، حذف مجموعة الموارد Test-FW-RG لحذف كافة الموارد المتعلقة بجدار الحماية:

Remove-AzResourceGroup -Name Test-FW-RG

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