你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn。
使用 Azure PowerShell 配置 WAF 策略
Web 应用程序防火墙 (WAF) 策略定义了在请求到达 Azure Front Door 时所需的检查。
本文介绍了如何配置由一些自定义规则组成并启用了 Azure 托管默认规则集的 WAF 策略。
如果没有 Azure 订阅,请在开始之前创建一个免费帐户。
先决条件
在开始设置速率限制策略之前,请先创建 PowerShell 环境和 Azure Front Door 配置文件。
设置 PowerShell 环境
Azure PowerShell 提供一组可以使用 Azure 资源管理器模型管理 Azure 资源的 cmdlet。
可以在本地计算机上安装 Azure PowerShell 并在任何 PowerShell 会话中使用它。 按照页面中的说明,使用 Azure 凭据进行登录。 然后安装 Az PowerShell 模块。
登录 Azure
Connect-AzAccount
在安装 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
属性设置为上一步中创建的 $myWAFPolicy$
的 resourceId
。
注意
对于 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 前端。 后续策略更新会自动应用到前端。