Share via


Configurar uma regra de limite de taxa de Firewall de Aplicações Web

A regra de limite de taxa do Azure Firewall de Aplicações Web para o Azure Front Door controla o número de pedidos permitidos a partir de um endereço IP de origem específico para a aplicação durante uma duração de limite de taxa. Para obter mais informações sobre a limitação de taxa, veja O que é a limitação de taxa para o Azure Front Door?.

Este artigo mostra como configurar uma regra de limite de taxa de firewall de aplicações Web (WAF) nos escalões Standard e Premium do Azure Front Door.

Scenario

Suponha que é responsável por um site público. Acabou de adicionar uma página com informações sobre uma promoção que a sua organização está a executar. Preocupa-se que, se os clientes visitarem essa página com demasiada frequência, alguns dos seus serviços de back-end poderão não ser dimensionados rapidamente e a aplicação poderá ter problemas de desempenho.

Decide criar uma regra de limite de taxa que restringe cada endereço IP de origem a um máximo de 1000 pedidos por minuto. Só aplica esta regra a pedidos que contenham */promo* no URL do pedido.

Dica

Se não tiver uma subscrição do Azure, crie uma conta gratuita antes de começar.

Criar um perfil do Azure Front Door e uma política WAF

  1. Na portal do Azure, selecione Criar um recurso.

    Captura de ecrã a mostrar o botão Criar um recurso na home page.

  2. Procure Front Door e selecione Perfis do Front Door e CDN.

    Captura de ecrã a mostrar o marketplace, com o Front Door realçado.

  3. Selecione Criar.

    Captura de ecrã que mostra os perfis do Front Door e da CDN, com o botão Criar realçado.

  4. Selecione Continuar para criar um Front Door para utilizar o processo de criação rápida do portal.

    Captura de ecrã a mostrar as ofertas do Azure Front Door, com a opção Criação rápida selecionada e o botão Continuar a criar um Front Door realçado.

  5. Introduza as informações necessárias na página Informações básicas :

    • Grupo de recursos: selecione um grupo de recursos existente ou crie um novo grupo de recursos para os recursos do Azure Front Door e WAF.
    • Nome: introduza o nome do seu perfil do Azure Front Door.
    • Escalão: selecione Standard ou Premium. Neste cenário, ambos os escalões suportam a limitação da taxa.
    • Nome do ponto final: forneça um nome exclusivo para o ponto final porque os pontos finais do Azure Front Door têm de ter nomes globalmente exclusivos.
    • Tipo de origem e Nome do anfitrião de origem: selecione a aplicação de origem que pretende proteger com a regra de limite de taxa.
  6. Junto a Política de WAF, selecione Criar novo.

    Captura de ecrã a mostrar o fluxo de trabalho de criação do Azure Front Door, com o botão Criar nova política da WAF realçado.

  7. Introduza o nome de uma política WAF e selecione Criar.

    Captura de ecrã que mostra o pedido de criação da política WAF, com o botão Criar realçado.

  8. Selecione Rever + criar>Criar.

    Captura de ecrã que mostra a configuração do perfil do Azure Front Door concluída.

  9. Após a conclusão da implementação, selecione Ir para recurso.

Criar uma regra de limite de taxa

  1. Selecione Regras personalizadas>Adicionar regra personalizada.

    Captura de ecrã que mostra a página de regras personalizadas da política WAF.

  2. Introduza as informações necessárias para criar uma regra de limite de taxa:

    • Nome da regra personalizada: introduza o nome da regra personalizada, como rateLimitRule.
    • Tipo de regra: selecione Limite de taxa.
    • Prioridade: introduza a prioridade da regra, como 1.
    • Duração do limite de taxa: selecione 1 minuto.
    • Limiar de limite de taxa (pedidos): introduza 1000.
  3. Em Condições, introduza as informações necessárias para especificar uma condição de correspondência para identificar os pedidos em que o URL contém a cadeia */promo*:

    • Tipo de correspondência: selecione Cadeia.
    • Variável de correspondência: introduza RequestUri.
    • Operação: selecione está.
    • Operador: selecione Contém.
    • Corresponder valores: introduza /promo.
  4. Em Ação, selecione Registar ou Bloquear.

    As regras de limite de taxa só suportam Log e Block ações. Allow não é suportado.

    Captura de ecrã que mostra a configuração da regra personalizada.

  5. Selecione Adicionar.

  6. Selecione Guardar.

    Captura de ecrã a mostrar a lista de regras personalizadas, incluindo a nova regra de limite de taxa.

