Configurare un web application firewall su un gateway applicazione nuovo o esistenteConfigure a web application firewall on a new or existing application gateway

Informazioni su come creare un gateway applicazione con web application firewall (WAF) abilitato.Learn how to create a web application firewall (WAF)-enabled application gateway. Leggere anche le informazioni su come aggiungere un WAF a un gateway applicazione esistente.Also learn how to add a WAF to an existing application gateway.

Il WAF nel gateway applicazione di Azure protegge le applicazioni Web dai comuni attacchi basati sul Web, come ad esempio gli attacchi SQL injection, gli attacchi di scripting intersito e il controllo delle sessioni.The WAF in Azure Application Gateway protects web applications from common web-based attacks like SQL injection, cross-site scripting attacks, and session hijacks.

Il gateway applicazione è un servizio di bilanciamento del carico di livello 7.Application Gateway is a layer-7 load balancer. Fornisce richieste HTTP con routing delle prestazioni e failover tra server diversi, sia nel cloud che in locale.It provides failover, performance-routing HTTP requests between different servers, whether they're on the cloud or on-premises. Il gateway applicazione offre numerose funzionalità di controller per la distribuzione di applicazioni (ADC, Application Delivery Controller):Application Gateway provides many application delivery controller (ADC) features:

  • Bilanciamento del carico HTTPHTTP load balancing
  • Affinità di sessione basata su cookieCookie-based session affinity
  • Offload Secure Sockets Layer (SSL)Secure Sockets Layer (SSL) offload
  • Probe di integrità personalizzatiCustom health probes
  • Supporto per la funzionalità multisitoSupport for multisite functionality

    Per un elenco completo delle funzionalità supportate, vedere Panoramica del gateway applicazione.To find a complete list of supported features, see Overview of Application Gateway.

Questo articolo mostra come aggiungere un WAF a un gateway applicazione esistente.This article shows how to add a WAF to an existing application gateway. Illustra anche come creare un gateway applicazione che usa un WAF.It also shows how to create an application gateway that uses a WAF.

Immagine dello scenario

Differenze di configurazione dei WAFWAF configuration differences

Se è stato letto l'argomento Creare un gateway applicazione con PowerShell, si conoscono le impostazioni della SKU da configurare quando si crea un gateway applicazione.If you've read Create an application gateway with PowerShell, you understand the SKU settings to configure when you create an application gateway. Il WAF fornisce impostazioni aggiuntive da definire quando si configura uno SKU in un gateway applicazione.The WAF provides additional settings to define when you configure an SKU on an application gateway. Non esistono altre modifiche aggiuntive da apportare sul gateway applicazione.There are no additional changes that you make on the application gateway itself.

ImpostazioneSetting DettagliDetails
SKUSKU Un gateway applicazione normale senza WAF supporta le dimensioni Standard_Small, Standard_Medium e Standard_Large.A normal application gateway without a WAF supports Standard_Small, Standard_Medium, and Standard_Large sizes. Con l'introduzione di un WAF sono disponibili due SKU aggiuntive, WAF_Medium e WAF_Large.With the introduction of a WAF, there are two additional SKUs, WAF_Medium and WAF_Large. Un WAF non è supportato nei gateway applicazione Small.A WAF is not supported on small application gateways.
LivelloTier I valori disponibili sono Standard o WAF.The available values are Standard or WAF. Quando si usa un WAF, è necessario scegliere WAF.When you use a WAF, you must choose WAF.
ModalitàMode Questa impostazione è la modalità del WAF.This setting is the mode of the WAF. I valori consentiti sono Rilevamento e Prevenzione.Allowed values are Detection and Prevention. Quando il firewall WAF è configurato in modalità Rilevamento, tutte le minacce vengono archiviate in un file di log.When the WAF is set up in Detection mode, all threats are stored in a log file. In modalità Prevenzione, gli eventi vengono comunque registrati, ma l'autore dell'attacco riceve una risposta di mancata autorizzazione 403 dal gateway applicazione.In Prevention mode, events are still logged but the attacker receives a 403 unauthorized response from the application gateway.

Aggiungere un web application firewall a un gateway applicazione esistenteAdd a web application firewall to an existing application gateway

