Condividi tramite


Configurare una regola di limite di frequenza di Web Application Firewall

La regola di limite di frequenza di Web Application Firewall di Azure per Frontdoor di Azure controlla il numero di richieste consentite da un indirizzo IP di origine specifico all'applicazione durante una durata del limite di frequenza. Per altre informazioni sulla limitazione della frequenza, vedere Che cos'è la limitazione della frequenza per Frontdoor di Azure?.

Questo articolo illustra come configurare una regola di limite di frequenza web application firewall (WAF) nei livelli Frontdoor di Azure Standard e Premium.

Scenario

Si supponga di essere responsabile di un sito Web pubblico. È stata appena aggiunta una pagina con informazioni su una promozione eseguita dall'organizzazione. Si è preoccupati che se i client visitano la pagina troppo spesso, alcuni dei servizi back-end potrebbero non essere ridimensionati rapidamente e l'applicazione potrebbe avere problemi di prestazioni.

Si decide di creare una regola di limite di frequenza che limita ogni indirizzo IP di origine a un massimo di 1.000 richieste al minuto. Questa regola viene applicata solo alle richieste che contengono */promo* nell'URL della richiesta.

Suggerimento

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

Creare un profilo Frontdoor di Azure e criteri WAF

  1. Nel portale di Azure selezionare Crea una risorsa.

    Screenshot che mostra il pulsante Crea una risorsa nella home page.

  2. Cercare Frontdoor e selezionare Profili Frontdoor e CDN.

    Screenshot che mostra il marketplace, con Frontdoor evidenziato.

  3. Seleziona Crea.

    Screenshot che mostra i profili Frontdoor e della rete CDN, con il pulsante Crea evidenziato.

  4. Selezionare Continua per creare una Frontdoor per usare il processo di creazione rapida del portale.

    Screenshot che mostra le offerte di Frontdoor di Azure, con l'opzione Creazione rapida selezionata e il pulsante Continue to create a Frontdoor evidenziato.

  5. Immettere le informazioni necessarie nella pagina Dati principali:

    • Gruppo di risorse: selezionare un gruppo di risorse esistente o creare un nuovo gruppo di risorse per le risorse Frontdoor di Azure e WAF.
    • Nome: immettere il nome del profilo Frontdoor di Azure.
    • Livello: selezionare Standard o Premium. Per questo scenario, entrambi i livelli supportano la limitazione della frequenza.
    • Nome endpoint: specificare un nome univoco per l'endpoint perché gli endpoint Frontdoor di Azure devono avere nomi univoci a livello globale.
    • Tipo di origine e Nome host origine: selezionare l'applicazione di origine da proteggere con la regola di limite di frequenza.
  6. Accanto a Criteri WAFselezionare Crea nuovo.

    Screenshot che mostra il flusso di lavoro di creazione di Frontdoor di Azure, con il pulsante Crea nuovo criterio WAF evidenziato.

  7. Immettere il nome di un criterio WAF e selezionare Crea.

    Screenshot che mostra il prompt di creazione dei criteri WAF, con il pulsante Crea evidenziato.

  8. Selezionare Rivedi e crea>Crea.

    Screenshot che mostra la configurazione del profilo Frontdoor di Azure completata.

  9. Una volta completata la distribuzione, selezionare Vai alla risorsa.

Creare una regola di limite di frequenza

  1. Selezionare Regole personalizzate > Aggiungi regola personalizzata.

    Screenshot che mostra la pagina delle regole personalizzate del criterio WAF.

  2. Immettere le informazioni necessarie per creare una regola di limite di frequenza:

    • Nome regola personalizzata: immettere il nome della regola personalizzata, ad esempio rateLimitRule.
    • Tipo di regola: selezionare Limite di frequenza.
    • Priorità: immettere la priorità della regola, ad esempio 1.
    • Durata limite velocità: selezionare 1 minuto.
    • Soglia limite di frequenza (richieste): inserire 1000.
  3. In Condizioniimmettere le informazioni necessarie per specificare una condizione di corrispondenza per identificare le richieste in cui l'URL contiene la stringa */promo*:

    • Tipo di corrispondenza: selezionare Stringa.
    • Variabile di corrispondenza: immettere RequestUri.
    • Operazione: selezionare è.
    • Operatore: selezionare Contiene.
    • Valori di corrispondenza: immettere /promo.
  4. Per Azioneselezionare Log o Blocca.

    Le regole limite di frequenza supportano solo le azioni Log e Block. Allow non è supportata.

    Screenshot che mostra la configurazione della regola personalizzata.

  5. Selezionare Aggiungi.

  6. Seleziona Salva.

    Screenshot che mostra l'elenco di regole personalizzate, inclusa la nuova regola di limite di frequenza.

