Web 应用程序防火墙(WAF)策略定义请求到达 Azure Front Door 时所需的检查。
本文介绍如何配置由一些自定义规则组成的 WAF 策略,并启用 Azure 托管的默认规则集。
如果没有 Azure 订阅,可在开始前创建一个试用帐户。
先决条件
在开始设置速率限制策略之前,请设置 PowerShell 环境并创建 Azure Front Door 配置文件。
设置 PowerShell 环境
Azure PowerShell 提供了一组 cmdlet,这些 cmdlet 使用 Azure 资源管理器 模型管理 Azure 资源。
可以在本地计算机上安装 Azure PowerShell ,并将其用于任何 PowerShell 会话。 按照页面上的说明使用 Azure 凭据登录。 然后安装 Az PowerShell 模块。
登录到 Azure
Connect-AzAccount -Environment AzureChinaCloud
在安装 Azure Front Door 模块之前,请确保已安装最新版本的 PowerShellGet。 运行以下命令并重新打开 PowerShell。
Install-Module PowerShellGet -Force -AllowClobber
安装 Az.FrontDoor 模块
Install-Module -Name Az.FrontDoor
创建 Azure Front Door 配置文件
按照快速入门中所述的说明创建 Azure Front Door 配置文件 :创建 Azure Front Door 配置文件。
基于 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 创建一个阻止 URL 超过 100 个字符的规则阻止请求。
$url = New-AzFrontDoorWafMatchConditionObject -MatchVariable RequestUri -OperatorProperty GreaterThanOrEqual -MatchValue 100
$URLOver100 = New-AzFrontDoorWafCustomRuleObject -Name "URLOver100" -RuleType MatchRule -MatchCondition $url -Action Block -Priority 3
添加托管的默认规则集
以下示例使用 Azure PowerShell 创建托管的默认规则集。
$managedRules = New-AzFrontDoorWafManagedRuleObject -Type DefaultRuleSet -Version 1.0
配置安全策略
使用 Get-AzResourceGroup
查找包含 Azure Front Door 配置文件的资源组的名称。 接下来,通过在包含 Azure Front Door 配置文件的指定资源组中使用 New-AzFrontDoorWafPolicy ,在前面的步骤中使用已创建的规则配置安全策略。
$myWAFPolicy=New-AzFrontDoorWafPolicy -Name $policyName -ResourceGroupName $resourceGroupName -Customrule $AllowFromTrustedSites,$BlockPUT,$URLOver100 -ManagedRule $managedRules -EnabledState Enabled -Mode Prevention
将策略链接到 Azure Front Door 前端主机
将安全策略对象链接到现有的 Azure Front Door 前端主机并更新 Azure Front Door 属性。 首先,使用 Get-AzFrontDoor 检索 Azure Front Door 对象。
接下来,使用 Set-AzFrontDoor 将前端WebApplicationFirewallPolicyLink
属性设置为resourceId
$myWAFPolicy$
上一步中创建的属性。
注释
对于 Azure Front Door 标准版和高级版,应使用 Get-AzFrontDoorCdnProfile。
以下示例使用资源组名称 myResourceGroupFD1
,假设你已使用快速入门中提供的说明创建了 Azure Front Door 配置文件 :创建 Azure Front Door。 此外,在以下示例中,将替换为 $frontDoorName
Azure Front Door 配置文件的名称。
$FrontDoorObjectExample = Get-AzFrontDoor `
-ResourceGroupName myResourceGroupFD1 `
-Name $frontDoorName
$FrontDoorObjectExample[0].FrontendEndpoints[0].WebApplicationFirewallPolicyLink = $myWAFPolicy.Id
Set-AzFrontDoor -InputObject $FrontDoorObjectExample[0]
注释
只需设置 WebApplicationFirewallPolicyLink
一次属性即可将安全策略链接到 Azure Front Door 前端。 后续策略更新会自动应用到前端。