本文介绍如何使用 Azure 门户、Azure CLI、Azure PowerShell 或 Azure 资源管理器模板在 Azure Front Door 的 Web 应用程序防火墙(WAF)中配置 IP 限制规则。
基于 IP 地址的访问控制规则是一个自定义 WAF 规则,可用于控制对 Web 应用程序的访问。 该规则以无类 Inter-Domain 路由(CIDR)格式指定 IP 地址或 IP 地址范围的列表。
默认情况下,Web 应用程序可从 Internet 访问。 如果要限制从已知 IP 地址或 IP 地址范围列表访问客户端,则可以创建一个 IP 匹配规则,其中包含 IP 地址列表作为匹配值,并将运算符设置为(反值为 true),并将作设置为 < a0/>。 应用 IP 限制规则后,源自此允许列表之外的地址的请求会收到 403 禁止响应。
按照以下步骤使用 Azure 门户配置 WAF 策略。
先决条件
按照快速入门中所述的说明创建 Azure Front Door 配置文件:为高度可用的全局 Web 应用程序创建 Azure Front Door 实例。
创建 WAF 策略
在 Azure 门户中,选择“ 创建资源”。 在搜索服务和市场搜索框中输入 Web 应用程序防火墙,然后选择 Enter。 然后选择“Web 应用程序防火墙”(WAF)。
选择 创建。
在 “创建 WAF 策略 ”页上,使用以下值完成 “基本信息 ”选项卡。
设置 |
价值 |
策略 |
全球 WAF (Front Door)。 |
Front Door 层 |
选择“高级”或“标准”以匹配 Azure Front Door 层。 |
Subscription |
选择订阅。 |
资源组 |
选择 Azure Front Door 实例所在的资源组。 |
策略名称 |
输入策略的名称。 |
策略状态 |
已选择 |
策略模式 |
预防 |
选择 “下一步:托管规则”。
选择 “下一步:策略设置”。
在“策略设置”选项卡上,为“阻止响应正文”输入“你已被阻止!,以便你可以看到自定义规则生效。
选择 “下一步:自定义规则”。
选择 “添加自定义规则”。
在 “添加自定义规则 ”页上,使用以下测试值创建自定义规则。
设置 |
价值 |
自定义规则名称 |
FdWafCustRule |
状态 |
已启用 |
规则类型 |
匹配 |
Priority |
100 |
匹配类型 |
IP 地址 |
匹配变量 |
SocketAddr |
操作 |
不包含 |
IP 地址或范围 |
10.10.10.0/24 |
然后 |
拒绝流量 |
选择 并添加。
选择 “下一步:关联”。
选择 “关联 Front door 配置文件”。
对于 前端配置文件,请选择前端配置文件。
对于 “域”,请选择该域。
选择 并添加。
选择“查看 + 创建”。
策略验证通过后,选择“ 创建”。
测试 WAF 策略
WAF 策略部署完成后,浏览到 Azure Front Door 前端主机名。
应会看到自定义块消息。
注释
专用 IP 地址在自定义规则中有意用于保证规则将触发。 在实际部署中,针对特定情况使用 IP 地址创建 允许 和 拒绝 规则。
按照以下步骤使用 Azure CLI 配置 WAF 策略。
先决条件
在开始配置 IP 限制策略之前,请设置 CLI 环境并创建 Azure Front Door 配置文件。
设置 Azure CLI 环境
- 安装 Azure CLI。 如果在 Bash 中使用本地 CLI,请使用
az cloud set -n AzureChinaCloud
,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 提供了一组 cmdlet,这些 cmdlet 使用 Azure 资源管理器 模型管理 Azure 资源。
可以在本地计算机上安装 Azure PowerShell ,并将其用于任何 PowerShell 会话。 按照页面上的说明使用 Azure 凭据登录到 PowerShell,然后安装 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 配置文件 :为高度可用的全局 Web 应用程序创建 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 配置具有 IP 规则的 WAF 策略。
$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
属性设置为在上一步中创建的资源 ID$IPAllowPolicyExamplePS
。
$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 前端。 后续策略更新会自动应用到前端。
若要查看创建 Azure Front Door 策略的资源管理器模板和具有自定义 IP 限制规则的 WAF 策略,请转到 GitHub。