保护发往 Azure 虚拟 WAN 中专用终结点的流量
注意
本文仅适用于安全虚拟中心。 如果要在中心虚拟网络中使用 Azure 防火墙检查流向专用终结点的流量,请参阅使用 Azure 防火墙检查流向专用终结点的流量。
Azure 专用终结点是 Azure 专用链接的构建基块。 在虚拟网络中部署的 Azure 资源可以通过专用终结点来与专用链接资源进行私密通信。
资源可通过专用终结点访问虚拟网络中部署的专用链接服务。 通过虚拟网络对等互连和本地网络连接对专用终结点进行访问扩展了连接性。
你可能需要筛选从本地客户端或 Azure 中的客户端发往特定服务的流量,这些服务通过与虚拟 WAN 连接的虚拟网络中的专用终结点公开。 本文逐步讲解如何将安全虚拟中心与充当安全提供程序的 Azure 防火墙配合使用来完成此任务。
Azure 防火墙使用以下任一方法筛选流量:
- 网络规则中的 FQDN,适用于 TCP 和 UDP 协议
- 应用程序规则中的 FQDN,适用于 HTTP、HTTPS 和 MSSQL。
- 使用网络规则的源和目标 IP 地址、端口与协议
首选应用程序规则而不是网络规则来检查发往专用终结点的流量,因为 Azure 防火墙始终使用应用程序规则对流量进行 SNAT 操作。 检查发往专用终结点的流量时,建议使用 SNAT,因为存在什么是专用终结点?中所述的限制。 如果计划改用网络规则,建议将 Azure 防火墙配置为始终执行 SNAT:Azure 防火墙 SNAT 专用 IP 地址范围。
Azure 管理安全虚拟中心,这些中心无法链接到专用 DNS 区域。 需要建立这种链接才能将专用链接资源 FQDN 解析为其相应的专用终结点 IP 地址。
仅在代理模式下支持 SQL FQDN 筛选(端口 1433)。 与重定向相比,代理模式可能会导致更高的延迟。 如果你要继续使用重定向模式(这是在 Azure 中进行连接的客户端的默认模式),可以使用防火墙网络规则中的 FQDN 来筛选访问。
在 Azure 防火墙中使用网络规则或应用程序规则筛选流量
以下步骤使 Azure 防火墙能够使用网络规则(基于 FQDN 或 IP 地址)或应用程序规则来筛选流量:
网络规则:
在已连接到安全虚拟中心并已链接到托管专用终结点 A 记录类型的专用 DNS 区域的虚拟网络中,部署一个 DNS 转发器虚拟机。
为连接到安全虚拟中心的虚拟网络配置自定义 DNS 服务器:
- 基于 FQDN 的网络规则 - 将自定义 DNS 设置配置为指向 DNS 转发器虚拟机 IP 地址,并在与 Azure 防火墙关联的防火墙策略中启用 DNS 代理。 如果要在网络规则中执行 FQDN 筛选,则需要启用 DNS 代理。
- 基于 IP 地址的网络规则 - 上面所述的自定义 DNS 设置是可选的。 可将自定义 DNS 服务器配置为指向 DNS 转发器虚拟机的专用 IP。
根据步骤 2. 中选择的配置,将本地 DNS 服务器配置为将专用终结点公共 DNS 区域的 DNS 查询转发到 Azure 防火墙的或 DNS 转发器虚拟机的专用 IP 地址。
根据与 Azure 防火墙关联的防火墙策略中的要求配置网络规则。 如果使用基于 IP 地址的规则,请选择“目标类型”IP 地址并将专用终结点的 IP 地址配置为“目标”。 对于基于 FQDN 的网络规则,请选择“目标类型”FQDN 并将专用链接资源公共 FQDN 配置为“目标”。
导航到与安全虚拟中心内部署的 Azure 防火墙关联的防火墙策略。 选择“专用 IP 范围(SNAT)”,然后选择“始终执行 SNAT”选项。
应用程序规则:
对于应用程序规则,上一部分中的步骤 1. 到 3. 仍然适用。 对于自定义 DNS 服务器配置,可以选择使用 Azure 防火墙作为 DNS 代理,也可以直接指向 DNS 转发器虚拟机。
根据与 Azure 防火墙关联的防火墙策略中的要求配置应用程序规则。 选择“目标类型”FQDN 和专用链接资源公共 FQDN 作为“目标”。
最后,无论 Azure 防火墙中配置的规则类型如何,请确保在部署专用终结点的子网中启用网络策略(至少是用于 UDR 支持的策略)。 这将确保发往专用终结点的流量不会绕过 Azure 防火墙。
重要
默认情况下,RFC 1918 前缀自动包含在 Azure 防火墙的“专用流量前缀”中。 对于大多数专用终结点,这足以确保防火墙会检查来自本地客户端或连接到同一安全中心的不同虚拟网络中的流量。 如果发往专用终结点的流量未记录在防火墙中,请尝试将每个专用终结点的 /32 前缀添加到专用流量前缀列表。
如果需要,可以在安全中心编辑将通过 Azure 防火墙进行检查的 CIDR 前缀,如下所示:
在与安全虚拟中心内部署的 Azure 防火墙关联的防火墙策略中导航到“安全虚拟中心”,然后选择要在其中配置筛选发往专用终结点的流量的安全虚拟中心。
导航到“安全配置”,选择“专用流量”下的“通过 Azure 防火墙发送” 。
在安全虚拟中心内,选择“专用流量前缀”以编辑要通过 Azure 防火墙进行检查的 CIDR 前缀,并为每个专用终结点添加一个 /32 前缀。
要检查来自专用终结点所在虚拟网络中客户端的流量,无需专门替代来自专用终结点的 /32 路由。 只要在专用终结点子网中启用了“网络策略”,具有更宽地址范围的 UDR 就会优先。 例如,配置此 UDR 时,将“下一个跃点类型”设置为“虚拟设备”,“下一个跃点地址”设置为 Azure 防火墙的专用 IP,“地址前缀”目标设置为专用于虚拟网络中部署的所有专用终结点的子网。 “传播网关路由”必须设置为“是” 。
下图演示了不同客户端连接到 Azure 虚拟 WAN 中部署的专用终结点所用的 DNS 和数据流量流:
故障排除
尝试通过安全虚拟中心筛选发往专用终结点的流量时可能遇到的主要问题包括:
客户端无法连接到专用终结点。
绕过了 Azure 防火墙。 如果 Azure 防火墙中缺少网络或应用程序规则日志条目,则可以验证此症状。
在大多数情况下,以下问题之一会导致这些问题:
DNS 名称解析不正确
路由配置不正确
DNS 名称解析不正确
验证虚拟网络 DNS 服务器是否已设置为“自定义”,以及 IP 地址是否为安全虚拟中心内 Azure 防火墙的专用 IP 地址。
Azure CLI:
az network vnet show --name <VNET Name> --resource-group <Resource Group Name> --query "dhcpOptions.dnsServers"
通过直接查询配置为 DNS 转发器的虚拟机,验证 DNS 转发器虚拟机所在的虚拟网络中的客户端是否可将专用终结点公共 FQDN 解析为其相应的专用 IP 地址。
Linux:
dig @<DNS forwarder VM IP address> <Private endpoint public FQDN>
检查 AzureFirewallDNSProxy Azure 防火墙日志条目,验证它是否可以从客户端接收和解析 DNS 查询。
AzureDiagnostics | where Category contains "DNS" | where msg_s contains "database.chinacloudapi.cn"
验证是否已启用 DNS 代理,以及是否在与安全虚拟中心内 Azure 防火墙关联的防火墙策略中,配置了指向 DNS 转发器虚拟机 IP 地址的自定义 DNS 服务器 。
Azure CLI:
az network firewall policy show --name <Firewall Policy> --resource-group <Resource Group Name> --query dnsSettings
路由配置不正确
验证与安全虚拟中心内部署的 Azure 防火墙关联的防火墙策略中的安全配置。 确保在“专用流量”列下,此配置对你要筛选其流量的所有虚拟网络和分支连接显示为“受 Azure 防火墙保护” 。
验证与安全虚拟中心内部署的 Azure 防火墙关联的防火墙策略中的安全配置。 如果发往专用终结点的流量未记录在防火墙中,请尝试将每个专用终结点的 /32 前缀添加到专用流量前缀列表。
在虚拟 WAN 下的安全虚拟中心内,检查与你要筛选其流量的虚拟网络和分支连接关联的路由表的有效路由。 如果为你要检查其流量的每个专用终结点添加了 /32 条目,请确保这些条目列在有效路由中。
检查已附加到你要筛选其流量的虚拟网络中部署的虚拟机的 NIC 上的有效路由。 确保你要筛选其流量的每个专用终结点专用 IP 地址(如果已添加)都有对应的 /32 条目。
Azure CLI:
az network nic show-effective-route-table --name <Network Interface Name> --resource-group <Resource Group Name> -o table
检查本地路由设备的路由表。 确保了解专用终结点所部署到的虚拟网络的地址空间。
Azure 虚拟 WAN 不会将在防火墙策略“安全配置”中的“专用流量前缀”下配置的前缀播发到本地。 /32 条目应不会显示在本地路由设备的路由表中。
检查 AzureFirewallApplicationRule 和 AzureFirewallNetworkRule Azure 防火墙日志 。 确保正在记录发往专用终结点的流量。
AzureFirewallNetworkRule 日志条目不包含 FQDN 信息。 检查网络规则时请按 IP 地址和端口进行筛选。
在筛选发往 Azure 文件存储专用终结点的流量时,将仅在客户端首次装载或连接到文件共享时生成 AzureFirewallNetworkRule 日志条目。 Azure 防火墙不会为针对文件共享中的文件执行的 CRUD 操作生成日志。 这是因为,CRUD 操作是通过在客户端首次连接或装载到文件共享时打开的持久性 TCP 通道传送的。
应用程序规则日志查询示例:
AzureDiagnostics
| where msg_s contains "database.chinacloudapi.cn"
| where Category contains "ApplicationRule"