Comparteix a través de


Configuración de una regla de límite de frecuencia de Firewall de aplicaciones web

La regla de límite de velocidad de Azure Web Application Firewall para Azure Front Door controla la cantidad de solicitudes permitidas desde una dirección IP de origen particular a la aplicación durante una duración de límite de velocidad. Para obtener más información sobre la limitación de velocidad, vea ¿Qué es la limitación de velocidad para Azure Front Door?.

En este artículo se muestra cómo configurar una regla de límite de velocidad de firewall de aplicaciones web (WAF) en los niveles Estándar y Premium de Azure Front Door.

Escenario

Supongamos que es responsable de un sitio web público. Acaba de agregar una página con información sobre una promoción que ejecuta su organización. Le preocupa que si los clientes visitan esa página con demasiada frecuencia, algunos de sus servicios back-end no puedan escalarse rápidamente y la aplicación pueda tener problemas de rendimiento.

Decida crear una regla de limitación de velocidad que restrinja cada dirección IP de origen a un máximo de 1,000 solicitudes por minuto. Solo aplique esta regla a las solicitudes que contengan */promo* en la dirección URL de la solicitud.

Sugerencia

Si no tiene una suscripción a Azure, cree una cuenta gratuita antes de empezar.

Creación de un perfil de Front Door y una directiva de WAF

  1. En Azure Portal, haga clic en Crear un recurso.

    Captura de pantalla que muestra el botón Crear un recurso en la página principal.

  2. Busque Front Door y seleccione Perfiles de Front Door y CDN.

    Captura de pantalla que muestra el marketplace, con Front Door resaltado.

  3. Seleccione Crear.

    Captura de pantalla que muestra los perfiles de Front Door y CDN, con el botón Crear resaltado.

  4. Seleccione Continuar para crear una instancia de Front Door para usar el proceso de creación rápida del portal de creación.

    Captura de pantalla que muestra las ofertas de Azure Front Door, con la opción de creación rápida seleccionada y el botón Continuar para crear un Front Door resaltado.

  5. Escriba la información necesaria en la página Aspectos básicos:

    • Grupo de recursos: seleccione un grupo de recursos existente o cree uno para los recursos de Azure Front Door y WAF.
    • Nombre: escriba el nombre del perfil de Azure Front Door.
    • Nivel: seleccione Estándar o Premium. En este escenario, ambos niveles admiten la limitación de frecuencia.
    • Nombre del punto de conexión: proporcione un nombre único para su punto de conexión porque los puntos de conexión de Azure Front Door deben tener nombres únicos a nivel mundial.
    • Tipo de origen y Nombre del host de origen: seleccione la aplicación de origen que desea proteger con la regla de limite de frecuencia.
  6. Junto a Directiva de WAF, seleccione Crear.

    Captura de pantalla que muestra el flujo de trabajo de creación de Azure Front Door, con el botón Crear nuevo de la directiva WAF resaltado.

  7. Escriba el nombre de una directiva de WAF y seleccione Crear.

    Captura de pantalla que muestra la solicitud de creación de directivas WAF, con el botón Crear resaltado.

  8. Seleccione Revisar y crear>Crear.

    Captura de pantalla que muestra la configuración completa del perfil de Azure Front Door.

  9. Una vez terminada la implementación, seleccione Ir al recurso.

Creación de una regla de límite de frecuencia

  1. Seleccione Reglas personalizadas>Agregar regla personalizada.

    Captura de pantalla que muestra la página de reglas personalizadas de la directiva WAF.

  2. Escriba la información necesaria para crear una regla de límite de frecuencia:

    • Nombre de la regla personalizada: escriba el nombre de la regla personalizada, como rateLimitRule.
    • Tipo de regla: seleccione Límite de frecuencia.
    • Prioridad: escriba la prioridad de la regla, como 1.
    • Duración del límite de frecuencia: seleccione 1 minuto.
    • Umbral del límite de frecuencia (solicitudes): escriba 1000.
  3. En Condiciones, escriba la información necesaria para especificar una condición de coincidencia para identificar las solicitudes en las que la dirección URL contiene la cadena */promo*:

    • Tipo de coincidencia: seleccione Cadena.
    • Variable de coincidencia: escriba RequestUri.
    • Operación: seleccione is.
    • Operador: seleccione Contains.
    • Valores coincidentes: escriba /promo.
  4. En Acción, seleccione Registrar o Bloquear.

    Las reglas de límite de velocidad solo son compatibles con las acciones de Log y Block. Allow no se admite.

    Captura de pantalla que muestra la configuración de la regla personalizada.

  5. Seleccione Agregar.

  6. Seleccione Guardar.

    Captura de pantalla que muestra la lista de reglas personalizadas, incluida la nueva regla de límite de frecuencia.