Usare la modalità di prevenzione nel WAF

Per impostazione predefinita, il portale di Azure crea criteri WAF in modalità di rilevamento. Questa impostazione indica che WAF non blocca le richieste. Per altre informazioni, vedere Modalità WAF.

Ottimizzare il WAF prima di usare la modalità di prevenzione. L'ottimizzazione consente di evitare rilevamenti falsi positivi. Consente anche di impedire al WAF di bloccare le richieste legittime.

Qui si riconfigura WAF per l'uso della modalità di prevenzione.

  1. Aprire il criterio WAF.

    Si noti che la modalità criteri è impostata in Rilevamento.

    Screenshot che mostra il criterio WAF, con il pulsante Passa alla modalità di prevenzione evidenziato.

  2. Selezionare Passa alla modalità di prevenzione.

Prerequisiti

Prima di iniziare a configurare un criterio di rate-limit, impostare l'ambiente di PowerShell e creare un profilo Frontdoor di Azure.

Configurare l'ambiente PowerShell

Azure PowerShell offre un set di cmdlet che usano il modello Azure Resource Manager per la gestione delle risorse di Azure.

È possibile installare Azure PowerShell nel computer locale e usarlo in qualsiasi sessione di PowerShell. Qui si accede con le credenziali di Azure e si installa il modulo Azure PowerShell per Frontdoor di Azure Standard o Premium.

Connettersi ad Azure con una finestra di dialogo interattiva per l'accesso

Accedere ad Azure mediante il comando seguente:

Connect-AzAccount

Installare PowerShellGet

Assicurarsi che sia installata la versione corrente di PowerShellGet. Esegui questo comando:

Install-Module PowerShellGet -Force -AllowClobber

Riavviare quindi PowerShell per assicurarsi di usare la versione più recente.

Installare i moduli di PowerShell di Frontdoor di Azure

Installare i moduli PowerShell Az.FrontDoor e Az.Cdn per l'uso con Frontdoor di Azure Standard o Premium da PowerShell.

Install-Module -Name Az.FrontDoor
Install-Module -Name Az.Cdn

Usare il modulo Az.Cdn per usare le risorse di Frontdoor di Azure Standard o Premium. Usare il modulo Az.FrontDoor per usare le risorse WAF.

Creare un gruppo di risorse

Usare il cmdlet New-AzResourceGroup per creare un nuovo gruppo di risorse per il profilo Frontdoor di Azure e i criteri WAF. Aggiornare il nome e il percorso del gruppo di risorse in base ai propri requisiti:

$resourceGroupName = 'FrontDoorRateLimit'

New-AzResourceGroup -Name $resourceGroupName -Location 'westus'

Creare una risorsa Frontdoor di Azure

Usare il cmdlet New-AzFrontDoorCdnProfile per creare un nuovo profilo Frontdoor di Azure.

In questo esempio viene creato un profilo standard di Frontdoor di Azure denominato MyFrontDoorProfile:

$frontDoorProfile = New-AzFrontDoorCdnProfile `
  -Name 'MyFrontDoorProfile' `
  -ResourceGroupName $resourceGroupName `
  -Location global `
  -SkuName Standard_AzureFrontDoor

Creare un endpoint Frontdoor di Azure

Usare il cmdlet New-AzFrontDoorCdnEndpoint per aggiungere un endpoint al profilo Frontdoor di Azure.

Gli endpoint Frontdoor di Azure devono avere nomi univoci a livello globale, per cui aggiornare il valore della variabile $frontDoorEndpointName a un valore univoco.

$frontDoorEndpointName = '<unique-front-door-endpoint-name>'

$frontDoorEndpoint = New-AzFrontDoorCdnEndpoint `
  -EndpointName $frontDoorEndpointName `
  -ProfileName $frontDoorProfile.Name `
  -ResourceGroupName $frontDoorProfile.ResourceGroupName `
  -Location $frontDoorProfile.Location

Definire una condizione di corrispondenza URL

Usare il cmdlet New-AzFrontDoorWafMatchConditionObject per creare una condizione di corrispondenza per identificare le richieste a cui deve essere applicato il limite di velocità.