Assicurarsi di usare la versione più recente di Azure PowerShell.Make sure that you use the latest version of Azure PowerShell. Per altre informazioni, vedere Usare Windows PowerShell con Gestione risorse.For more information, see Use Windows PowerShell with Resource Manager.

  1. Accedere all'account Azure.Sign in to your Azure account.

    Login-AzureRmAccount
    
  2. Selezionare la sottoscrizione da usare per questo scenario.Select the subscription to use for this scenario.

    Select-AzureRmSubscription -SubscriptionName "<Subscription name>"
    
  3. Recuperare il gateway dove si desidera aggiungere un WAF.Retrieve the gateway where you want to add a WAF.

    $gw = Get-AzureRmApplicationGateway -Name "AdatumGateway" -ResourceGroupName "MyResourceGroup"
    
  4. Configurare lo SKU WAF.Configure the WAF SKU. Le dimensioni disponibili sono WAF_Large e WAF_Medium.The available sizes are WAF_Large and WAF_Medium. Quando si utilizza un WAF, il livello deve essere WAF.When you use a WAF, the tier must be WAF. Verificare la capacità quando si imposta la SKU.Confirm the capacity when you set the SKU.

    $gw | Set-AzureRmApplicationGatewaySku -Name WAF_Large -Tier WAF -Capacity 2
    
  5. Configurare le impostazioni WAF nel modo definito nell'esempio seguente.Configure the WAF settings as defined in the following example. PerFirewallMode, i valori disponibili sono Prevenzione e Rilevamento.For FirewallMode, the available values are Prevention and Detection.

    $gw | Set-AzureRmApplicationGatewayWebApplicationFirewallConfiguration -Enabled $true -FirewallMode Prevention
    
  6. Aggiornare il gateway applicazione con le impostazioni definite nel passaggio precedente.Update the application gateway with the settings you defined in the preceding step.

    Set-AzureRmApplicationGateway -ApplicationGateway $gw
    

Questo comando aggiorna il gateway applicazione con un WAF.This command updates the application gateway with a WAF. Per informazioni su come visualizzare i log per il gateway applicazione, vedere l'argomento relativo alla diagnostica del gateway applicazione.To understand how to view logs for your application gateway, see Application Gateway diagnostics. Per le implicazioni di sicurezza del WAF, esaminare i log a intervalli regolari per essere aggiornati sulle condizioni di sicurezza delle applicazioni Web.Due to the security nature of a WAF, review logs regularly to understand the security posture of your web applications.

Creare un gateway applicazione con un web application firewallCreate an application gateway with a web application firewall

I passaggi seguenti illustrano l'intero processo di creazione di un gateway applicazione con un WAF.The following steps take you through the entire process of creating an application gateway with a WAF.

Assicurarsi di usare la versione più recente di Azure PowerShell.Make sure that you use the latest version of Azure PowerShell. Per altre informazioni, vedere Usare Windows PowerShell con Gestione risorse.For more information, see Use Windows PowerShell with Resource Manager.

  1. Accedi ad Azure eseguendo Login-AzureRmAccount.Sign in to Azure by running Login-AzureRmAccount. Verrà richiesto di eseguire l'autenticazione con le proprie credenziali.You're prompted to authenticate with your credentials.

  2. Controllare le sottoscrizioni per l'account eseguendo Get-AzureRmSubscription.Check the subscriptions for the account by running Get-AzureRmSubscription.

  3. Scegliere quale sottoscrizione di Azure usare.Choose which Azure subscription to use.

    Select-AzureRmsubscription -SubscriptionName "<Subscription name>"
    

Creare un gruppo di risorseCreate a resource group

Creare un gruppo di risorse per il gateway applicazione.Create a resource group for the application gateway.

New-AzureRmResourceGroup -Name appgw-rg -Location "West US"

Gestione risorse di Azure richiede che tutti i gruppi di risorse specifichino un percorsoAzure Resource Manager requires that all resource groups specify a location. che viene usato come percorso predefinito per le risorse presenti in tale gruppo di risorse.This location is used as the default location for resources in that resource group. Assicurarsi che tutti i comandi per creare un gateway applicazione usino lo stesso gruppo di risorse.Make sure that all commands to create an application gateway use the same resource group.

Nell'esempio precedente è stato creato un gruppo di risorse denominato "appgw-RG" con la località "Stati Uniti occidentali".In the preceding example, we created a resource group called "appgw-RG" with the location "West US."

Nota

Se è necessario configurare un probe personalizzato per il gateway applicazione, vedere Creare un probe personalizzato per il gateway applicazione di Azure con PowerShell per Azure Resource Manager.If you need to configure a custom probe for your application gateway, see Create an application gateway with custom probes by using PowerShell. Per altre informazioni, vedere l'articolo relativo a probe personalizzati e monitoraggio dell'integrità.For more information, see Custom probes and health monitoring.

