Partilhar via


Configurar uma regra de limite de taxa do Web Application Firewall

A regra de limite de taxa do Firewall do Aplicativo Web do Azure para o Azure Front Door controla o número de solicitações permitidas de um determinado endereço IP de origem para o aplicativo durante uma duração de limite de taxa. Para obter mais informações sobre limitação de taxa, consulte O que é limitação de taxa para o Azure Front Door?.

Este artigo mostra como configurar uma regra de limite de taxa do firewall de aplicativo Web (WAF) nas camadas Standard e Premium do Azure Front Door.

Cenário

Suponha que você seja responsável por um site público. Você acabou de adicionar uma página com informações sobre uma promoção que sua organização está executando. Você está preocupado que, se os clientes visitarem essa página com muita frequência, alguns de seus serviços de back-end podem não ser dimensionados rapidamente e o aplicativo pode ter problemas de desempenho.

Você decide criar uma regra de limite de taxa que restringe cada endereço IP de origem a um máximo de 1.000 solicitações por minuto. Você só aplica essa regra a solicitações que contêm */promo* na URL da solicitação.

Gorjeta

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. No portal do Azure, selecione Criar um recurso.

    Captura de ecrã que mostra o botão Criar um recurso na página inicial.

  2. Procure por Front Door e selecione Front Door e CDN profiles.

    Captura de tela que mostra o mercado, com Front Door em destaque.

  3. Selecione Criar.

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

  4. Selecione Continuar para criar uma porta frontal para usar o processo de criação rápida do portal.

    Captura de ecrã que mostra as ofertas da Porta da Frente do Azure, com a opção Criação rápida selecionada e o botão Continuar a criar uma Porta da Frente realçado.

  5. Insira as informações necessárias na página Noçõ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: insira o nome do seu perfil do Azure Front Door.
    • Nível: Selecione Standard ou Premium. Para esse cenário, ambos os níveis oferecem suporte à limitação de taxa.
    • Nome do ponto de extremidade: forneça um nome exclusivo para o seu ponto de extremidade porque os pontos de extremidade do Azure Front Door devem ter nomes globalmente exclusivos.
    • Tipo de origem e nome de host do Origin: selecione o aplicativo de origem que você deseja proteger com sua regra de limite de taxa.
  6. Ao lado de Política WAF, selecione Criar novo.

    Captura de ecrã que mostra o fluxo de trabalho de criação da Porta da Frente do Azure, com o botão Criar nova política do WAF realçado.

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

    Captura de tela que mostra o prompt de criação de política do WAF, com o botão Criar realçado.

  8. Selecione Rever + criar>Criar.

    Captura de tela que mostra a configuração completa do perfil do Azure Front Door.

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

Criar uma regra de limite de taxa

  1. Selecione Regras>personalizadas Adicionar regra personalizada.

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

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

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

    • Tipo de correspondência: Selecione String.
    • Variável de correspondência: Digite RequestUri.
    • Operação: Selecione é.
    • Operador: Selecione Contém.
    • Corresponder valores: insira /promo.
  4. Em Ação, selecione Registrar ou Bloquear.

    Regras de limite de taxa apenas suporte Log e Block ações. Allow não é suportado.

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

  5. Selecione Adicionar.

  6. Selecione Guardar.

    Captura de tela que mostra a lista de regras personalizadas, incluindo a nova regra de limite de taxa.

Usar o modo de prevenção no WAF

Por padrão, o portal do Azure cria políticas WAF no modo de deteção. Essa configuração significa que o WAF não bloqueia solicitações. Para obter mais informações, consulte Modos WAF.

Ajuste o WAF antes de usar o modo de prevenção. O ajuste ajuda a evitar deteções de falsos positivos. Também ajuda a evitar que o seu WAF bloqueie pedidos legítimos.

Aqui você reconfigura o WAF para usar o modo de prevenção.

  1. Abra a política WAF.

    Observe que o modo de política está definido como Deteção.

    Captura de ecrã que mostra 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 taxa, configure 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 você entra com suas credenciais do Azure e instala o módulo do Azure PowerShell para Azure Front Door Standard ou Premium.

Conectar-se ao Azure com uma caixa de diálogo interativa para entrar

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

Connect-AzAccount

Instalar o PowerShellGet

Verifique se 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 você use a versão mais recente.

Instalar os módulos do Azure Front Door PowerShell

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

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

Você usa o Az.Cdn módulo para trabalhar com recursos do Azure Front Door Standard ou Premium. Use o Az.FrontDoor módulo para trabalhar com recursos WAF.

