Configurar uma política WAF usando o Azure PowerShell

Uma política de firewall de aplicativo Web (WAF) define as inspeções necessárias quando uma solicitação chega à Porta da Frente do Azure.

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

Regras personalizadas e o Conjunto de Regras Padrão são opcionais; inclua uma ou ambas para satisfazer as suas necessidades. Define o modo de política WAF (Deteção ou Prevenção) quando cria a política numa etapa posterior.

Pré-requisitos

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

  • Um perfil de Azure Front Door Standard ou Premium. Se precisar de criar um, consulte Quickstart: Criar um perfil Azure Front Door Standard/Premium usando PowerShell. Os exemplos neste artigo utilizam um perfil Premium porque os conjuntos de regras geridas exigem o nível Premium.

  • Azure Cloud Shell ou Azure PowerShell.

    As etapas neste 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 de dentro do portal do Azure.

    Você também pode instalar o Azure PowerShell localmente para executar os cmdlets. Se executares o PowerShell localmente, inicia sessão em 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 os recursos Standard e Premium do Azure Front Door, 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 baseada 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 de um site especificado, conforme definido pelo referenciador, e a cadeia de caracteres de consulta não contém 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

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

O exemplo seguinte cria uma regra que bloqueia pedidos com URL superior a 100 caracteres usando 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 geridos estão disponíveis no Azure Front Door Premium. O exemplo seguinte cria um objeto de Conjunto de Regras Padrão gerido usando o Azure PowerShell.

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

Observação

Conjuntos de regras geridos requerem o Azure Front Door Premium. Azure Front Door Standard suporta apenas regras personalizadas. Este exemplo utiliza a versão 2.2 do Microsoft_DefaultRuleSet. Para todas as versões disponíveis, consulte grupos de regras e regras do Firewall de Aplicações Web DRS.

Criar uma política WAF

Crie uma política WAF que inclua as regras personalizadas e o conjunto de regras predefinido gerido dos passos anteriores, ao utilizar New-AzFrontDoorWafPolicy. Defina -Sku para Premium_AzureFrontDoor incluir regras geridas, 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, associa uma política WAF ao seu endpoint criando uma política de segurança no perfil Azure Front Door. Uma política de segurança associa a sua política de WAF aos domínios que quer que o WAF proteja.

Obtenha o seu endpoint ao utilizar Get-AzFrontDoorCdnEndpoint e substitua o grupo de recursos, o perfil e o nome do endpoint pelos seus próprios. Depois, use o New-AzFrontDoorCdnSecurityPolicy para associar o nome de host padrão do endpoint à sua política 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 aplica-se aos domínios associados. Para proteger mais domínios, adicione-os à associação ou crie políticas de segurança adicionais.