Configurare una rete virtualeConfigure a virtual network

Il gateway applicazione richiede una propria subnet.An application gateway requires a subnet of its own. In questo passaggio si crea una rete virtuale con uno spazio degli indirizzi di 10.0.0.0/16 e due subnet, una per il gateway applicazione e una per i membri del pool di back-end.In this step, you create a virtual network with an address space of 10.0.0.0/16 and two subnets, one for the application gateway and one for back-end pool members.

# Create a subnet configuration object for the application gateway subnet. A subnet for an application should have a minimum of 28 mask bits. This value leaves 10 available addresses in the subnet for application gateway instances. With a smaller subnet, you might not be able to add more instances of your application gateway in the future.
$gwSubnet = New-AzureRmVirtualNetworkSubnetConfig -Name 'appgwsubnet' -AddressPrefix 10.0.0.0/24

# Create a subnet configuration object for the back-end pool members subnet.
$nicSubnet = New-AzureRmVirtualNetworkSubnetConfig  -Name 'appsubnet' -AddressPrefix 10.0.2.0/24

# Create the virtual network with the previously created subnets.
$vnet = New-AzureRmvirtualNetwork -Name 'appgwvnet' -ResourceGroupName appgw-rg -Location "West US" -AddressPrefix 10.0.0.0/16 -Subnet $gwSubnet, $nicSubnet

Configurare l'indirizzo IP pubblicoConfigure the public IP address

Per gestire le richieste esterne, il gateway applicazione richiede un indirizzo IP pubblico.To handle external requests, the application gateway requires a public IP address. Questo indirizzo IP pubblico non deve avere un DomainNameLabel definito per essere usato dal gateway applicazione.This public IP address must not have a DomainNameLabel defined to be used by the application gateway.

# Create a public IP address for use with the application gateway. Defining the `DomainNameLabel` during creation is not supported for use with the application gateway.
$publicip = New-AzureRmPublicIpAddress -ResourceGroupName appgw-rg -name 'appgwpip' -Location "West US" -AllocationMethod Dynamic

Configurare il gateway applicazioneConfigure the application gateway

# Create an IP configuration to configure which subnet the application gateway uses. When the application gateway starts, it picks up an IP address from the configured subnet and routes network traffic to the IP addresses in the back-end IP pool.
$gipconfig = New-AzureRmApplicationGatewayIPConfiguration -Name 'gwconfig' -Subnet $gwSubnet

# Create a back-end pool to hold the addresses or NIC handles for the application that the application gateway is protecting.
$pool = New-AzureRmApplicationGatewayBackendAddressPool -Name 'pool01' -BackendIPAddresses 1.1.1.1, 2.2.2.2, 3.3.3.3

# Upload the authentication certificate to be used to communicate with the back-end servers.
$authcert = New-AzureRmApplicationGatewayAuthenticationCertificate -Name 'whitelistcert1' -CertificateFile <full path to .cer file>

# Configure the back-end HTTP settings to be used to define how traffic is routed to the back-end pool. The authentication certificate used in the previous step is added to the back-end HTTP settings.
$poolSetting = New-AzureRmApplicationGatewayBackendHttpSettings -Name 'setting01' -Port 443 -Protocol Https -CookieBasedAffinity Enabled -AuthenticationCertificates $authcert

# Create a front-end port to be used by the listener.
$fp = New-AzureRmApplicationGatewayFrontendPort -Name 'port01'  -Port 443

# Create a front-end IP configuration to associate the public IP address with the application gateway.
$fipconfig = New-AzureRmApplicationGatewayFrontendIPConfig -Name 'fip01' -PublicIPAddress $publicip

# Configure the certificate for the application gateway. This certificate is used to decrypt and re-encrypt the traffic on the application gateway.
$cert = New-AzureRmApplicationGatewaySslCertificate -Name cert01 -CertificateFile <full path to .pfx file> -Password <password for certificate file>

# Create the HTTP listener for the application gateway. Assign the front-end IP configuration, port, and SSL certificate to use.
$listener = New-AzureRmApplicationGatewayHttpListener -Name listener01 -Protocol Https -FrontendIPConfiguration $fipconfig -FrontendPort $fp -SslCertificate $cert

# Create a load-balancer routing rule that configures the load balancer behavior. In this example, a basic round-robin rule is created.
$rule = New-AzureRmApplicationGatewayRequestRoutingRule -Name 'rule01' -RuleType basic -BackendHttpSettings $poolSetting -HttpListener $listener -BackendAddressPool $pool

