Configuración de una directiva de WAF mediante Azure PowerShell

Una directiva del firewall de aplicaciones web (WAF) define las inspecciones necesarias cuando llega una solicitud a Azure Front Door.

Este artículo muestra cómo configurar una política WAF para Azure Front Door Standard o Premium que consista en algunas reglas personalizadas y que tenga activado el conjunto de reglas predeterminado gestionado por Azure. Las reglas personalizadas se aplican tanto al nivel Standard como al Premium. Los conjuntos de reglas gestionadas, como el Default Rule Set, requieren el nivel Premium.

Las reglas personalizadas y el conjunto de reglas por defecto son opcionales; incluye una o ambas para adaptarte a tus necesidades. Estableces el modo de política WAF (Detección o Prevención) cuando creas la política en un paso posterior.

Requisitos previos

  • Una cuenta de Azure con una suscripción activa. Cree una cuenta gratuita.

  • Un perfil Estándar o Premium de Azure Front Door. Si necesitas crear uno, consulta Quickstart: Crea un perfil Azure Front Door Standard/Premium usando PowerShell. Los ejemplos de este artículo utilizan un perfil Premium porque los conjuntos de reglas gestionadas requieren el nivel Premium.

  • Azure Cloud Shell o Azure PowerShell.

    Los pasos de este artículo ejecutan los cmdlets de Azure PowerShell de forma interactiva en Azure Cloud Shell. Para ejecutar los cmdlets en Cloud Shell, seleccione Abrir Cloud Shell en la esquina superior derecha de un bloque de código. Seleccione Copiar para copiar el código y péguelo, a continuación, en Cloud Shell para ejecutarlo. También puede ejecutar el Cloud Shell desde el portal de Azure.

    También puede instalar Azure PowerShell localmente para ejecutar los cmdlets. Si ejecuta PowerShell localmente, inicie sesión en Azure con el cmdlet Connect-AzAccount.

  • Los módulos de PowerShell Az.Cdn y Az.FrontDoor. Utiliza el Az.Cdn módulo para trabajar con los recursos Standard y Premium de Azure Front Door, y el Az.FrontDoor módulo para trabajar con los recursos de WAF. Instala ambos módulos ejecutando los siguientes comandos:

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

Regla personalizada basada en parámetros HTTP

El ejemplo siguiente muestra cómo configurar una regla personalizada con dos condiciones de coincidencia usando 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 una solicitud HTTP

Puede crear una regla de bloqueo del método PUT usando New-AzFrontDoorWafCustomRuleObject.

$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 siguiente ejemplo crea una regla que bloquea solicitudes con una URL superior a 100 caracteres usando Azure PowerShell.

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

Agregar un conjunto de reglas predeterminado administrado

Los conjuntos de reglas gestionadas están disponibles en Azure Front Door Premium. El siguiente ejemplo crea un objeto gestionado de conjunto de reglas predeterminado utilizando Azure PowerShell.

$managedRules = New-AzFrontDoorWafManagedRuleObject -Type Microsoft_DefaultRuleSet -Version 2.2

Nota:

Los conjuntos de reglas gestionadas requieren Azure Front Door Premium. Azure Front Door Standard solo soporta reglas personalizadas. Este ejemplo utiliza Microsoft_DefaultRuleSet la versión 2.2. Para todas las versiones disponibles, consulte grupos de reglas y reglas de DRS de Web Application Firewall.

Creación de una directiva WAF

Crea una política WAF que incluya las reglas personalizadas y el conjunto de reglas por defecto gestionado de los pasos anteriores usando New-AzFrontDoorWafPolicy. Configura -Sku en Premium_AzureFrontDoor para incluir reglas gestionadas, o en Standard_AzureFrontDoor para incluir solo reglas personalizadas.

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

Asocia la política WAF con tu endpoint

Para Azure Front Door Standard y Premium, asocias una política WAF con tu endpoint creando una política de seguridad en el perfil de Azure Front Door. Una política de seguridad asocia tu política de WAF con los dominios que quieres que el WAF proteja.

Recupera tu endpoint usando Get-AzFrontDoorCdnEndpoint y reemplaza los nombres del grupo de recursos, el perfil y los endpoints por los tuyos propios. Luego usa New-AzFrontDoorCdnSecurityPolicy para asociar el nombre de host predeterminado del endpoint con tu política WAF.

$frontDoorEndpoint = Get-AzFrontDoorCdnEndpoint -ResourceGroupName $resourceGroupName -ProfileName $frontDoorProfileName -EndpointName $frontDoorEndpointName

$securityPolicyAssociation = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallAssociationObject `
  -PatternsToMatch @("/*") `
  -Domain @(@{"Id"=$($frontDoorEndpoint.Id)})

$securityPolicyParameters = New-AzFrontDoorCdnSecurityPolicyWebApplicationFirewallParametersObject `
  -Association $securityPolicyAssociation `
  -WafPolicyId $myWAFPolicy.Id

New-AzFrontDoorCdnSecurityPolicy `
  -Name 'MySecurityPolicy' `
  -ProfileName $frontDoorProfileName `
  -ResourceGroupName $resourceGroupName `
  -Parameter $securityPolicyParameters

Nota:

Una política de seguridad se aplica a los dominios asociados a ella. Para proteger más dominios, añádelos a la asociación o crea políticas de seguridad adicionales.