你当前正在访问 Microsoft Azure Global Edition 技术文档网站。 如果需要访问由世纪互联运营的 Microsoft Azure 中国技术文档网站,请访问 https://docs.azure.cn

配置 Azure Front Door 的 WAF 的 IP 限制规则

本文演示如何使用 Azure 门户、Azure CLI、Azure PowerShell 或 Azure 资源管理器模板在 Azure Front Door 的 Web 应用程序防火墙 (WAF) 中配置 IP 限制规则。

基于 IP 地址的访问控制规则是一个自定义 WAF 规则,可用于控制对 Web 应用程序的访问。 该规则指定无类别域际路由选择 (CIDR) 格式的 IP 地址列表或 IP 地址范围列表。

IP 地址匹配中有两种类型的匹配变量:RemoteAddrSocketAddrRemoteAddr 是通常通过 X-Forwarded-For 请求标头发送的原始客户端 IP。 SocketAddr 变量是 WAF 发现的源 IP 地址。 如果用户位于代理后,则 SocketAddr 通常是代理服务器地址。

默认情况下,可从 Internet 访问 Web 应用程序。 如果要限制从已知 IP 地址列表或 IP 地址范围列表访问的客户端,可以创建一个 IP 匹配规则,其中包含 IP 地址列表作为匹配值,并将运算符设置为“Not”(求反为 true)且操作设置为“Block”。 应用 IP 限制规则后,源自此允许列表外部的地址的请求将收到“403 禁止访问”响应。

通过 Azure 门户配置 WAF 策略

按照以下步骤使用 Azure 门户配置 WAF 策略。

先决条件

按照快速入门:创建 Azure Front Door 实例以实现高度可用的全局 Web 应用程序中所述的说明,创建 Azure Front Door 配置文件。

创建 WAF 策略

  1. 在 Azure 门户中,选择“创建资源”。 在“搜索服务和市场”搜索框中输入“Web 应用程序防火墙”,然后选择 Enter。 选择“Web 应用程序防火墙 (WAF)”。

  2. 选择“创建” 。

  3. 在“创建 WAF 策略”页上,使用以下值完成“基本信息”选项卡。

    设置
    策略适用于 全局 WAF (Front Door)。
    Front Door 层 选择“高级”或“标准”以匹配你的 Front Door 层。
    订阅 选择订阅。
    资源组 选择 Azure Front Door 实例所在的资源组。
    策略名称 为策略输入一个名称。
    策略状态 选定。
    策略模式 预防。
  4. 选择“下一步: 托管规则”。

  5. 选择“下一步: 策略设置”。

  6. 在“策略设置”选项卡上,为“阻止响应正文”输入“你已受到阻止!”,这样你便可以看到自定义规则已生效。

  7. 选择“下一步: 自定义规则”。

  8. 选择“添加自定义规则”。

  9. 在“添加自定义规则”页上,使用以下测试值创建自定义规则。

    设置
    自定义规则名称 FdWafCustRule
    状态 Enabled
    规则类型 匹配
    优先级 100
    匹配类型 IP 地址
    匹配变量 SocketAddr
    Operation 不包含
    IP 地址或范围 10.10.10.0/24
    Then 拒绝流量

    自定义规则

    选择 添加

  10. 选择“下一步: 关联”。

  11. 选择“关联 Front Door 配置文件”。

  12. 对于“前端配置文件”,请选择你的前端配置文件。

  13. 对于“域”,请选择域。

  14. 选择 添加

  15. 选择“查看 + 创建”。

  16. 通过策略验证后,选择“创建”。

测试 WAF 策略

  1. WAF 策略部署完成后,浏览到你的 Azure Front Door 前端主机名。

  2. 应看到自定义阻止消息。

    WAF 规则测试

    注意

    专用 IP 地址专门用于自定义规则中,以确保规则会触发。 在实际部署中,针对特定情况使用 IP 地址创建“允许”和“拒绝”规则。

通过 Azure CLI 配置 WAF 策略

按照以下步骤使用 Azure CLI 配置 WAF 策略。

先决条件

在开始配置 IP 限制策略之前,请设置 CLI 环境并创建 Azure Front Door 配置文件。

设置 Azure CLI 环境

  1. 安装 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 扩展。
  2. 如果在 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

使用 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 策略

按照以下步骤使用 Azure PowerShell 配置 WAF 策略。

先决条件

在开始配置 IP 限制策略之前,请设置 PowerShell 环境并创建 Azure Front Door 配置文件。

设置 PowerShell 环境

Azure PowerShell 提供一组使用 Azure 资源管理器模型来管理 Azure 资源的 cmdlet。

可以在本地计算机上安装 Azure PowerShell 并在任何 PowerShell 会话中使用它。 遵照页面上的说明使用 Azure 凭据登录到 PowerShell,然后安装 Az 模块。

  1. 使用以下命令连接到 Azure,然后使用交互式对话框登录。

    Connect-AzAccount
    
  2. 在安装 Azure Front Door 模块之前,请确保安装最新版本的 PowerShellGet 模块。 运行下面的命令,然后重新打开 PowerShell。

    Install-Module PowerShellGet -Force -AllowClobber
    
  3. 使用以下命令安装 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

配置 WAF 策略

使用 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 策略,可以使用 Update-AzFrontDoorWafPolicy 更新策略。

将 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 前端。 后续策略更新会自动应用到前端。

使用资源管理器模板配置 WAF 策略

若要查看使用自定义 IP 限制规则创建 Azure Front Door 和 WAF 策略的模板,请转到 GitHub

后续步骤

了解如何创建 Azure Front Door 配置文件