Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Web 应用程序防火墙(WAF)策略定义请求到达 Azure Front Door 时所需的检查。
本文展示了如何配置Azure Front Door Standard或Premium的WAF策略,该策略包含一些自定义规则,并启用了Azure管理的默认规则集。 标准版和高级版均适用自定义规则。 托管规则集(例如默认规则集)需要高级层。
自定义规则和默认规则集为可选;根据需求,可以包含其中之一或两者。 你在后续创建策略时设置WAF策略模式(检测或预防)。
先决条件
拥有有效订阅的 Azure 帐户。 创建帐户。
Azure Front Door 的标准或高级版配置文件。 如果你需要创建一个,请参考快速入门:使用 PowerShell 创建 Azure Front Door 标准/高级配置文件。 本文中的示例使用高级版配置文件,这是因为托管规则集需要高级层级。
Azure PowerShell。
可在本地安装 Azure PowerShell 来运行 cmdlet。 如果在本地运行 PowerShell,请使用 Connect-AzAccount cmdlet 登录到 Azure。
Az.Cdn和Az.FrontDoorPowerShell 模块。 使用Az.Cdn模块管理 Azure Front Door Standard 和 Premium 资源,并使用Az.FrontDoor模块管理 WAF 资源。 通过执行以下命令安装这两个模块:Install-Module -Name Az.Cdn Install-Module -Name Az.FrontDoor
基于 HTTP 参数的自定义规则
以下示例演示如何使用 New-AzFrontDoorWafMatchConditionObject 配置具有两个匹配条件的自定义规则。 请求来自引用方定义的指定站点,查询字符串不包含 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
基于 HTTP 请求方法的自定义规则
使用 New-AzFrontDoorWafCustomRuleObject 创建阻止 PUT 方法的规则。
$put = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestMethod -OperatorProperty Equal -MatchValue PUT
$BlockPUT = New-AzFrontDoorWafCustomRuleObject -Name "BlockPUT" -RuleType MatchRule -MatchCondition $put -Action Block -Priority 2
基于大小约束创建自定义规则
以下示例创建了一个规则,通过使用 Azure PowerShell 阻止超过 100 字符的 URL 请求。
$url = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestUri -OperatorProperty GreaterThanOrEqual -MatchValue 100
$URLOver100 = New-AzFrontDoorWafCustomRuleObject -Name "URLOver100" -RuleType MatchRule -MatchCondition $url -Action Block -Priority 3
添加托管的默认规则集
托管规则集可在 Azure Front Door Premium 中获得。 以下示例通过使用 Azure PowerShell 创建一个托管默认规则集对象。
$managedRules = New-AzFrontDoorWafManagedRuleObject -Type Microsoft_DefaultRuleSet -Version 2.2
注释
受管理规则集需要 Azure Front Door Premium。 Azure Front Door Standard 仅支持自定义规则。 本示例使用 Microsoft_DefaultRuleSet 2.2版本。 关于所有可用版本,请参见 Web 应用程序防火墙 DRS 规则组和规则。
创建 WAF 策略
通过使用 New-AzFrontDoorWafPolicy 创建包含前几步自定义规则和托管默认规则集的 WAF 策略。 将 -Sku 设为 Premium_AzureFrontDoor 以包含托管规则,或设为 Standard_AzureFrontDoor 以仅包含自定义规则。
$myWAFPolicy = New-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $resourceGroupName -Sku Premium_AzureFrontDoor -CustomRule $AllowFromTrustedSites,$BlockPUT,$URLOver100 -ManagedRule $managedRules -EnabledState Enabled -Mode Prevention
将WAF策略与你的终端关联起来
对于 Azure Front Door Standard 和 Premium,你通过在 Azure Front Door 配置文件上创建安全策略,将 WAF 策略关联到端点。 安全策略将你的WAF策略与你希望WAF保护的域名关联起来。
通过 Get-AzFrontDoorCdnEndpoint 获取你的端点,并将资源组、配置文件和端点名称替换为你自己的。 然后使用 New-AzFrontDoorCdnSecurityPolicy 将端点的默认主机名与你的 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
注释
安全策略适用于关联中的域名。 为了保护更多域名,可以将它们添加到关联中或创建额外的安全策略。