Configurare un criterio WAF usando Azure PowerShell

Un criterio web application firewall (WAF) definisce le ispezioni necessarie quando una richiesta arriva da Frontdoor di Azure.

Questo articolo mostra come configurare una policy WAF per Frontdoor di Azure Standard o Premium che consista in alcune regole personalizzate e abbia abilitato il set di regole predefinite gestito da Azure. Le regole personalizzate si applicano sia al livello Standard che a quello Premium. I set di regole gestite, come il Default Rule Set, richiedono il livello Premium.

Le regole personalizzate e il Set di Regole Predefinite sono opzionali; includere una o entrambe per adattarsi alle tue esigenze. Impostate la modalità politica WAF (Rilevamento o Prevenzione) quando create la policy in un passaggio successivo.

Prerequisiti

  • Un account Azure con una sottoscrizione attiva. Creare un account gratuito.

  • Un profilo Frontdoor di Azure Standard o Premium. Se devi crearne uno, vedi Guida introduttiva: creare un profilo Frontdoor di Azure Standard/Premium con PowerShell. Gli esempi in questo articolo utilizzano un profilo Premium perché i set di regole gestite richiedono il livello Premium.

  • Azure Cloud Shell o Azure PowerShell.

    I passaggi descritti in questo articolo eseguono i cmdlet di Azure PowerShell in modo interattivo in Azure Cloud Shell. Per eseguire i cmdlet nella Cloud Shell, selezionare Apri Cloud Shell nell'angolo superiore destro di un blocco di codice. Selezionare Copia per copiare il codice e incollarlo in Cloud Shell per eseguirlo. È anche possibile eseguire il Cloud Shell dall'interno del portale di Azure.

    È anche possibile installare Azure PowerShell in locale per eseguire i cmdlet. Se si esegue PowerShell in locale, accedere ad Azure usando il cmdlet Connect-AzAccount.

  • I moduli PowerShell Az.Cdn e Az.FrontDoor. Usa il Az.Cdn modulo per lavorare con le risorse Standard e Premium di Frontdoor di Azure, e il Az.FrontDoor modulo per lavorare con le risorse WAF. Installa entrambi i moduli eseguendo i seguenti comandi:

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

Regola personalizzata basata sui parametri HTTP

Nell'esempio seguente viene illustrato come configurare una regola personalizzata con due condizioni di corrispondenza usando New-AzFrontDoorWafMatchConditionObject. Le richieste provengono da un sito specificato come definito dal referrer e la stringa di query non contiene password.

$referer = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestHeader -OperatorProperty Equal -Selector "Referer" -MatchValue "www.mytrustedsites.com/referpage.html"
$password = New-AzFrontDoorWafMatchConditionObject -MatchVariable QueryString -OperatorProperty Contains -MatchValue "password"
$AllowFromTrustedSites = New-AzFrontDoorWafCustomRuleObject -Name "AllowFromTrustedSites" -RuleType MatchRule -MatchCondition $referer,$password -Action Allow -Priority 1

Regola personalizzata basata su un metodo di richiesta HTTP

Creare una regola che blocca un metodo PUT usando New-AzFrontDoorWafCustomRuleObject.

$put = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestMethod -OperatorProperty Equal -MatchValue PUT
$BlockPUT = New-AzFrontDoorWafCustomRuleObject -Name "BlockPUT" -RuleType MatchRule -MatchCondition $put -Action Block -Priority 2

Creare una regola personalizzata in base al vincolo delle dimensioni

Il seguente esempio crea una regola che blocca le richieste con URL superiore a 100 caratteri utilizzando Azure PowerShell.

$url = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestUri -OperatorProperty GreaterThanOrEqual -MatchValue 100
$URLOver100 = New-AzFrontDoorWafCustomRuleObject -Name "URLOver100" -RuleType MatchRule -MatchCondition $url -Action Block -Priority 3

Aggiungere un set di regole predefinito gestito

Set di regole gestite sono disponibili su Frontdoor di Azure Premium. Il seguente esempio crea un oggetto Default Rule Set gestito utilizzando Azure PowerShell.

$managedRules = New-AzFrontDoorWafManagedRuleObject -Type Microsoft_DefaultRuleSet -Version 2.2

Nota

I set di regole gestite richiedono Frontdoor di Azure Premium. Frontdoor di Azure Standard supporta solo regole personalizzate. Questo esempio utilizza Microsoft_DefaultRuleSet la versione 2.2. Per tutte le versioni disponibili, consulta Gruppi di regole e regole DRS di Web application firewall.

Impostare una politica WAF

Crea una policy WAF che includa le regole personalizzate e il Default Rule Set gestito dai passaggi precedenti utilizzando New-AzFrontDoorDoorWafPolicy. Imposta -Sku su Premium_AzureFrontDoor per includere le regole gestite oppure su Standard_AzureFrontDoor per solo le regole personalizzate.

$myWAFPolicy = New-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $resourceGroupName -Sku Premium_AzureFrontDoor -CustomRule $AllowFromTrustedSites,$BlockPUT,$URLOver100 -ManagedRule $managedRules -EnabledState Enabled -Mode Prevention

Associa la policy WAF al tuo endpoint

Per Frontdoor di Azure Standard e Premium, associ una policy WAF al tuo endpoint creando una policy di sicurezza sul profilo Frontdoor di Azure. Una policy di sicurezza associa la tua policy WAF ai domini che vuoi che il WAF protegga.

Recupera il tuo endpoint usando Get-AzFrontDoorCdnEndpoint e sostituisci i nomi del gruppo risorse, del profilo e degli endpoint con i tuoi. Poi usa New-AzFrontDoorCdnSecurityPolicy per associare il nome host predefinito dell'endpoint alla tua policy WAF.

$frontDoorEndpoint = Get-AzFrontDoorCdnEndpoint -ResourceGroupName $resourceGroupName -ProfileName $frontDoorProfileName -EndpointName $frontDoorEndpointName

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

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

New-AzFrontDoorCdnSecurityPolicy `
  -Name 'MySecurityPolicy' `
  -ProfileName $frontDoorProfileName `
  -ResourceGroupName $resourceGroupName `
  -Parameter $securityPolicyParameters

Nota

Una politica di sicurezza si applica ai domini ad essa associati. Per proteggere più domini, aggiungili all'associazione o crea politiche di sicurezza aggiuntive.