تكوين Web Application Firewall الإصدار 2 على Application Gateway باستخدام قاعدة مخصصة باستخدام Azure PowerShell
تسمح لك القواعد المخصصة بإنشاء القواعد الخاصة بك التي تم تقييمها لكل طلب يمر عبر Web Application Firewall (WAF) الإصدار 2. تحتوي هذه القواعد على أولوية أعلى من بقية القواعد في مجموعات القواعد المدارة. تحتوي القواعد المخصصة على إجراء (للسماح أو الحظر) وشرط المطابقة وعامل التشغيل للسماح بالتخصيص الكامل.
ينشئ هذا المقال على Application بوابة WAF الإصدار 2 يستخدم قاعدة مخصصة. تحظر القاعدة المخصصة مرور البيانات إذا كانت مقدمة الطلب تحتوي على عامل مستخدم evilbot.
للاطلاع على المزيد من أمثلة القواعد المخصصة، راجع إنشاء واستخدام قواعد مخصصة للجدار الناري لتطبيق الويب
إذا كنت تريد تشغيل Azure PowerShell في هذه المقالة في برنامج نصي واحد متصل يمكنك نسخه ولصقه وتشغيله، فراجع نماذج Azure Application بوابة PowerShell.
المتطلبات الأساسية
وحدة Azure PowerShell
إذا اخترت تثبيت PowerShell واستخدامه محليًا، فستتطلب هذه المقالة إصدار الوحدة Azure PowerShell الإصدار 2.1.0 أو إصدارًا أحدث.
- للعثور على الإصدار، قم بتشغيل
Get-Module -ListAvailable Az
. إذا كنت بحاجة إلى الترقية، فراجع تثبيت الوحدة النمطية Azure PowerShell. - لإنشاء اتصال مع Azure، قم بتشغيل
Connect-AzAccount
.
إذا لم يكن لديك اشتراك في Azure، فأنشئ حساب Azure مجاني قبل أن تبدأ.
مثال البرنامج النصي
إعداد المتغيرات
$rgname = "CustomRulesTest"
$location = "East US"
$appgwName = "WAFCustomRules"
إنشاء مجموعة موارد
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location
إنشاء شبكة افتراضية
$sub1 = New-AzVirtualNetworkSubnetConfig -Name "appgwSubnet" -AddressPrefix "10.0.0.0/24"
$sub2 = New-AzVirtualNetworkSubnetConfig -Name "backendSubnet" -AddressPrefix "10.0.1.0/24"
$vnet = New-AzvirtualNetwork -Name "Vnet1" -ResourceGroupName $rgname -Location $location `
-AddressPrefix "10.0.0.0/16" -Subnet @($sub1, $sub2)
إنشاء VIP عام ثابت
$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name "AppGwIP" `
-location $location -AllocationMethod Static -Sku Standard
إنشاء تجمع ومنفذ الواجهة
$gwSubnet = Get-AzVirtualNetworkSubnetConfig -Name "appgwSubnet" -VirtualNetwork $vnet
$gipconfig = New-AzApplicationGatewayIPConfiguration -Name "AppGwIpConfig" -Subnet $gwSubnet
$fipconfig01 = New-AzApplicationGatewayFrontendIPConfig -Name "fipconfig" -PublicIPAddress $publicip
$pool = New-AzApplicationGatewayBackendAddressPool -Name "pool1" `
-BackendIPAddresses testbackend1.westus.cloudapp.azure.com, testbackend2.westus.cloudapp.azure.com
$fp01 = New-AzApplicationGatewayFrontendPort -Name "port1" -Port 80
إنشاء مستمع، وإعداد http، وقاعدة، والتحجيم التلقائي
$listener01 = New-AzApplicationGatewayHttpListener -Name "listener1" -Protocol Http `
-FrontendIPConfiguration $fipconfig01 -FrontendPort $fp01
$poolSetting01 = New-AzApplicationGatewayBackendHttpSettings -Name "setting1" -Port 80 `
-Protocol Http -CookieBasedAffinity Disabled
$rule01 = New-AzApplicationGatewayRequestRoutingRule -Name "rule1" -RuleType basic `
-BackendHttpSettings $poolSetting01 -HttpListener $listener01 -BackendAddressPool $pool -Priority 1000
$autoscaleConfig = New-AzApplicationGatewayAutoscaleConfiguration -MinCapacity 3
$sku = New-AzApplicationGatewaySku -Name WAF_v2 -Tier WAF_v2
إنشاء قاعدتين مخصصتين وقم بتطبيقهما على نهج WAF
# Create a User-Agent header custom rule
$variable = New-AzApplicationGatewayFirewallMatchVariable -VariableName RequestHeaders -Selector User-Agent
$condition = New-AzApplicationGatewayFirewallCondition -MatchVariable $variable -Operator Contains -MatchValue "evilbot" -Transform Lowercase -NegationCondition $False
$rule = New-AzApplicationGatewayFirewallCustomRule -Name blockEvilBot -Priority 2 -RuleType MatchRule -MatchCondition $condition -Action Block -State Enabled
# Create a geo-match custom rule
$var2 = New-AzApplicationGatewayFirewallMatchVariable -VariableName RemoteAddr
$condition2 = New-AzApplicationGatewayFirewallCondition -MatchVariable $var2 -Operator GeoMatch -MatchValue "US" -NegationCondition $False
$rule2 = New-AzApplicationGatewayFirewallCustomRule -Name allowUS -Priority 14 -RuleType MatchRule -MatchCondition $condition2 -Action Allow -State Enabled
# Create a firewall policy
$policySetting = New-AzApplicationGatewayFirewallPolicySetting -Mode Prevention -State Enabled
$wafPolicy = New-AzApplicationGatewayFirewallPolicy -Name wafpolicyNew -ResourceGroup $rgname -Location $location -PolicySetting $PolicySetting -CustomRule $rule,$rule2
أنشئ بوابة التطبيق
$appgw = New-AzApplicationGateway -Name $appgwName -ResourceGroupName $rgname `
-Location $location -BackendAddressPools $pool `
-BackendHttpSettingsCollection $poolSetting01 `
-GatewayIpConfigurations $gipconfig -FrontendIpConfigurations $fipconfig01 `
-FrontendPorts $fp01 -HttpListeners $listener01 `
-RequestRoutingRules $rule01 -Sku $sku -AutoscaleConfiguration $autoscaleConfig `
-FirewallPolicy $wafPolicy
تحديث WAF الخاص بك
بعد إنشاء WAF الخاص بك، يمكنك تحديثه باستخدام إجراء مشابه للتعليمة البرمجية التالية:
# Get the existing policy
$policy = Get-AzApplicationGatewayFirewallPolicy -Name $policyName -ResourceGroupName $RGname
# Add an existing rule named $rule
$policy.CustomRules.Add($rule)
# Update the policy
Set-AzApplicationGatewayFirewallPolicy -InputObject $policy
الخطوات التالية
تعرَّف على المزيد بشأن Web Application Firewall على Application بوابة