Web Application Firewall v2 configureren in Application Gateway met een aangepaste regel met behulp van Azure PowerShell

Met aangepaste regels kunt u uw eigen regels maken die worden geëvalueerd voor elke aanvraag die wordt doorgegeven via waf v2 (Web Application Firewall). Deze regels hebben een hogere prioriteit dan de rest van de regels in de beheerde regelsets. De aangepaste regels hebben een actie (om toe te staan of te blokkeren), een overeenkomstvoorwaarde en een operator om volledige aanpassing toe te staan.

In dit artikel wordt een Application Gateway WAF v2 gemaakt die gebruikmaakt van een aangepaste regel. Met de aangepaste regel wordt verkeer geblokkeerd als de aanvraagheader User-Agent evilbot bevat.

Zie Aangepaste webtoepassingsfirewallregels maken en gebruiken voor meer voorbeelden van aangepaste regels

Als u de Azure PowerShell in dit artikel wilt uitvoeren in één doorlopend script dat u kunt kopiëren, plakken en uitvoeren, raadpleegt u Azure-toepassing Gateway PowerShell-voorbeelden.

Vereisten

Azure PowerShell-module

Als u Azure PowerShell lokaal wilt installeren en gebruiken, is voor dit script moduleversie 2.1.0 of hoger van Azure PowerShell vereist.

  1. Voer Get-Module -ListAvailable Az uit om de versie te zoeken. Als u PowerShell wilt upgraden, raadpleegt u De Azure PowerShell-module installeren.
  2. Voer Connect-AzAccount uit om een verbinding met Azure tot stand te brengen.

Als u geen Azure-abonnement hebt, kunt u een gratis Azure-account maken voordat u begint.

Voorbeeldscript

Variabelen instellen

$rgname = "CustomRulesTest"

$location = "East US"

$appgwName = "WAFCustomRules"

Een brongroep maken

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

Een VNet maken

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

Een statisch openbaar VIP maken

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

Pool- en front-endpoort maken

$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

Een listener, http-instelling, regel en automatische schaalaanpassing maken

$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

Twee aangepaste regels maken en toepassen op WAF-beleid

# 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

De Toepassingsgateway maken

$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

Uw WAF bijwerken

Nadat u uw WAF hebt gemaakt, kunt u deze bijwerken met behulp van een procedure die vergelijkbaar is met de volgende code:

# 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

Volgende stappen

Meer informatie over Web Application Firewall in Application Gateway