Configuración de una regla de restricción de IP con un WAF para Azure Front Door

Este artículo muestra cómo configurar las reglas de restricción de IP en un firewall de aplicaciones web (WAF) para Azure Front Door con Azure Portal, la CLI de Azure, Azure PowerShell o una plantilla de Azure Resource Manager.

Una regla de control de acceso basado en la dirección IP es una regla de WAF personalizada que permite controlar el acceso a las aplicaciones web. La regla especifica una lista de direcciones IP o rangos de direcciones IP en formato de Enrutamiento entre dominios sin clase (CIDR).

Hay dos tipos de variables de coincidencia en una coincidencia de dirección IP: RemoteAddr y SocketAddr. La variable RemoteAddr es la dirección IP del cliente original que se envía normalmente mediante el encabezado de solicitud X-Forwarded-For. La variable SocketAddr es la dirección IP de origen que ve WAF. Si el usuario está detrás de un proxy, SocketAddr suele ser la dirección del servidor proxy.

De forma predeterminada, a la aplicación web se puede acceder desde Internet. Si desea limitar el acceso a los clientes de una lista de direcciones IP conocidas o intervalos de direcciones IP, puede crear una regla de coincidencia de IP que contenga la lista de direcciones IP como valores coincidentes y establece el operador en Not (la negación es verdadera) y la acción en Block. Después de que se aplique una regla de restricción de IP, las solicitudes que provengan de direcciones que no se encuentren en esta lita de permitidos reciben una respuesta 403 Prohibido.

Configuración de una directiva de WAF con Azure Portal

Siga estos pasos para configurar una directiva de WAF mediante el Azure Portal.

Prerrequisitos

Para crear un perfil de Azure Front Door, siga las instrucciones que se describen en Inicio rápido: Creación de una instancia de Front Door de Azure para una aplicación web global de alta disponibilidad.

Creación de una directiva WAF

  1. En Azure Portal, seleccione Crear un recurso. Escriba firewall de aplicaciones web en el cuadro de búsqueda de Servicios de búsqueda y Marketplace y seleccione Entrar. Luego seleccione Web Application Firewall (WAF).

  2. Seleccione Crear.

  3. En la página Crear una directiva WAF, use los valores siguientes para completar la pestaña Aspectos básicos.

    Configuración Value
    Directiva de WAF global (Front Door)
    Nivel de Front Door Seleccione Premium o Estándar para que coincida con el nivel de Front Door de Azure.
    Subscription Seleccione su suscripción.
    Resource group Seleccione el grupo de recursos en que se encuentra la instancia de Front Door de Azure.
    Nombre de la directiva Escriba un nombre para la directiva.
    Estado de directiva Seleccionado.
    Modo de directiva Prevención.
  4. Seleccione Siguiente: Reglas administradas.

  5. Seleccione Siguiente: Configuración de directivas

  6. En la pestaña Configuración de directiva, escriba ¡Le han bloqueado! en el elemento de respuesta, para que pueda ver que la regla personalizada está activada.

  7. Seleccione Siguiente: Reglas personalizadas.

  8. Seleccione Agregar regla personalizada.

  9. En la página Agregar regla personalizada, use los siguientes valores de prueba para crear una regla personalizada.

    Configuración Value
    Nombre de la regla personalizada FdWafCustRule
    Estado habilitado
    Tipo de regla Coincidir con
    Priority 100
    Tipo de coincidencia Dirección IP
    Variable de coincidencia SocketAddr
    Operación No contiene
    Dirección o intervalo de direcciones IP 10.10.10.0/24
    Entonces Deny traffic

    Regla personalizada

    Seleccione Agregar.

  10. Seleccione Siguiente: Asociación.

  11. Seleccione Asociar un perfil de Front Door.

  12. En Perfil de Frontend, seleccione el perfil de Frontend.

  13. En Dominio, seleccione el dominio.

  14. Seleccione Agregar.

  15. Seleccione Revisar + crear.

  16. Una vez pasada la validación de la directiva, seleccione Crear.

Prueba de la directiva WAF

  1. Una vez finalizada la implementación de la directiva WAF, busque el nombre del host de front-end de Front Door de Azure.

  2. Debería ver el mensaje de bloque personalizado.

    Prueba de regla de WAF

    Nota

    Se usó una dirección IP privada deliberadamente en la regla personalizada para garantizar que la regla se desencadene. En una implementación real, cree las reglas allow y deny mediante direcciones IP para su situación concreta.

