本文演示如何使用 Azure 门户、Azure CLI、Azure PowerShell 或 Azure 资源管理器模板在 Azure Front Door 的 Web 应用程序防火墙 (WAF) 中配置 IP 限制规则。
基于 IP 地址的访问控制规则是一个自定义 WAF 规则,可用于控制对 Web 应用程序的访问。 该规则指定无类别域际路由选择 (CIDR) 格式的 IP 地址列表或 IP 地址范围列表。
默认情况下,可从 Internet 访问 Web 应用程序。 如果要限制从已知 IP 地址列表或 IP 地址范围列表访问的客户端,可以创建一个 IP 匹配规则,其中包含 IP 地址列表作为匹配值,并将运算符设置为“Not
”(求反为 true)且操作设置为“Block
”。 应用 IP 限制规则后,源自此允许列表外部的地址的请求将收到“403 禁止访问”响应。
按照以下步骤使用 Azure 门户配置 WAF 策略。
先决条件
按照快速入门:创建 Azure Front Door 实例以实现高度可用的全局 Web 应用程序中所述的说明,创建 Azure Front Door 配置文件。
创建 WAF 策略
在 Azure 门户中,选择“创建资源”。 在“搜索服务和市场”搜索框中输入“Web 应用程序防火墙”,然后选择 Enter。 选择“Web 应用程序防火墙 (WAF)”。
选择创建。
在“创建 WAF 策略”页上,使用以下值完成“基本信息”选项卡。
设置 |
值 |
策略适用于 |
全局 WAF (Front Door)。 |
Front Door 层 |
选择“高级”或“标准”以匹配你的 Front Door 层。 |
订阅 |
选择订阅。 |
资源组 |
选择 Azure Front Door 实例所在的资源组。 |
策略名称 |
为策略输入一个名称。 |
策略状态 |
已选择 |
策略模式 |
预防 |
选择“下一步: 托管规则”。
选择“下一步: 策略设置”。
在“策略设置”选项卡上,为“阻止响应正文”输入“你已受到阻止!”,这样你便可以看到自定义规则已生效。
选择“下一步: 自定义规则”。
选择“添加自定义规则”。
在“添加自定义规则”页上,使用以下测试值创建自定义规则。
设置 |
值 |
自定义规则名称 |
FdWafCustRule |
状态 |
Enabled |
规则类型 |
匹配 |
优先级 |
100 |
匹配类型 |
IP 地址 |
匹配变量 |
SocketAddr |
Operation |
不包含 |
IP 地址或范围 |
10.10.10.0/24 |
Then |
拒绝流量 |
选择 添加 。
选择“下一步: 关联”。
选择“关联 Front Door 配置文件”。
对于“前端配置文件”,请选择你的前端配置文件。
对于“域”,请选择域。
选择 添加 。
选择“查看 + 创建”。
通过策略验证后,选择“创建”。
测试 WAF 策略
WAF 策略部署完成后,浏览到你的 Azure Front Door 前端主机名。
应看到自定义阻止消息。
注意
专用 IP 地址专门用于自定义规则中,以确保规则会触发。 在实际部署中,针对特定情况使用 IP 地址创建“允许”和“拒绝”规则。
按照以下步骤使用 Azure CLI 配置 WAF 策略。
先决条件
在开始配置 IP 限制策略之前,请设置 CLI 环境并创建 Azure Front Door 配置文件。
设置 Azure CLI 环境
- 安装 Azure CLI,或使用 Azure Cloud Shell。 Azure Cloud Shell 是可直接在 Azure 门户中运行的免费 Bash shell。 它预安装有 Azure CLI 并将其配置为与帐户一起使用。 在随后的 CLI 命令中选择“试用”按钮。 然后在打开的 Cloud Shell 会话中登录你的 Azure 帐户。 会话启动后,输入
az extension add --name front-door
以添加 Azure Front Door 扩展。
- 如果在 Bash 中本地使用 CLI,请使用
az login
登录到 Azure。
创建 Azure Front Door 配置文件
按照快速入门:创建 Azure Front Door 实例以实现高度可用的全局 Web 应用程序中所述的说明,创建 Azure Front Door 配置文件。
创建 WAF 策略
使用 az network front-door waf-policy create 命令创建 WAF 策略。
在下面的示例中,将策略名称 IPAllowPolicyExampleCLI 替换为唯一策略名称。
az network front-door waf-policy create \
--resource-group <resource-group-name> \
--subscription <subscription ID> \
--name IPAllowPolicyExampleCLI
添加自定义 IP 访问控制规则
使用 az network front-door waf-policy custom-rule create 命令为创建的 WAF 策略添加自定义 IP 访问控制规则。
在以下示例中:
- 将 IPAllowPolicyExampleCLI 替换为前面创建的唯一策略。
- 将 ip-address-range-1、ip-address-range-2 替换为你自己的范围 。
首先,为在上一步中创建的策略创建 IP 允许规则。
注意
--defer
是必需的,因为规则必须具有匹配条件才能在下一步中添加。
az network front-door waf-policy rule create \
--name IPAllowListRule \
--priority 1 \
--rule-type MatchRule \
--action Block \
--resource-group <resource-group-name> \
--policy-name IPAllowPolicyExampleCLI --defer
接下来,向规则添加匹配条件:
az network front-door waf-policy rule match-condition add \
--match-variable SocketAddr \
--operator IPMatch \
--values "ip-address-range-1" "ip-address-range-2" \
--negate true \
--name IPAllowListRule \
--resource-group <resource-group-name> \
--policy-name IPAllowPolicyExampleCLI
查找 WAF 策略的 ID
使用 az network front-door waf-policy show 命令查找 WAF 策略的 ID。 将以下示例中的 IPAllowPolicyExampleCLI 替换为前面创建的唯一策略。
az network front-door waf-policy show \
--resource-group <resource-group-name> \
--name IPAllowPolicyExampleCLI
将 WAF 策略链接到 Azure Front Door 前端主机
使用 az network front-door update 命令将 Azure Front Door WebApplicationFirewallPolicyLink ID 设置为策略 ID。 将 IPAllowPolicyExampleCLI 替换为前面创建的唯一策略。
az network front-door update \
--set FrontendEndpoints[0].WebApplicationFirewallPolicyLink.id=/subscriptions/<subscription ID>/resourcegroups/resource-group-name/providers/Microsoft.Network/frontdoorwebapplicationfirewallpolicies/IPAllowPolicyExampleCLI \
--name <frontdoor-name> \
--resource-group <resource-group-name>
在此示例中,WAF 策略应用于 FrontendEndpoints[0]
。 可以将 WAF 策略链接到任何前端。
注意
仅需设置 WebApplicationFirewallPolicyLink
属性一次,即可将 WAF 策略链接到 Azure Front Door 前端。 后续策略更新会自动应用到前端。
按照以下步骤使用 Azure PowerShell 配置 WAF 策略。
先决条件
在开始配置 IP 限制策略之前,请设置 PowerShell 环境并创建 Azure Front Door 配置文件。
设置 PowerShell 环境
Azure PowerShell 提供一组使用 Azure 资源管理器模型来管理 Azure 资源的 cmdlet。
可以在本地计算机上安装 Azure PowerShell 并在任何 PowerShell 会话中使用它。 遵照页面上的说明使用 Azure 凭据登录到 PowerShell,然后安装 Azure PowerShell 模块。
使用以下命令连接到 Azure,然后使用交互式对话框登录。
Connect-AzAccount
在安装 Azure Front Door 模块之前,请确保安装最新版本的 PowerShellGet 模块。 运行下面的命令,然后重新打开 PowerShell。
Install-Module PowerShellGet -Force -AllowClobber
使用以下命令安装 Az.FrontDoor 模块:
Install-Module -Name Az.FrontDoor
创建 Azure Front Door 配置文件
按照快速入门:创建 Front Door,以实现高度可用的全局 Web 应用程序中所述的介绍创建 Azure Front Door 配置文件。
定义 IP 匹配条件
使用 New-AzFrontDoorWafMatchConditionObject 命令定义 IP 匹配条件。
在以下示例中,将 ip-address-range-1、ip-address-range-2 替换为你自己的范围 。
$IPMatchCondition = New-AzFrontDoorWafMatchConditionObject `
-MatchVariable SocketAddr `
-OperatorProperty IPMatch `
-MatchValue "ip-address-range-1", "ip-address-range-2"
-NegateCondition 1
创建自定义 IP 允许规则
使用 New-AzFrontDoorWafCustomRuleObject 命令定义操作并设置优先级。 在下面的示例中,将阻止与列表匹配但不是来自客户端 IP 的请求。
$IPAllowRule = New-AzFrontDoorWafCustomRuleObject `
-Name "IPAllowRule" `
-RuleType MatchRule `
-MatchCondition $IPMatchCondition `
-Action Block -Priority 1
使用 Get-AzResourceGroup
找到包含该 Azure Front Door 配置文件的资源组的名称。 接下来,使用 New-AzFrontDoorWafPolicy 将 WAF 策略配置 IP 规则。
$IPAllowPolicyExamplePS = New-AzFrontDoorWafPolicy `
-Name "IPRestrictionExamplePS" `
-resourceGroupName <resource-group-name> `
-Customrule $IPAllowRule`
-Mode Prevention `
-EnabledState Enabled
将 WAF 策略链接到 Azure Front Door 前端主机
将 WAF 策略对象链接到现有前端主机并更新 Azure Front Door 属性。 首先,使用 Get-AzFrontDoor 检索 Azure Front Door 对象。 接下来,使用 Set-AzFrontDoor 命令将 WebApplicationFirewallPolicyLink
属性设置为在上一步中创建的 $IPAllowPolicyExamplePS
的资源 ID。
$FrontDoorObjectExample = Get-AzFrontDoor `
-ResourceGroupName <resource-group-name> `
-Name $frontDoorName
$FrontDoorObjectExample[0].FrontendEndpoints[0].WebApplicationFirewallPolicyLink = $IPBlockPolicy.Id
Set-AzFrontDoor -InputObject $FrontDoorObjectExample[0]
注意
在此示例中,WAF 策略应用于 FrontendEndpoints[0]
。 可以将 WAF 策略链接到任何前端。 仅需设置 WebApplicationFirewallPolicyLink
属性一次,即可将 WAF 策略链接到 Azure Front Door 前端。 后续策略更新会自动应用到前端。
若要查看使用自定义 IP 限制规则创建 Azure Front Door 和 WAF 策略的资源管理器模板,请转到 GitHub。