Criar um grupo de recursos

Use o cmdlet New-AzResourceGroup para criar um novo grupo de recursos para seu perfil do Azure Front Door e política WAF. Atualize o nome e o local do grupo de recursos para suas próprias necessidades:

$resourceGroupName = 'FrontDoorRateLimit'

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

Criar um perfil do Azure Front Door

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

Neste exemplo, você cria um perfil padrão do Azure Front Door chamado MyFrontDoorProfile:

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

Criar um ponto de extremidade do Azure Front Door

Use o cmdlet New-AzFrontDoorCdnEndpoint para adicionar um ponto de extremidade ao seu perfil do Azure Front Door.

Os pontos de extremidade do Azure Front Door devem ter nomes globalmente exclusivos, portanto, atualize o $frontDoorEndpointName valor da 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

Use o cmdlet New-AzFrontDoorWafMatchConditionObject para criar uma condição de correspondência para identificar solicitações que devem ter o limite de taxa aplicado.

O exemplo a seguir corresponde a solicitações em que a RequestUri variável contém a string /promo:

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

Criar uma regra de limite de taxa personalizada

Use o cmdlet New-AzFrontDoorWafCustomRuleObject para criar a regra de limite de taxa, que inclui a condição de correspondência definida na etapa anterior e o limite de solicitação.

O exemplo a seguir 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 1.000 solicitações dentro de um minuto, o WAF bloqueia as solicitações subsequentes até que o minuto seguinte comece.

Criar uma política WAF

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

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

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

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

Neste exemplo, você associa o nome de host padrão do ponto de extremidade à 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 taxa, configure seu ambiente da CLI do Azure e crie um perfil do Azure Front Door.

Configurar seu ambiente da CLI do Azure

A CLI do Azure fornece um conjunto de comandos que usam o modelo do Azure Resource Manager para gerenciar seus recursos do Azure.

Você pode instalar a CLI do Azure em sua máquina local e usá-la em qualquer sessão de shell. Aqui você entra com suas credenciais do Azure e instala a extensão da CLI do Azure para o Azure Front Door Standard ou Premium.

Conectar-se ao Azure com uma caixa de diálogo interativa para entrar

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

az login

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

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

az extension add --name front-door

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

Criar um grupo de recursos

Use o comando az group create para criar um novo grupo de recursos para seu perfil do Azure Front Door e a política do WAF. Atualize o nome e o local do grupo de recursos para suas próprias necessidades:

resourceGroupName='FrontDoorRateLimit'

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

Criar um perfil do Azure Front Door

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

Neste exemplo, você cria um perfil padrão do Azure Front Door chamado MyFrontDoorProfile:

frontDoorProfileName='MyFrontDoorProfile'

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

Criar um ponto de extremidade do Azure Front Door

Use o comando az afd endpoint create para adicionar um ponto de extremidade ao seu perfil do Azure Front Door.

Os pontos de extremidade do Azure Front Door devem ter nomes globalmente exclusivos, portanto, atualize o frontDoorEndpointName valor da 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

Use 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-se para adicionar uma regra de limite de taxa personalizada

Use o comando az network front-door waf-policy rule create para criar uma regra de limite de taxa personalizada. O exemplo a seguir define o limite para 1.000 solicitações por minuto.

As regras de limite de taxa devem conter uma condição de correspondência, que você cria na próxima etapa. Neste comando, você inclui o --defer argumento, que diz à CLI do Azure para ainda não enviar a regra para o 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 qualquer endereço IP de origem envia mais de 1.000 solicitações dentro de um minuto, o WAF bloqueia as solicitações subsequentes até que o minuto seguinte comece.

Adicionar uma condição de correspondência

Use 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 as solicitações que devem ter o limite de taxa aplicado.

O exemplo a seguir corresponde a solicitações em que a RequestUri variável contém a string /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 você envia esse comando, a CLI do Azure cria a regra de limite de taxa e a condição de correspondência juntas.

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

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

Neste exemplo, você associa o nome de host padrão do ponto de extremidade à 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 de extremidade da Porta da Frente do Azure para que possa associá-los à sua política de segurança.

Nota

Sempre que você fizer alterações em sua política WAF, não precisará recriar a política de segurança do Azure Front Door. As atualizações de política do WAF são aplicadas automaticamente aos domínios da Porta da Frente do Azure.

Início Rápido

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

Próximos passos

Saiba mais sobre o Azure Front Door.