Configuración de una directiva de WAF con la CLI de Azure

Siga estos pasos para configurar una directiva de WAF mediante la CLI de Azure.

Prerrequisitos

Antes de empezar a configurar una directiva de restricción de IP, configure el entorno de CLI y cree un perfil de Azure Front Door.

Configuración del entorno de la CLI de Azure

  1. Instale la CLI de Azure o use Azure Cloud Shell. Azure Cloud Shell es un shell de Bash gratuito que puede ejecutarse directamente en Azure Portal. Tiene la CLI de Azure preinstalada y configurada para utilizarla con la cuenta. Seleccione el botón Probar en los comandos siguientes de la CLI. Luego inicie sesión en su cuenta de Azure en la sesión Cloud Shell que se abra. Una vez iniciada la sesión, escriba az extension add --name front-door para agregar la extensión de Azure Front Door.
  2. Si usa la CLI localmente en Bash, inicie sesión en Azure mediante az login.

Creación de un perfil de Azure Front Door

Para crear un perfil de Azure Front Door, siga las instrucciones que se describen en Inicio rápido: Creación de una instancia de Front Door de Azure para una aplicación web global de alta disponibilidad.

Creación de una directiva WAF

Cree una directiva WAF mediante el comando az network front-door waf-policy create. En el ejemplo que se indica a continuación, reemplace el nombre de la directiva IPAllowPolicyExampleCLI por un nombre de directiva único.

az network front-door waf-policy create \
  --resource-group <resource-group-name> \
  --subscription <subscription ID> \
  --name IPAllowPolicyExampleCLI

Adición de una regla de control de acceso por IP personalizada

Use el comando az network front-door waf-policy custom-rule create para agregar una regla de control de acceso por IP personalizada para la directiva WAF que ha creado.

En los siguientes ejemplos:

  • Reemplace IPAllowPolicyExampleCLI por la directiva única que creó anteriormente.
  • Reemplace ip-address-range-1, ip-address-range-2 por su propio rango.

En primer lugar, cree una regla de permiso de IP para la directiva creada en el paso anterior.

Nota

--defer es necesario porque una regla debe tener una condición de coincidencia para agregarse en el paso siguiente.

az network front-door waf-policy rule create \
  --name IPAllowListRule \
  --priority 1 \
  --rule-type MatchRule \
  --action Block \
  --resource-group <resource-group-name> \
  --policy-name IPAllowPolicyExampleCLI --defer

A continuación, agregue una condición de coincidencia a la regla:

az network front-door waf-policy rule match-condition add \
--match-variable SocketAddr \
--operator IPMatch \
--values "ip-address-range-1" "ip-address-range-2" \
--negate true \
--name IPAllowListRule \
  --resource-group <resource-group-name> \
  --policy-name IPAllowPolicyExampleCLI

Búsqueda del identificador de una directiva de WAF

Para buscar el identificador de una directiva WAF, utilice el comando az network front-door waf-policy show. Reemplace IPAllowPolicyExampleCLI en el ejemplo siguiente por la directiva que ha creado anteriormente.

az network front-door  waf-policy show \
  --resource-group <resource-group-name> \
  --name IPAllowPolicyExampleCLI

Establezca el identificador WebApplicationFirewallPolicyLink de Azure Front Door en el identificador de la directiva mediante el uso del comando az network front-door update. Reemplace IPAllowPolicyExampleCLI por la directiva única que creó anteriormente.

az network front-door update \
  --set FrontendEndpoints[0].WebApplicationFirewallPolicyLink.id=/subscriptions/<subscription ID>/resourcegroups/resource-group-name/providers/Microsoft.Network/frontdoorwebapplicationfirewallpolicies/IPAllowPolicyExampleCLI \
  --name <frontdoor-name> \
  --resource-group <resource-group-name>

En este ejemplo, la directiva de WAF se aplica a FrontendEndpoints[0]. Puede vincular la directiva de WAF a cualquiera de los front-ends.

Nota

Solo es necesario establecer la propiedad WebApplicationFirewallPolicyLink una vez para vincular una directiva de WAF a un front-end de Azure Front Door. Las posteriores actualizaciones de la directiva se aplican al front-end.

Configuración de una directiva de WAF con Azure PowerShell

