Configurar uma política do WAF usando o Azure PowerShell

Uma política de WAF (firewall de aplicativo Web) define as inspeções necessárias quando uma solicitação chega ao Azure Front Door.

Este artigo mostra como configurar uma política WAF para Azure Front Door Standard ou Premium que consiste em algumas regras personalizadas e que tenha o conjunto de regras padrão gerenciado pelo Azure ativado. Regras personalizadas se aplicam tanto ao nível Standard quanto ao Premium. Conjuntos de regras gerenciados, como o Conjunto de Regras Padrão, exigem o nível Premium.

Regras personalizadas e o Conjunto de Regras Padrão são opcionais; inclua um ou ambos para atender às suas necessidades. Você define o modo de política WAF (Detecção ou Prevenção) quando cria a política em uma etapa posterior.

Pré-requisitos

  • Uma conta do Azure com uma assinatura ativa. Crie uma conta gratuitamente.

  • Um perfil Standard ou Premium do Azure Front Door. Se precisar criar um, veja Quickstart: Crie um perfil Azure Front Door Standard/Premium usando PowerShell. Os exemplos deste artigo usam um perfil Premium porque conjuntos de regras gerenciadas exigem o nível Premium.

  • Azure Cloud Shell ou Azure PowerShell.

    As etapas deste artigo executam os cmdlets do Azure PowerShell interativamente no Azure Cloud Shell. Para executar os cmdlets no Cloud Shell, selecione Open Cloud Shell no canto superior direito de um bloco de código. Selecione Copiar para copiar o código e cole-o no Cloud Shell para executá-lo. Você também pode executar o Cloud Shell no portal do Azure.

    Você também pode instalar o Azure PowerShell localmente para executar os cmdlets. Se você executar o PowerShell localmente, faça login no Azure usando o cmdlet Connect-AzAccount.

  • Os módulos do PowerShell Az.Cdn e Az.FrontDoor. Use o Az.Cdn módulo para trabalhar com recursos Azure Front Door Standard e Premium, e o Az.FrontDoor módulo para trabalhar com recursos WAF. Instale ambos os módulos executando os seguintes comandos:

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

Regra personalizada com base em parâmetros HTTP

O exemplo a seguir mostra como configurar uma regra personalizada com duas condições de correspondência usando New-AzFrontDoorWafMatchConditionObject. As solicitações são provenientes de um site específico, conforme definido pelo referenciador. Além disso, a cadeia de caracteres de consulta não contém a 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

Regra personalizada baseada em um método de solicitação HTTP

Crie uma regra bloqueando um método 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

Crie uma regra personalizada com base na restrição de tamanho

O exemplo a seguir cria uma regra que bloqueia requisições com URL maior que 100 caracteres usando o Azure PowerShell.

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

Adicionar um conjunto de regras padrão gerenciado

Conjuntos de regras gerenciadas estão disponíveis no Azure Front Door Premium. O exemplo a seguir cria um objeto gerenciado de Conjunto de Regras Padrão usando Azure PowerShell.

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

Observação

Conjuntos de regras gerenciadas exigem o Azure Front Door Premium. Azure Front Door Standard suporta apenas regras personalizadas. Este exemplo usa Microsoft_DefaultRuleSet versão 2.2. Para todas as versões disponíveis, veja grupos de regras e regras DRS do Firewall de Aplicativo Web.

Criar uma política de WAF

Crie uma política WAF que inclua as regras personalizadas e o Conjunto de Regras Padrão gerenciado das etapas anteriores usando New-AzFrontDoorWafPolicy. Defina -Sku para Premium_AzureFrontDoor incluir regras gerenciadas, ou para Standard_AzureFrontDoor apenas para regras personalizadas.

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

Associe a política WAF ao seu endpoint

Para Azure Front Door Standard e Premium, você associa uma política WAF ao seu endpoint criando uma política de segurança no perfil do Azure Front Door. Uma política de segurança associa sua política de WAF aos domínios que você quer que o WAF proteja.

Recupere seu endpoint usando Get-AzFrontDoorCdnEndpoint e substitua o grupo de recursos, o perfil e o nome do endpoint pelos seus próprios. Depois, use New-AzFrontDoorCdnSecurityPolicy para associar o nome de host padrão do endpoint à sua política de 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

Observação

Uma política de segurança se aplica aos domínios em sua associação. Para proteger mais domínios, adicione-os à associação ou crie políticas de segurança adicionais.