# Configure the SKU of the application gateway.
$sku = New-AzureRmApplicationGatewaySku -Name WAF_Medium -Tier WAF -Capacity 2

# Define the SSL policy to use.
$policy = New-AzureRmApplicationGatewaySslPolicy -PolicyType Predefined -PolicyName AppGwSslPolicy20170401S

# Configure the WAF configuration settings.
$config = New-AzureRmApplicationGatewayWebApplicationFirewallConfiguration -Enabled $true -FirewallMode "Prevention"

# Create the application gateway by using all the previously created configuration objects.
$appgw = New-AzureRmApplicationGateway -Name appgwtest -ResourceGroupName appgw-rg -Location "West US" -BackendAddressPools $pool -BackendHttpSettingsCollection $poolSetting -FrontendIpConfigurations $fipconfig  -GatewayIpConfigurations $gipconfig -FrontendPorts $fp -HttpListeners $listener -RequestRoutingRules $rule -Sku $sku -WebApplicationFirewallConfig $config -SslCertificates $cert -AuthenticationCertificates $authcert

Nota

I gateway applicazione creati con la configurazione di base del WAF sono configurati con CRS 3.0 per la protezione.Application gateways created with the basic WAF configuration are configured with CRS 3.0 for protections.

Ottenere un nome DNS del gateway applicazioneGet an application gateway DNS name

Dopo avere creato il gateway, il passaggio successivo prevede la configurazione del front-end per la comunicazione.After the gateway is created, the next step is to configure the front end for communication. Quando si usa un IP pubblico, il gateway applicazione richiede un nome DNS assegnato in modo dinamico, non descrittivo.When you use a public IP, the application gateway requires a dynamically assigned DNS name, which is not friendly. Per assicurarsi che gli utenti possano raggiungere il gateway applicazione, usare un record CNAME che faccia riferimento all'endpoint pubblico del gateway applicazione.To ensure that users can hit the application gateway, use a CNAME record to point to the public endpoint of the application gateway. Per altre informazioni, vedere Configurare un nome di dominio personalizzato per un servizio cloud di Azure.For more information, see Configure a custom domain name for an Azure cloud service.

Per configurare un alias, recuperare i dettagli del gateway applicazione e il relativo nome DNS/indirizzo IP usando l'elemento PublicIPAddress collegato al gateway applicazione.To configure an alias, retrieve details of the application gateway and its associated IP/DNS name by using the PublicIPAddress element attached to the application gateway. Usare il nome DNS del gateway applicazione per creare un record CNAME che associ le due applicazioni Web a questo nome DNS.Use the application gateway's DNS name to create a CNAME record, which points the two web applications to this DNS name. Non è consigliabile usare record A perché l'indirizzo VIP può cambiare al riavvio del gateway applicazione.We do not recommend using A records, because the VIP might change when the application gateway restarts.

Get-AzureRmPublicIpAddress -ResourceGroupName appgw-RG -Name publicIP01
Name                     : publicIP01
ResourceGroupName        : appgw-RG
Location                 : westus
Id                       : /subscriptions/<subscription_id>/resourceGroups/appgw-RG/providers/Microsoft.Network/publicIPAddresses/publicIP01
Etag                     : W/"00000d5b-54ed-4907-bae8-99bd5766d0e5"
ResourceGuid             : 00000000-0000-0000-0000-000000000000
ProvisioningState        : Succeeded
Tags                     : 
PublicIpAllocationMethod : Dynamic
IpAddress                : xx.xx.xxx.xx
PublicIpAddressVersion   : IPv4
IdleTimeoutInMinutes     : 4
IpConfiguration          : {
                                "Id": "/subscriptions/<subscription_id>/resourceGroups/appgw-RG/providers/Microsoft.Network/applicationGateways/appgwtest/frontendIP
                            Configurations/frontend1"
                            }
DnsSettings              : {
                                "Fqdn": "00000000-0000-xxxx-xxxx-xxxxxxxxxxxx.cloudapp.net"
                            }

Passaggi successiviNext steps

Per informazioni su come configurare la registrazione diagnostica, per registrare gli eventi che vengono rilevati o bloccati con un WAF, visitare Integrità back-end, log di diagnostica e metriche per il gateway applicazione.To learn how to configure diagnostic logging to log the events that are detected or prevented with a WAF, see Application Gateway diagnostics.