Leer en inglés

Compartir a través de

使用 Azure 防火墙控制出站流量

本文介绍如何使用 Azure 防火墙锁定从应用服务应用到后端 Azure 资源或其他网络资源的出站流量。 此配置有助于防止数据泄露或恶意程序植入风险。

默认情况下,应用服务应用可以向公共 Internet 发出出站请求(例如,从 NPM.org 安装所需的 Node.js 包时)。 如果应用与 Azure 虚拟网络集成,可以通过网络安全组出站流量控制在有限范围内,例如目标 IP 地址、端口和协议。 使用 Azure 防火墙可以更细粒度地控制出站流量,并且可以根据 Azure 网络安全中的实时威胁情报筛选流量。 你可以跨订阅和虚拟网络集中创建、实施和记录应用程序与网络连接策略(请参阅 Azure 防火墙功能)。

有关应用服务中的详细网络概念和安全性改进,请参阅网络功能应用服务从零到优秀,第 6 部分:保护 Web 应用

先决条件

  • 为应用启用区域虚拟网络集成
  • 验证已启用“路由全部”。 默认启用此设置,该设置要求应用服务通过集成虚拟网络路由所有出站流量。 如果将其禁用,则仅到专用 IP 地址的流量通过虚拟网络路由。
  • 如果还想通过 Azure 防火墙路由对后端 Azure 服务的访问,请在集成虚拟网络中的应用服务子网上禁用所有服务终结点。 配置 Azure 防火墙后,到 Azure 服务的出站流量将通过防火墙而不是服务终结点进行路由。

1.创建所需的防火墙子网

若要将防火墙部署到集成虚拟网络,需要名为 AzureFirewallSubnet 的子网。

  1. Azure 门户中,导航到与应用集成的虚拟网络。
  2. 在左侧导航中,选择“子网”>“+ 子网” 。
  3. 在“名称”中,请键入“AzureFirewallSubnet” 。
  4. 子网地址范围,接受默认值或指定大小至少为 /26 的范围。
  5. 选择“保存”。

2.部署防火墙并获取其 IP

  1. Azure 门户菜单或“主页”页上,选择“创建资源” 。

  2. 在搜索框中键入“防火墙”,然后按 Enter

  3. 选择“防火墙”,然后选择“创建” 。

  4. 在“创建防火墙”页中,如下表所示配置防火墙:

    设置
    资源组 与集成虚拟网络相同的资源组。
    名称 首选名称
    区域 与集成虚拟网络相同的区域。
    防火墙策略 选择“新增”创建策略。
    虚拟网络 选择集成虚拟网络。
    公共 IP 地址 选择现有地址,或选择“新增”创建地址。

    在 Azure 门户中创建 Azure 防火墙的屏幕截图。

  5. 单击“查看 + 创建”。

  6. 再次选择“创建”。

    需要花费几分钟时间来完成部署。

  7. 部署完成后,转到资源组,然后选择防火墙。

  8. 在防火墙的“概述”页中,复制专用 IP 地址。 专用 IP 地址将用作虚拟网络路由规则中的下一个跃点地址。

    获取 Azure 防火墙专用 IP 地址的屏幕截图。

3.将所有流量路由到防火墙

创建虚拟网络时,Azure 会自动为其每个子网创建默认路由表,并将系统默认路由添加到该表。 在此步骤中,你将创建用户定义的路由表,将所有流量路由到防火墙,然后将其与集成虚拟网络中的应用服务子网相关联。

  1. Azure 门户菜单上,选择“所有服务”或在任何页面中搜索并选择“所有服务” 。

  2. 在“网络”下,选择“路由表”。

  3. 选择 添加

  4. 配置路由表,如下例所示:

    在 Azure 门户中创建路由路由表的屏幕截图。

    确保选中创建的防火墙所在的区域。

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

  6. 选择“创建”。

  7. 部署完成后,选择“转到资源”。

  8. 在左侧导航中,选择“路由”>“添加” 。

  9. 配置新路由,如下表所示:

    设置
    地址前缀 0.0.0.0/0
    下一跃点类型 虚拟设备
    下一跃点地址 你在 2.部署防火墙并获取其 IP 中复制的防火墙专用 IP 地址。
  10. 在左侧导航中,选择“子网”>“关联” 。

  11. 在“虚拟网络”中,选择你的集成虚拟网络。

  12. 在“子网”中,选择应用服务子网。

    将路由表与应用服务子网关联的屏幕截图。

  13. 选择“确定”。

4.配置防火墙策略

来自应用的出站流量现通过集成虚拟网络路由到防火墙。 若要控制应用服务出站流量,请将应用程序规则添加到防火墙策略。

  1. 导航到防火墙的概述页面并选择其防火墙策略。

  2. 在防火墙策略页的左侧导航中,选择“应用程序规则”>“添加规则集合” 。

  3. 在“规则”中,添加网络规则并以应用服务子网作为源地址,然后指定 FQDN 目标。 在以下屏幕截图中,目标 FQDN 设为 contoso.com

    配置 Azure 防火墙策略规则的屏幕截图。

    Nota

    你也可以直接在子网中使用应用的专用 IP 地址,而不是指定应用服务子网作为源地址。 你可以使用WEBSITE_PRIVATE_IP环境变量在子网中查找你的应用的专用 IP 地址。

  4. 选择 添加

5.验证出站流量

验证配置的一种简单方法是使用应用的 SCM 调试控制台中的 curl 命令来验证出站连接。

  1. 在浏览器中导航到 https://<app-name>.scm.chinacloudsites.cn/DebugConsole

  2. 在控制台中,使用与配置的应用程序规则匹配的 URL 运行 curl -s <protocol>://<fqdn-address>。 以下截图是一个网站示例,显示了 API 的成功响应和一个 IP 地址。

    在 SCM 调试控制台中使用 curl 命令验证出站流量是否成功的屏幕截图。

  3. 使用与配置的应用程序规则不匹配的 URL 再次运行 curl -s <protocol>://<fqdn-address>。 在以下屏幕截图中,你没有收到任何响应,这表明防火墙已阻止来自应用的出站请求。

    在 SCM 调试控制台中使用 curl 命令发送出站流量的屏幕截图。

Sugerencia

由于这些出站请求要通过防火墙,因此可以通过为防火墙启用诊断日志记录(启用 AzureFirewallApplicationRule)在防火墙日志中捕获它们。

如果在启用诊断日志的情况下运行 curl 命令,则可在防火墙日志中查找到这些命令。

  1. 在 Azure 门户中,导航到你的防火墙。

  2. 从左侧导航中,选择“日志”。

  3. 选择 X,关闭欢迎消息。

  4. 在“所有查询”中,选择“防火墙日志”>“应用程序规则日志数据” 。

  5. 单击 “运行” 。 可以在查询结果中看到这两个访问日志。

    使用 curl 命令验证出站流量是否失败的 SCM 调试控制台的屏幕截图。

更多资源

监视 Azure 防火墙日志和指标