Share via


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.

Ön koş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.

  1. 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.
  2. 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