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.
- Per trovare la versione, eseguire
Get-Module -ListAvailable Az
. Se è necessario eseguire l'aggiornamento, vedere Installare e configurare Azure PowerShell. - 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
- Per altre informazioni sulle regole personalizzate di WAF, vedere Regole personalizzate per il web application firewall
- Per altre informazioni sul modulo Azure PowerShell, vedere la documentazione di Azure PowerShell.
- Altri esempi di script di PowerShell per il gateway applicazione sono reperibili nella documentazione sul gateway applicazione di Azure.