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
En Azure Portal, haga clic en Crear un recurso.
Busque Front Door y seleccione Perfiles de Front Door y CDN.
Seleccione Crear.
Seleccione Continuar para crear una instancia de Front Door para usar el proceso de creación rápida del portal de creación.
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.
Junto a Directiva de WAF, seleccione Crear.
Escriba el nombre de una directiva de WAF y seleccione Crear.
Seleccione Revisar y crear>Crear.
Una vez terminada la implementación, seleccione Ir al recurso.
Creación de una regla de límite de frecuencia
Seleccione Reglas personalizadas>Agregar regla personalizada.
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.
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.
En Acción, seleccione Registrar o Bloquear.
Las reglas de límite de velocidad solo son compatibles con las acciones de
Log
yBlock
.Allow
no se admite.Seleccione Agregar.
Seleccione Guardar.
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.
Abra la directiva de WAF.
Observe que Modo de directiva es Detección.
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.