Utilizar o modo de prevenção no WAF

Por predefinição, o portal do Azure cria políticas WAF no modo de deteção. Esta definição significa que a WAF não bloqueia pedidos. Para obter mais informações, veja Modos WAF.

Ajuste a WAF antes de utilizar o modo de prevenção. A otimização ajuda a evitar deteções de falsos positivos. Também ajuda a impedir que a WAF bloqueie pedidos legítimos.

Aqui, reconfigura a WAF para utilizar o modo de prevenção.

  1. Abra a política da WAF.

    Repare que o Modo de política está definido em Deteção.

    Captura de ecrã a mostrar a política WAF, com o modo de política e o botão Mudar para o modo de prevenção realçados.

  2. Selecione Mudar para o modo de prevenção.

Pré-requisitos

Antes de começar a configurar uma política de limite de taxas, configure o seu ambiente do PowerShell e crie um perfil do Azure Front Door.

Configurar o ambiente do PowerShell

O Azure PowerShell fornece um conjunto de cmdlets que utilizam o modelo do Azure Resource Manager para gerir os recursos do Azure.

Pode instalar o Azure PowerShell no seu computador local e utilizá-lo em qualquer sessão do PowerShell. Aqui, inicie sessão com as suas credenciais do Azure e instale o módulo Azure PowerShell para o Azure Front Door Standard ou Premium.

Ligar ao Azure com uma caixa de diálogo interativa para iniciar sessão

Inicie sessão no Azure ao executar o seguinte comando:

Connect-AzAccount

Instalar o PowerShellGet

Certifique-se de que a versão atual do PowerShellGet está instalada. Execute o seguinte comando:

Install-Module PowerShellGet -Force -AllowClobber

Em seguida, reinicie o PowerShell para garantir que utiliza a versão mais recente.

Instalar os módulos do PowerShell do Azure Front Door

Instale os módulos e Az.Cdn do PowerShell para trabalhar com o Az.FrontDoor Azure Front Door Standard ou Premium a partir do PowerShell.

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

Utilize o Az.Cdn módulo para trabalhar com os recursos Do Azure Front Door Standard ou Premium. Utilize o Az.FrontDoor módulo para trabalhar com recursos WAF.

Criar um grupo de recursos

Utilize o cmdlet New-AzResourceGroup para criar um novo grupo de recursos para o perfil do Azure Front Door e a política WAF. Atualize o nome e a localização do grupo de recursos para os seus próprios requisitos:

$resourceGroupName = 'FrontDoorRateLimit'

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

Criar um perfil do Azure Front Door

Utilize o cmdlet New-AzFrontDoorCdnProfile para criar um novo perfil do Azure Front Door.

Neste exemplo, vai criar um perfil padrão do Azure Front Door com o nome MyFrontDoorProfile:

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

Criar um ponto final do Azure Front Door

Utilize o cmdlet New-AzFrontDoorCdnEndpoint para adicionar um ponto final ao perfil do Azure Front Door.

Os pontos finais do Azure Front Door têm de ter nomes globalmente exclusivos, por isso, atualize o valor da $frontDoorEndpointName variável para algo exclusivo.

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

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

Definir uma condição de correspondência de URL

Utilize o cmdlet New-AzFrontDoorWafMatchConditionObject para criar uma condição de correspondência para identificar pedidos que devem ter o limite de taxa aplicado.

O exemplo seguinte corresponde a pedidos em que a RequestUri variável contém a cadeia /promo:

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

Criar uma regra de limite de taxa personalizada

Utilize o cmdlet New-AzFrontDoorWafCustomRuleObject para criar a regra de limite de taxa, que inclui a condição de correspondência que definiu no passo anterior e o limiar do pedido.

O exemplo seguinte define o limite como 1000:

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

Quando qualquer endereço IP de origem envia mais de 1000 pedidos num minuto, o WAF bloqueia os pedidos subsequentes até ao minuto seguinte.

Criar uma política WAF

Utilize o cmdlet New-AzFrontDoorWafPolicy para criar uma política WAF, que inclui a regra personalizada que criou.

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

Configurar uma política de segurança para associar o perfil do Azure Front Door à sua política WAF