Uso del modo de prevención en WAF

De forma predeterminada, Azure Portal crea directivas de WAF en modo de detección. Esta configuración significa que WAF no bloquea las solicitudes. Para más información, consulte Modos de WAF.

Ajuste su WAF antes de usar el modo de prevención. La optimización ayuda a evitar detecciones de falsos positivos. También ayuda a evitar que WAF bloquee solicitudes legítimas.

Aquí se vuelve a configurar WAF para usar el modo de prevención.

  1. Abra la directiva de WAF.

    Observe que Modo de directiva es Detección.

    Captura de pantalla que muestra la directiva WAF, con el modo de directiva y el botón de Cambiar a modo de prevención resaltado.

  2. Seleccione Cambiar al modo de prevención.

Requisitos previos

Antes de empezar a configurar una directiva de limitación de velocidad, configure el entorno de PowerShell y cree un perfil de Azure Front Door.

Configuración del entorno de PowerShell

Azure PowerShell ofrece un conjunto de cmdlets que usan el modelo Azure Resource Manager para administrar los recursos de Azure.

Puede instalar Azure PowerShell en el equipo local y usarlo en cualquier sesión de PowerShell. Aquí inicia sesión con sus credenciales de Azure e instala el módulo de Azure PowerShell para Azure Front Door Estándar o Premium.

Conexión a Azure con un cuadro de diálogo interactivo para el inicio de sesión

Inicie sesión en Azure ejecutando el siguiente comando:

Connect-AzAccount

Instalación de PowerShellGet

Asegúrese de que está instalada la versión actual de PowerShellGet. Ejecute el siguiente comando:

Install-Module PowerShellGet -Force -AllowClobber

A continuación, reinicie PowerShell para asegurarse de que usa la versión más reciente.

Instalación de los módulos de PowerShell de Azure Front Door

Instale los módulos Az.FrontDoor y Az.Cdn de PowerShell para trabajar con Azure Front Door Estándar o Premium desde PowerShell.

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

Use el módulo Az.Cdn para trabajar con recursos de Azure Front Door Estándar o Premium. Use el módulo Az.FrontDoor para trabajar con recursos WAF.

Crear un grupo de recursos

Use el cmdlet New-AzResourceGroup para crear un nuevo grupo de recursos para el perfil de Azure Front Door y la directiva de WAF. Actualice el nombre y la ubicación del grupo de recursos como proceda:

$resourceGroupName = 'FrontDoorRateLimit'

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

Creación de un perfil de Azure Front Door

Use el cmdlet New-AzFrontDoorCdnProfile para crear un perfil de Azure Front Door.

En este ejemplo, creará un perfil estándar de Azure Front Door denominado MyFrontDoorProfile:

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

Creación de un punto de conexión de Azure Front Door

Use el cmdlet New-AzFrontDoorCdnEndpoint para agregar un punto de conexión al perfil de Azure Front Door.

Los puntos de conexión de Azure Front Door deben tener nombres únicos globales, por lo que debe actualizar la variable $frontDoorEndpointName a un valor único.

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

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

Definición de una condición de coincidencia de dirección URL

Use el cmdlet New-AzFrontDoorWafMatchConditionObject para crear una condición de coincidencia para identificar las solicitudes que deben tener aplicado el límite de frecuencia.

En el ejemplo siguiente coinciden las solicitudes en las que la variable RequestUri contiene la cadena /promo:

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

Creación de una regla de limite de volumen personalizada

Use el cmdlet New-AzFrontDoorWafCustomRuleObject para crear la regla de límite de frecuencia que incluye la condición de coincidencia que ha definido en el paso anterior y el umbral de solicitud.

En el ejemplo siguiente se establece el límite en 1000:

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

Cuando cualquier dirección IP de origen envía más de 1 000 solicitudes en un minuto, WAF bloquea las solicitudes posteriores hasta el minuto siguiente.

Creación de una directiva WAF

Use el cmdlet New-AzFrontDoorWafPolicy para crear una directiva WAF que incluya la regla personalizada que ha creado.

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

Configuración de una directiva de seguridad para asociar el perfil de Azure Front Door a la directiva de WAF

Use el cmdlet New-AzFrontDoorCdnSecurityPolicy para crear una directiva de seguridad para el perfil de Azure Front Door. Una directiva de seguridad asocia la directiva de WAF a los dominios que desea proteger mediante la regla de WAF.

