Azure PowerShell kullanarak Application Gateway'de Web Uygulaması Güvenlik Duvarı v2'yi özel bir kuralla yapılandırma
Özel kurallar, Web Uygulaması Güvenlik Duvarı (WAF) v2 üzerinden geçen her istek için değerlendirilen kendi kurallarınızı oluşturmanıza olanak sağlar. Bu kurallar, yönetilen kural kümelerindeki kuralların geri kalanından daha yüksek önceliklidir. Özel kuralların bir eylemi (izin vermek veya engellemek için), bir eşleşme koşulu ve tam özelleştirmeye izin veren bir işleci vardır.
Bu makalede, özel kural kullanan bir Application Gateway WAF v2 oluşturulur. İstek üst bilgisinde User-Agent kötü botu varsa özel kural trafiği engeller.
Daha fazla özel kural örneği görmek için bkz . Özel web uygulaması güvenlik duvarı kuralları oluşturma ve kullanma
Bu makaledeki Azure PowerShell'i kopyalayabileceğiniz, yapıştırabileceğiniz ve çalıştırabileceğiniz tek bir sürekli betikte çalıştırmak istiyorsanız bkz. Azure Uygulaması Lication Gateway PowerShell örnekleri.
Önkoşullar
Azure PowerShell modülü
Azure PowerShell'i yerel olarak yükleyip kullanmayı seçerseniz, bu betik Için Azure PowerShell modülünün 2.1.0 veya sonraki bir sürümü gerekir.
- Sürümü bulmak için
Get-Module -ListAvailable Az
komutunu çalıştırın. Yükseltmeniz gerekirse, bkz. Azure PowerShell modülünü yükleme. - Azure ile bağlantı oluşturmak için komutunu çalıştırın
Connect-AzAccount
.
Azure aboneliğiniz yoksa başlamadan önce birücretsiz Azure hesabı oluşturun.
Örnek betik
Değişkenleri ayarlama
$rgname = "CustomRulesTest"
$location = "East US"
$appgwName = "WAFCustomRules"
Kaynak grubu oluşturma
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location
Sanal ağ oluşturma
$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)
Statik Genel VIP oluşturma
$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name "AppGwIP" `
-location $location -AllocationMethod Static -Sku Standard
Havuz ve ön uç bağlantı noktası oluşturma
$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
Dinleyici, http ayarı, kural ve otomatik ölçeklendirme oluşturma
$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
İki özel kural oluşturma ve WAF ilkesine uygulama
# 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
Application Gateway oluşturma
$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'nizi güncelleştirme
WAF'nizi oluşturduktan sonra aşağıdaki koda benzer bir yordam kullanarak güncelleştirebilirsiniz:
# 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
Sonraki adımlar
Application Gateway'de Web Uygulaması Güvenlik Duvarı hakkında daha fazla bilgi edinin