Configuración de una directiva del firewall de aplicaciones web con Azure PowerShell

Una directiva del firewall de aplicaciones web (WAF) de Azure define las inspecciones necesarias cuando llega una solicitud a Front Door. En este artículo se muestra cómo configurar una directiva del WAF que se compone de algunas reglas personalizadas y con el conjunto de reglas predeterminado administrado por Azure habilitado.

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

Requisitos previos

Antes de empezar a configurar una directiva de limitación de velocidad, configure el entorno de PowerShell y cree un perfil de 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. Siga las instrucciones de la página para iniciar sesión con sus credenciales de Azure e instalar el módulo Az de PowerShell.

Inicio de sesión en Azure

Connect-AzAccount

Antes de instalar el módulo de Front Door asegúrese de que tiene instalada la última versión de PowerShellGet. Ejecute el comando siguiente y vuelva a abrir PowerShell.

Install-Module PowerShellGet -Force -AllowClobber

Instalación del módulo Az.FrontDoor

Install-Module -Name Az.FrontDoor

Creación de un perfil de Front Door

Para crear un perfil de Front Door siga las instrucciones que se describen en Inicio rápido: Creación de un perfil de Front Door

Regla personalizada basada en parámetros HTTP

El ejemplo siguiente muestra cómo configurar una regla personalizada con dos condiciones de coincidencia con New-AzFrontDoorWafMatchConditionObject. Las solicitudes provienen de un sitio especificado, según se define en el origen de referencia y la cadena de consulta no contiene "password".

$referer = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestHeader -OperatorProperty Equal -Selector "Referer" -MatchValue "www.mytrustedsites.com/referpage.html"
$password = New-AzFrontDoorWafMatchConditionObject -MatchVariable QueryString -OperatorProperty Contains -MatchValue "password"
$AllowFromTrustedSites = New-AzFrontDoorWafCustomRuleObject -Name "AllowFromTrustedSites" -RuleType MatchRule -MatchCondition $referer,$password -Action Allow -Priority 1

Regla personalizada basada en el método de solicitud HTTP

Puede crear una regla de bloqueo del método "PUT" con New-AzFrontDoorWafCustomRuleObject como sigue:

$put = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestMethod -OperatorProperty Equal -MatchValue PUT
$BlockPUT = New-AzFrontDoorWafCustomRuleObject -Name "BlockPUT" -RuleType MatchRule -MatchCondition $put -Action Block -Priority 2

Creación de una regla personalizada basada en una restricción de tamaño

El ejemplo siguiente crea una regla que bloquea las solicitudes con una dirección URL de más de 100 caracteres con Azure PowerShell:

$url = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestUri -OperatorProperty GreaterThanOrEqual -MatchValue 100
$URLOver100 = New-AzFrontDoorWafCustomRuleObject -Name "URLOver100" -RuleType MatchRule -MatchCondition $url -Action Block -Priority 3

Adición del conjunto de reglas predeterminado administrado

El ejemplo siguiente crea un conjunto de reglas predeterminado administrado con Azure PowerShell:

$managedRules =  New-AzFrontDoorWafManagedRuleObject -Type DefaultRuleSet -Version 1.0

Configuración de una directiva de seguridad

Busque el nombre del grupo de recursos que contiene el perfil de Front Door que usan Get-AzResourceGroup. A continuación, configure una directiva de seguridad con las reglas creadas en los pasos anteriores mediante New-AzFrontDoorWafPolicy en el grupo de recursos especificado que contiene el perfil de Front Door.

$myWAFPolicy=New-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $resourceGroupName -Customrule $AllowFromTrustedSites,$BlockPUT,$URLOver100 -ManagedRule $managedRules -EnabledState Enabled -Mode Prevention

Vincule el objeto de directiva de seguridad a un host de front-end de Front Door existente y actualice las propiedades de Front Door. En primer lugar, recupere el objeto de Front Door mediante Get-AzFrontDoor. A continuación, establezca la propiedad WebApplicationFirewallPolicyLink de front-end en el valor de resourceId del elemento "$myWAFPolicy$" creado en el paso anterior con Set-AzFrontDoor.

En el ejemplo siguiente se usa el nombre de grupo de recursos myResourceGroupFD1 con la suposición de que ha creado el perfil de Front Door mediante las instrucciones proporcionadas en el artículo Inicio rápido: Creación de una instancia de Front Door. Además, en el ejemplo siguiente, reemplace $frontDoorName por el nombre de su perfil de Front Door.

   $FrontDoorObjectExample = Get-AzFrontDoor `
     -ResourceGroupName myResourceGroupFD1 `
     -Name $frontDoorName
   $FrontDoorObjectExample[0].FrontendEndpoints[0].WebApplicationFirewallPolicyLink = $myWAFPolicy.Id
   Set-AzFrontDoor -InputObject $FrontDoorObjectExample[0]

Nota

Solo necesita establecer la propiedad WebApplicationFirewallPolicyLink una vez para vincular una directiva de seguridad a un front-end de Front Door. Las posteriores actualizaciones de la directiva se aplican al front-end automáticamente.

Pasos siguientes