本文介绍如何使用 Azure 防火墙锁定从 Azure 应用服务应用到后端 Azure 资源或其他网络资源的出站流量。 此配置有助于防止数据外泄并保护应用免受恶意程序植入的影响。
默认情况下,应用服务应用可以向公共 Internet 发出出站请求,例如,从 NPM.org 安装所需的 Node.js 包时。如果应用 与 Azure 虚拟网络集成,则可以使用 网络安全组 来控制出站流量的目标 IP 地址、端口和协议。
Azure 防火墙可以更精细地控制出站流量,并允许基于来自Microsoft网络安全的实时威胁情报筛选流量。 可以跨订阅和虚拟网络集中创建、强制实施和记录应用程序和网络连接策略。 有关详细信息,请参阅 Azure 防火墙功能。
请完成以下过程来设置、部署和使用 Azure 防火墙来控制应用服务应用的出站流量。 有关应用服务网络概念和安全增强功能的详细信息,请参阅 “网络功能和0 到 Hero 与应用服务”,第 6 部分:保护 Web 应用。
先决条件
具有使用区域虚拟网络集成的应用服务应用。 有关详细信息,请参阅 在 Azure 应用服务中启用虚拟网络集成。
1.创建所需的防火墙子网
要将防火墙部署到集成的虚拟网络中,虚拟网络必须具有名为 AzureFirewallSubnet 的子网。 此外,默认情况下需要强制隧道,因此网络还必须有一个名为 AzureFirewallManagementSubnet 的子网。 有关详细信息,请参阅 Azure 防火墙强制隧道。
在 Azure 门户中,导航到与应用集成的虚拟网络。
在应用的集成虚拟网络的页面上,从左侧导航菜单中选择 “子网 ”。
在“子网”页中,选择“+ 子网”。
在“ 添加子网 ”页上,出于 子网目的,选择 “Azure 防火墙”。
会自动分配名称 AzureFirewallSubnet 和其他设置。 在 IPv4 下,确保指定的范围 大小至少为 /26。
选择 添加 。
重复相同的过程以添加 AzureFirewallManagementSubnet,这次选择 防火墙管理(强制隧道) 作为 子网用途。
2.部署防火墙并获取其 IP 地址
在“虚拟网络 概述 ”页中,从左侧导航菜单中选择 “防火墙 ”。
选择 “单击此处”添加新防火墙。
在 “创建防火墙 ”页上,确保 订阅、 资源组和 区域 与虚拟网络相同。
对于 Name,请提供防火墙的名称。
对于 防火墙策略,请选择“ 添加新 ”并为策略提供名称。
对于 “选择虚拟网络”,请选择“ 使用现有 虚拟网络”,然后选择集成的虚拟网络。
对于 公共 IP 地址,请选择现有地址,或通过选择“ 添加新地址”创建一个地址。
在 防火墙管理 NIC 下,选择 管理公共 IP 地址的现有地址,或通过选择“ 添加新”创建一个地址。
选择页面顶部的 “查看 + 创建 ”,并在验证通过时选择“ 创建”。 部署防火墙需要几分钟时间。
部署完成后,选择“ 转到资源”。
在防火墙的 “概述 ”页上,复制 专用 IP 地址。 使用专用 IP 地址作为虚拟网络的路由规则中的下一跃点地址。
将所有流量路由到防火墙
创建虚拟网络时,Azure 会自动为其每个子网创建默认路由表,并将系统默认路由添加到该表。 在此步骤中,将创建一个用户定义的路由表,用于将所有流量路由到防火墙。 将用户定义的路由表与集成虚拟网络中的应用服务子网相关联。
在 Azure 门户 的应用页面上,从左侧导航菜单中选择 “网络 ”。
在“网络”页上,在右下角的“集成子网配置”下,选择“未配置用户定义的路由”。
在“ 路由表 ”页上,选择“ 创建”
确保订阅和资源组正确,并选择与防火墙相同的 区域 。
提供路由表的名称。
对于 传播网关路由,请选择 “否”。
选择“查看 + 创建”,然后选择“创建”。
部署完成后,选择“ 转到资源”或转到资源组,然后从资源列表中选择路由表。
在“路由表”页上,从左侧导航菜单中选择“ 路由 ”。
在“ 路由 ”页上,选择“ 添加”,并填写 “添加路由 ”屏幕,如下所示:
- 路由名称:提供路由的名称。
- 目标类型:选择 IP 地址。
- 目标 IP 地址/CIDR 范围:输入 0.0.0.0/0。
- 下一跃点类型:选择 虚拟设备。
- 下一跃点地址:输入之前复制的防火墙的专用 IP 地址。
选择 添加 。
在路由表页上,从左侧导航菜单中选择 “子网 ”。
在 “子网 ”页上,选择“ 关联”。
在 “关联子网 ”屏幕上,确保已选择应用的集成虚拟网络和子网,或选择它们,然后选择“ 确定”。
来自应用的出站流量现通过集成虚拟网络路由到防火墙。
配置防火墙策略
若要控制应用服务出站流量,请将应用程序规则添加到防火墙策略。
在防火墙的 “概述 ”页上,选择防火墙策略下的防火墙 策略。
在防火墙策略页上,从左侧导航菜单中选择 应用程序规则 。
在 “应用程序规则 ”页上,选择 “添加规则集合”。
在 “添加规则集合 ”屏幕上,输入 “名称 ”和“ 优先级 ”介于 100 和 65000 之间。
在 “规则”下,添加包含应用服务子网的网络规则作为源地址,并指定完全限定的域名(FQDN)目标。 以下示例演示 api 的目标 FQDN 。my-ip.io。
选择 添加 。
注意
可以直接使用应用的专用 IP 地址,而不是将应用服务子网指定为源地址。 你可以使用
WEBSITE_PRIVATE_IP环境变量在子网中查找你的应用的专用 IP 地址。
验证出站流量
验证配置的出站连接的一种简单方法是使用 curl 来自应用的源代码管理管理器(SCM)(也称为 Kudu)调试控制台的命令。
在浏览器中导航到
https://<app-name>.scm.chinacloudsites.cn/DebugConsole。在控制台中,使用与配置的应用程序规则匹配的 URL 运行
curl -s <protocol>://<fqdn-address>。 例如,以下屏幕截图显示了对它的成功响应https://api.my-ip.io。
如果使用与配置的应用程序规则不匹配的 URL 运行 curl -s <protocol>://<fqdn-address> ,则不会收到任何响应,这表示防火墙阻止了来自应用的出站请求。
防火墙诊断日志记录
由于出站请求通过防火墙,因此可以通过使用 Azure 防火墙应用程序规则启用防火墙日志记录,在防火墙日志中捕获这些请求。 有关详细信息,请参阅 结构化 Azure 防火墙日志。
如果在启用诊断日志的情况下运行 curl 命令,则可在防火墙日志中查找到这些命令。
- 在 Azure 门户中,导航到你的防火墙。
- 从左侧导航菜单中选择 “日志 ”。
- 在“查询中心”屏幕上,选择“应用程序规则日志数据”磁贴中的“运行”。
可以在查询结果中看到这两个访问日志。