L'esempio seguente corrisponde alle richieste in cui la variabile RequestUri contiene la stringa /promo:

$promoMatchCondition = New-AzFrontDoorWafMatchConditionObject `
  -MatchVariable RequestUri `
  -OperatorProperty Contains `
  -MatchValue '/promo'

Creare una regola di limite di frequenza personalizzata

Usare il cmdlet New-AzFrontDoorWafCustomRuleObject per creare la regola di limite di frequenza, che include la condizione di corrispondenza definita nel passaggio precedente e la soglia della richiesta.

Nell'esempio seguente viene impostato il limite su 1000:

$promoRateLimitRule = New-AzFrontDoorWafCustomRuleObject `
  -Name 'rateLimitRule' `
  -RuleType RateLimitRule `
  -MatchCondition $promoMatchCondition `
  -RateLimitThreshold 1000 `
  -Action Block `
  -Priority 1

Quando un indirizzo IP di origine invia più di 1.000 richieste entro un minuto, il WAF blocca le richieste successive fino all'avvio del minuto successivo.

Creare un criterio WAF

Usare il cmdlet New-AzFrontDoorWafPolicy per creare un criterio WAF, che include la regola personalizzata creata.

$wafPolicy = New-AzFrontDoorWafPolicy `
  -Name 'MyWafPolicy' `
  -ResourceGroupName $frontDoorProfile.ResourceGroupName `
  -Sku Standard_AzureFrontDoor `
  -CustomRule $promoRateLimitRule

Configurare un criterio di sicurezza per associare il profilo Frontdoor di Azure ai criteri WAF

Usare il cmdlet New-AzFrontDoorCdnSecurityPolicy per creare criteri di sicurezza per il profilo Frontdoor di Azure. Un criterio di sicurezza associa i criteri WAF ai domini che si desidera proteggere con la regola WAF.

In questo esempio si associa il nome host predefinito dell'endpoint ai criteri WAF:

$securityPolicyAssociation = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallAssociationObject `
  -PatternsToMatch @("/*") `
  -Domain @(@{"Id"=$($frontDoorEndpoint.Id)})

$securityPolicyParameters = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallParametersObject `
  -Association $securityPolicyAssociation `
  -WafPolicyId $wafPolicy.Id

$frontDoorSecurityPolicy = New-AzFrontDoorCdnSecurityPolicy `
  -Name 'MySecurityPolicy' `
  -ProfileName $frontDoorProfile.Name `
  -ResourceGroupName $frontDoorProfile.ResourceGroupName `
  -Parameter $securityPolicyParameters

Prerequisiti

Prima di iniziare a configurare un criterio di limite di velocità, configurare l'ambiente dell'interfaccia della riga di comando di Azure e creare un profilo Frontdoor di Azure.

Configurare l'ambiente dell'interfaccia della riga di comando di Azure

L'interfaccia della riga di comando di Azure offre un set di comandi che usano il modello Azure Resource Manager per la gestione delle risorse di Azure.

È possibile installare l'interfaccia della riga di comando di Azure nel computer locale e usarla in qualsiasi sessione della shell. Qui si accede con le credenziali di Azure e si installa l'estensione dell'interfaccia della riga di comando di Azure per Frontdoor di Azure Standard o Premium.

Connettersi ad Azure con una finestra di dialogo interattiva per l'accesso

Accedere ad Azure mediante il comando seguente:

az login

Installare l'estensione Frontdoor di Azure per l'interfaccia della riga di comando di Azure

Installare l'estensione front-door per usare il WAF Frontdoor di Azure dall'interfaccia della riga di comando di Azure:

az extension add --name front-door

Usare i comandi az afd per usare le risorse Frontdoor di Azure Standard o Premium. Usare i comandi az network front-door waf-policy per usare le risorse WAF.

Creare un gruppo di risorse

Usare il comando az group create per creare un nuovo gruppo di risorse per il profilo Frontdoor di Azure e i criteri WAF. Aggiornare il nome e il percorso del gruppo di risorse in base ai propri requisiti:

resourceGroupName='FrontDoorRateLimit'

az group create \
  --name $resourceGroupName \
  --location westus

Creare una risorsa Frontdoor di Azure

Usare il comando az afd profile create per creare un nuovo profilo Frontdoor di Azure.

In questo esempio viene creato un profilo standard di Frontdoor di Azure denominato MyFrontDoorProfile:

frontDoorProfileName='MyFrontDoorProfile'

az afd profile create \
  --profile-name $frontDoorProfileName \
  --resource-group $resourceGroupName \
  --sku Standard_AzureFrontDoor

Creare un endpoint Frontdoor di Azure

Usare il comando az afd endpoint create per aggiungere un endpoint al profilo di Frontdoor di Azure.

Gli endpoint Frontdoor di Azure devono avere nomi univoci a livello globale, per cui aggiornare il valore della variabile frontDoorEndpointName a un valore univoco.

frontDoorEndpointName='<unique-front-door-endpoint-name>'

az afd endpoint create \
  --endpoint-name $frontDoorEndpointName \
  --profile-name $frontDoorProfileName \
  --resource-group $resourceGroupName \

Creare un criterio WAF

Usare il comando az network front-door waf-policy create per creare un criterio WAF:

wafPolicyName='MyWafPolicy'

az network front-door waf-policy create \
  --name $wafPolicyName \
  --resource-group $resourceGroupName \
  --sku Standard_AzureFrontDoor

Preparare l'aggiunta di una regola di limite di frequenza personalizzata

Usare il comando az network front-door waf-policy rule create per creare una regola personalizzata rate-limit. Nell'esempio seguente il limite viene impostato su 1.000 richieste al minuto.

Le regole limite di frequenza devono contenere una condizione di corrispondenza, creata nel passaggio successivo. In questo comando si include l'argomento --defer che indica all'interfaccia della riga di comando di Azure di non inviare ancora la regola ad Azure.

az network front-door waf-policy rule create \
  --name rateLimitRule \
  --policy-name $wafPolicyName \
  --resource-group $resourceGroupName \
  --rule-type RateLimitRule \
  --rate-limit-duration 1 \
  --rate-limit-threshold 1000 \
  --action Block \
  --priority 1 \
  --defer

Quando un indirizzo IP di origine invia più di 1.000 richieste entro un minuto, il WAF blocca le richieste successive fino all'avvio del minuto successivo.

Aggiungere una condizione di corrispondenza

Usare il comando az network front-door waf-policy rule match-condition add per aggiungere una condizione di corrispondenza alla regola personalizzata. La condizione di corrispondenza identifica le richieste che devono avere il limite di velocità applicato.

L'esempio seguente corrisponde alle richieste in cui la variabile RequestUri contiene la stringa /promo:

az network front-door waf-policy rule match-condition add \
  --match-variable RequestUri \
  --operator Contains \
  --values '/promo' \
  --name rateLimitRule \
  --policy-name $wafPolicyName \
  --resource-group $resourceGroupName

Quando si invia questo comando, l'interfaccia della riga di comando di Azure crea insieme la regola limite di frequenza e la condizione di corrispondenza.

Configurare un criterio di sicurezza per associare il profilo Frontdoor di Azure ai criteri WAF

Usare il comando az afd security-policy create per creare un criterio di sicurezza per il profilo Frontdoor di Azure. Un criterio di sicurezza associa i criteri WAF ai domini che si desidera proteggere con la regola WAF.

In questo esempio si associa il nome host predefinito dell'endpoint ai criteri WAF:

securityPolicyName='MySecurityPolicy'

wafPolicyResourceId=$(az network front-door waf-policy show --name $wafPolicyName --resource-group $resourceGroupName --query id --output tsv)
frontDoorEndpointResourceId=$(az afd endpoint show --endpoint-name $frontDoorEndpointName --profile-name $frontDoorProfileName --resource-group $resourceGroupName --query id --output tsv)

az afd security-policy create \
  --security-policy-name $securityPolicyName \
  --profile-name $frontDoorProfileName \
  --resource-group $resourceGroupName \
  --domains $frontDoorEndpointResourceId \
  --waf-policy $wafPolicyResourceId

Il codice precedente cerca gli identificatori delle risorse di Azure per i criteri WAF e l'endpoint Frontdoor di Azure in modo che possa associarli ai criteri di sicurezza.

Nota

Ogni volta che si apportano modifiche ai criteri WAF, non è necessario ricreare i criteri di sicurezza di Frontdoor di Azure. Gli aggiornamenti dei criteri WAF vengono applicati automaticamente ai domini Frontdoor di Azure.

Guida introduttiva

Per creare un profilo Frontdoor di Azure con una regola di limite di velocità usando Bicep, vedere l'avvio rapido Bicep Frontdoor di Azure Standard o Premium con limite di velocità.

Passaggi successivi

Altre informazioni su Frontdoor di Azure.