Utilize o cmdlet New-AzFrontDoorCdnSecurityPolicy para criar uma política de segurança para o seu perfil do Azure Front Door. Uma política de segurança associa a sua política WAF a domínios que pretende proteger pela regra WAF.

Neste exemplo, vai associar o nome de anfitrião predefinido do ponto final à sua política 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

Pré-requisitos

Antes de começar a configurar uma política de limite de taxas, configure o ambiente da CLI do Azure e crie um perfil do Azure Front Door.

Configurar o ambiente da CLI do Azure

A CLI do Azure fornece um conjunto de comandos que utilizam o modelo de Resource Manager do Azure para gerir os seus recursos do Azure.

Pode instalar a CLI do Azure no seu computador local e utilizá-la em qualquer sessão de shell. Aqui, inicie sessão com as suas credenciais do Azure e instale a extensão da CLI do Azure para o Azure Front Door Standard ou Premium.

Ligar ao Azure com uma caixa de diálogo interativa para iniciar sessão

Inicie sessão no Azure ao executar o seguinte comando:

az login

Instalar a extensão do Azure Front Door para a CLI do Azure

Instale a front-door extensão para trabalhar com a WAF do Azure Front Door a partir da CLI do Azure:

az extension add --name front-door

Utilize os comandos para trabalhar com os az afd recursos Do Azure Front Door Standard ou Premium. Utilize os az network front-door waf-policy comandos para trabalhar com recursos WAF.

Criar um grupo de recursos

Utilize o comando az group create para criar um novo grupo de recursos para o perfil do Azure Front Door e a política WAF. Atualize o nome e a localização do grupo de recursos para os seus próprios requisitos:

resourceGroupName='FrontDoorRateLimit'

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

Criar um perfil do Azure Front Door

Utilize o comando az afd profile create para criar um novo perfil do Azure Front Door.

Neste exemplo, vai criar um perfil padrão do Azure Front Door com o nome MyFrontDoorProfile:

frontDoorProfileName='MyFrontDoorProfile'

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

Criar um ponto final do Azure Front Door

Utilize o comando az afd endpoint create para adicionar um ponto final ao seu perfil do Azure Front Door.

Os pontos finais do Azure Front Door têm de ter nomes globalmente exclusivos, por isso, atualize o valor da frontDoorEndpointName variável para algo exclusivo.

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

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

Criar uma política WAF

Utilize o comando az network front-door waf-policy create para criar uma política WAF:

wafPolicyName='MyWafPolicy'

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

Preparar para adicionar uma regra de limite de taxa personalizada

Utilize o comando az network front-door waf-policy rule create para criar uma regra de limite de taxa personalizada. O exemplo seguinte define o limite para 1000 pedidos por minuto.

As regras de limite de taxa têm de conter uma condição de correspondência, que cria no próximo passo. Neste comando, vai incluir o --defer argumento, que indica à CLI do Azure para não submeter a regra para o Azure ainda.

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 qualquer endereço IP de origem envia mais de 1000 pedidos num minuto, o WAF bloqueia os pedidos subsequentes até ao minuto seguinte.

Adicionar uma condição de correspondência

Utilize o comando az network front-door waf-policy rule match-condition add para adicionar uma condição de correspondência à sua regra personalizada. A condição de correspondência identifica os pedidos que devem ter o limite de taxa aplicado.

O exemplo seguinte corresponde a pedidos em que a RequestUri variável contém a cadeia /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 submete este comando, a CLI do Azure cria a regra de limite de taxa e corresponde à condição em conjunto.

Configurar uma política de segurança para associar o perfil do Azure Front Door à sua política WAF

Utilize o comando az afd security-policy create para criar uma política de segurança para o seu perfil do Azure Front Door. Uma política de segurança associa a sua política WAF a domínios que pretende proteger pela regra WAF.

Neste exemplo, vai associar o nome de anfitrião predefinido do ponto final à sua política 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

O código anterior procura os identificadores de recursos do Azure para a política WAF e o ponto final do Azure Front Door para que possa associá-los à sua política de segurança.

Nota

Sempre que fizer alterações à sua política WAF, não precisa de recriar a política de segurança do Azure Front Door. As atualizações da política WAF são aplicadas automaticamente aos domínios do Azure Front Door.

Início Rápido

Para criar um perfil do Azure Front Door com uma regra de limite de taxa com o Bicep, veja o início rápido do Azure Front Door Standard ou Premium com limite de taxa bicep.

Passos seguintes

Saiba mais sobre o Azure Front Door.