Siga estos pasos para configurar una directiva de WAF mediante Azure PowerShell.

Prerrequisitos

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

Configuración del entorno de PowerShell

Azure PowerShell proporciona un conjunto de cmdlets que usan el modelo de 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. Siga las instrucciones de la página para iniciar sesión en PowerShell con las credenciales de Azure y, después, instale el módulo Az.

  1. Utilice el siguiente comando para conectarse a Azure y, después, use un cuadro de diálogo interactivo para iniciar sesión.

    Connect-AzAccount
    
  2. Antes de instalar un módulo de Azure Front Door asegúrese de que tiene instalada la versión actual del módulo PowerShellGet. Ejecute el siguiente comando y vuelva a abrir PowerShell.

    Install-Module PowerShellGet -Force -AllowClobber
    
  3. Instale el módulo Az.FrontDoor con el siguiente comando:

    Install-Module -Name Az.FrontDoor
    

Creación de un perfil de Azure Front Door

Para crear un perfil de Azure Front Door, siga las instrucciones que se describen en Inicio rápido: Creación de una instancia de Front Door para una aplicación web global de alta disponibilidad.

Definición de una condición de coincidencia IP

Use el comando New AzFrontDoorWafMatchConditionObject para definir una condición de coincidencia de IP. En el siguiente ejemplo, reemplace ip-address-range-1, ip-address-range-2 por su propio rango.

$IPMatchCondition = New-AzFrontDoorWafMatchConditionObject `
-MatchVariable  SocketAddr `
-OperatorProperty IPMatch `
-MatchValue "ip-address-range-1", "ip-address-range-2"
-NegateCondition 1

Creación de una regla de permiso de IP personalizada

Use el comando New-AzFrontDoorWafCustomRuleObject para definir una acción y establecer una prioridad. En el ejemplo siguiente, se bloquearán las solicitudes que no procedan de IP de clientes que coincidan con la lista.

$IPAllowRule = New-AzFrontDoorWafCustomRuleObject `
-Name "IPAllowRule" `
-RuleType MatchRule `
-MatchCondition $IPMatchCondition `
-Action Block -Priority 1

Configuración de una directiva de WAF

Busque el nombre del grupo de recursos que contiene el perfil de Azure Front Door. Para ello, debe usar Get-AzResourceGroup. A continuación, configure una directiva WAF con la regla IP, para lo que debe usar New-AzFrontDoorWafPolicy.

  $IPAllowPolicyExamplePS = New-AzFrontDoorWafPolicy `
    -Name "IPRestrictionExamplePS" `
    -resourceGroupName <resource-group-name> `
    -Customrule $IPAllowRule`
    -Mode Prevention `
    -EnabledState Enabled

Sugerencia

Para una directiva de WAF existente, puede usar Update-AzFrontDoorWafPolicy para actualizar la directiva.

Vincule un objeto de directiva de WAF a un host de front-end existente y actualice las propiedades de Azure Front Door. En primer lugar, recupere el objeto de Azure Front Door. Para hacerlo, use Get-AzFrontDoor. A continuación, establezca la propiedad WebApplicationFirewallPolicyLink en el identificador de recurso de $IPAllowPolicyExamplePS, que se creó en el paso anterior, mediante el uso del comando Set-AzFrontDoor.

  $FrontDoorObjectExample = Get-AzFrontDoor `
    -ResourceGroupName <resource-group-name> `
    -Name $frontDoorName
  $FrontDoorObjectExample[0].FrontendEndpoints[0].WebApplicationFirewallPolicyLink = $IPBlockPolicy.Id
  Set-AzFrontDoor -InputObject $FrontDoorObjectExample[0]

Nota

En este ejemplo, la directiva de WAF se aplica a FrontendEndpoints[0]. Una directiva de WAF se puede vincular a cualquiera de los front-ends. Solo es necesario establecer la propiedad WebApplicationFirewallPolicyLink una vez para vincular una directiva de WAF a un front-end de Azure Front Door. Las posteriores actualizaciones de la directiva se aplican al front-end.

Configuración de una directiva de WAF con una plantilla de Resource Manager

Para ver la plantilla que crea una directiva de Azure Front Door y una directiva de WAF con reglas de restricción de IP personalizadas, vaya a GitHub.

Pasos siguientes

Aprenda a crear un perfil de Azure Front Door.