En este ejemplo, asociará el nombre de host predeterminado del punto de conexión a la directiva de 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

Prerrequisitos

Antes de empezar a configurar una directiva de limite de frecuencia, configure el entorno de la CLI de Azure y cree un perfil de Azure Front Door.

Configuración del entorno de la CLI de Azure

La CLI de Azure ofrece un conjunto de comandos que usan el modelo Azure Resource Manager para administrar los recursos de Azure.

Puede instalar la CLI de Azure en la máquina local y usarla en cualquier sesión de shell. Aquí inicia sesión con sus credenciales de Azure e instala la extensión de la CLI de Azure para Azure Front Door Estándar de Premium.

Conexión a Azure con un cuadro de diálogo interactivo para el inicio de sesión

Inicie sesión en Azure ejecutando el siguiente comando:

az login

Instalación de la extensión de Azure Front Door para la CLI de Azure

Instale la extensión front-door para que funcione con el WAF de Azure Front Door desde la CLI de Azure:

az extension add --name front-door

Use los comandos az afd para trabajar con recursos de Azure Front Door Estándar o Premium. Use los comandos az network front-door waf-policy para trabajar con recursos de WAF.

Crear un grupo de recursos

Use el comando az group create para crear un nuevo grupo de recursos para el perfil de Azure Front Door y la directiva de WAF. Actualice el nombre y la ubicación del grupo de recursos como proceda:

resourceGroupName='FrontDoorRateLimit'

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

Creación de un perfil de Azure Front Door

Use el comando az afd profile create para crear un nuevo perfil de Azure Front Door.

En este ejemplo, creará un perfil estándar de Azure Front Door denominado MyFrontDoorProfile:

frontDoorProfileName='MyFrontDoorProfile'

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

Creación de un punto de conexión de Azure Front Door

Use el comando az afd endpoint create para agregar un punto de conexión al perfil de Azure Front Door.

Los puntos de conexión de Azure Front Door deben tener nombres únicos globales, por lo que debe actualizar la variable frontDoorEndpointName a un valor único.

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

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

Creación de una directiva WAF

Use el comando az network front-door waf-policy create para crear una directiva de WAF:

wafPolicyName='MyWafPolicy'

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

Preparación para agregar una regla de límite de frecuencia personalizada

Use el comando az network front-door waf-policy rule create para crear una regla de límite de frecuencia personalizada. En el ejemplo siguiente se establece el límite en 1 000 solicitudes por minuto.

Las reglas de límite de frecuencia deben contener una condición de coincidencia que se crea en el paso siguiente. En este comando se incluye el argumento --defer, que indica a la CLI de Azure que no envíe la regla a Azure todavía.

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

Cuando cualquier dirección IP de origen envía más de 1 000 solicitudes en un minuto, WAF bloquea las solicitudes posteriores hasta el minuto siguiente.

Adición de una condición de coincidencia

Use el comando az network front-door waf-policy rule match-condition add para agregar una condición de coincidencia a la regla personalizada. La condición de coincidencia identifica las solicitudes que deben tener aplicado el límite de frecuencia.

En el ejemplo siguiente coinciden las solicitudes en las que la variable RequestUri contiene la cadena /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

Al enviar este comando, la CLI de Azure crea la regla de límite de frecuencia y la condición de coincidencia al mismo tiempo.

Configuración de una directiva de seguridad para asociar el perfil de Azure Front Door a la directiva de WAF

Use el comando az afd security-policy create para crear una directiva de seguridad para el perfil de Azure Front Door. Una directiva de seguridad asocia la directiva de WAF a los dominios que desea proteger mediante la regla de WAF.

En este ejemplo, asociará el nombre de host predeterminado del punto de conexión a la directiva de 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

El código anterior busca los identificadores de recursos de Azure para la directiva de WAF y el punto de conexión de Azure Front Door para que pueda asociarlos a la directiva de seguridad.

Nota

Cuando realice cambios en la directiva de WAF, no necesita volver a crear la directiva de seguridad de Azure Front Door. Las actualizaciones de la directiva de WAF se aplican automáticamente a los dominios de Azure Front Door.

Inicio rápido

Para crear un perfil de Azure Front Door con una regla de límite de frecuencia mediante Bicep, consulte el inicio rápido Azure Front Door Estándar O Premium con límite de frecuencia de Bicep.

Pasos siguientes

Obtenga más información acerca de Azure Front Door.