Share via


Creare regole personalizzate di web application firewall (WAF) con Azure PowerShell

Questo script crea un web application firewall del gateway applicazione che usa regole personalizzate. La regola personalizzata blocca il traffico se l'intestazione della richiesta contiene l'evilbot User-Agent.

Prerequisiti

Modulo di Azure PowerShell

Se si sceglie di installare e usare Azure PowerShell in locale, per questo script è necessario il modulo Azure PowerShell versione 2.1.0 o successiva.

  1. Per trovare la versione, eseguire Get-Module -ListAvailable Az. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell.
  2. Eseguire Connect-AzAccount per creare una connessione con Azure.

Se non si ha una sottoscrizione di Azure, creare un account Azure gratuito prima di iniziare.

Script di esempio

#Set up variables
$rgname = "CustomRulesTest"
$location = "East US"
$appgwName = "WAFCustomRules"

#Create a Resource Group
$resourceGroup = New-AzResourceGroup -Name $rgname -Location $location

#Create a VNet
$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)

#Create a Static Public VIP
$publicip = New-AzPublicIpAddress -ResourceGroupName $rgname -name "AppGwIP" `
  -location $location -AllocationMethod Static -Sku Standard

#Create pool and frontend 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

#Create a listener, http setting, rule, and autoscale
$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
$autoscaleConfig = New-AzApplicationGatewayAutoscaleConfiguration -MinCapacity 3
$sku = New-AzApplicationGatewaySku -Name WAF_v2 -Tier WAF_v2

#Create the custom rule and apply it to WAF policy
$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
$policy = New-AzApplicationGatewayFirewallPolicySetting -Mode "Prevention"
$wafPolicy = New-AzApplicationGatewayFirewallPolicy -Name wafPolicy -ResourceGroup $rgname -Location $location -CustomRule $rule -PolicySetting $policy

#Create the 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

Pulire la distribuzione

Eseguire il comando seguente per rimuovere il gruppo di risorse, il gateway applicazione e tutte le risorse correlate.

Remove-AzResourceGroup -Name CustomRulesTest

Spiegazione dello script

Questo script usa i comandi seguenti per creare la distribuzione. Ogni elemento della tabella include collegamenti alla documentazione specifica del comando.

Comando Note
New-AzResourceGroup Consente di creare un gruppo di risorse in cui sono archiviate tutte le risorse.
New-AzVirtualNetworkSubnetConfig Crea la configurazione della subnet.
New-AzVirtualNetwork Crea la rete virtuale con le configurazioni di subnet.
New-AzPublicIpAddress Crea l'indirizzo IP pubblico per il gateway applicazione.
New-AzApplicationGatewayIPConfiguration Crea la configurazione che associa una subnet al gateway applicazione.
New-AzApplicationGatewayFrontendIPConfig Crea la configurazione che assegna un indirizzo IP pubblico al gateway applicazione.
New-AzApplicationGatewayFrontendPort Assegna una porta da usare per accedere al gateway applicazione.
New-AzApplicationGatewayBackendAddressPool Crea un pool back-end per un gateway applicazione.
New-AzApplicationGatewayBackendHttpSettings Configura le impostazioni per un pool back-end.
New-AzApplicationGatewayHttpListener Crea un listener.
New-AzApplicationGatewayRequestRoutingRule Crea una regola di routing.
New-AzApplicationGatewaySku Specifica il livello e la capacità per un gateway applicazione.
New-AzApplicationGateway Creare un gateway applicazione.
Remove-AzResourceGroup Rimuove un gruppo di risorse e tutte le risorse contenute al suo interno.
New-AzApplicationGatewayAutoscaleConfiguration Crea una configurazione di scalabilità automatica per il gateway applicazione.
New-AzApplicationGatewayFirewallMatchVariable Crea una variabile di corrispondenza per la condizione del firewall.
New-AzApplicationGatewayFirewallCondition Crea una condizione di corrispondenza per la regola personalizzata.
New-AzApplicationGatewayFirewallCustomRule Crea una nuova regola personalizzata per i criteri di firewall del gateway applicazione.
New-AzApplicationGatewayFirewallPolicy Crea criteri di firewall per il gateway applicazione.
New-AzApplicationGatewayWebApplicationFirewallConfiguration Crea una configurazione di WAF per un gateway applicazione.

Passaggi successivi