Sdílet prostřednictvím


Konfigurace firewallu webových aplikací v2 ve službě Application Gateway s vlastním pravidlem pomocí Azure PowerShellu

Vlastní pravidla umožňují vytvořit vlastní pravidla vyhodnocená pro každý požadavek, který prochází firewallem webových aplikací (WAF) v2. Tato pravidla mají vyšší prioritu než ostatní pravidla ve spravovaných sadách pravidel. Vlastní pravidla mají akci (pro povolení nebo blokování), podmínku shody a operátor, který povolí úplné přizpůsobení.

Tento článek vytvoří WAF služby Application Gateway v2, která používá vlastní pravidlo. Vlastní pravidlo blokuje provoz, pokud hlavička požadavku obsahuje user-agent evilbot.

Další příklady vlastních pravidel najdete v tématu Vytvoření a použití vlastních pravidel firewallu webových aplikací.

Pokud chcete spustit Azure PowerShell v tomto článku v jednom průběžném skriptu, který můžete zkopírovat, vložit a spustit, přečtěte si Aplikace Azure ukázky PowerShellu brány.

Předpoklady

Modul Azure PowerShellu

Pokud se rozhodnete nainstalovat a používat Azure PowerShell místně, tento skript vyžaduje modul Azure PowerShell verze 2.1.0 nebo novější.

  1. Verzi zjistíte spuštěním příkazu Get-Module -ListAvailable Az. Pokud potřebujete upgrade, přečtěte si téma Instalace modulu Azure PowerShell.
  2. Pokud chcete vytvořit připojení k Azure, spusťte Connect-AzAccountpříkaz .

Pokud ještě nemáte předplatné Azure, vytvořte si bezplatný účet Azure před tím, než začnete.

Ukázkový skript

Nastavení proměnných

$rgname = "CustomRulesTest"

$location = "East US"

$appgwName = "WAFCustomRules"

Vytvoření skupiny zdrojů

$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location

Vytvoření virtuální sítě

$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)

Vytvoření statické veřejné VIRTUÁLNÍ IP adresy

$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name "AppGwIP" `
  -location $location -AllocationMethod Static -Sku Standard

Vytvoření fondu a front-endových portů

$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

Vytvoření naslouchacího procesu, nastavení HTTP, pravidla a automatického škálování

$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

Vytvoření dvou vlastních pravidel a jeho použití na zásady 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

Vytvoření služby Application Gateway

$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

Aktualizace WAF

Po vytvoření WAF ho můžete aktualizovat pomocí postupu podobného následujícímu kódu:

# 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

Další kroky

Další informace o firewallu webových aplikací ve službě Application Gateway