共用方式為

配置Azure Firewall规则

可以使用经典规则或防火墙策略通过 NAT 规则、网络规则和应用程序规则配置Azure Firewall。 默认情况下,Azure Firewall拒绝所有流量,直到手动配置规则以允许流量。 规则是终止性的,因此在匹配时规则处理会停止。

使用经典规则进行规则处理

防火墙按规则类型的优先顺序处理规则集合,从较小的数字到更大的数字(100 到 65,000)。 规则集合名称只能包含字母、数字、下划线、句点或连字符。 该名称必须以字母或数字开头,并且以字母、数字或下划线结尾。 名称最大长度为 80 个字符。

最初,将规则集合的优先级编号以 100 的增量(100、200、300 等)间隔设置,以便有空间在需要时添加更多规则集合。

使用防火墙策略来处理规则

通过使用防火墙策略,可以在规则集合和规则集合组内组织规则。 规则集合组包含零个或多个规则集合。 规则集合的类型为 NAT、网络或应用。 可以在单个规则组中定义多个规则集合类型。 可以在规则集合中定义零个或多个规则。 规则集合中的规则的类型必须相同(NAT、网络或应用程序)。

系统基于规则集合组优先级和规则集合优先级处理规则。 优先级为 100(最高优先级)到 65,000(最低优先级)之间的任意数字。 系统首先处理优先级最高的规则集合组。 在规则集合组中,系统首先处理优先级最高的规则集合(最低数字)。

如果从父策略继承防火墙策略,则父策略中的规则集合组始终优先于子策略的优先级。

注意

无论规则收集组或规则集合优先级和策略继承如何,系统始终在网络规则之后处理应用程序规则,并在 DNAT 规则之后处理网络规则。

总结:

  1. 父策略始终优先于子策略。
  2. 系统按优先级顺序处理规则集合组。
  3. 系统按优先级顺序处理规则集合。
  4. 系统处理 DNAT 规则,然后处理网络规则,然后处理应用程序规则。

下面是包含四个规则集合组的示例策略。 BaseRCG1BaseRCG2 继承自父策略; ChildRCG1ChildRCG2 属于子策略。

小窍门

这些表中使用的缩写: RCG = 规则集合组,RC = 规则集合。 优先级数字范围从 100(最高优先级)到 65,000(最低优先级)。

策略结构:

级别 名称 类型 优先级 规则 Policy
BaseRCG1 规则集合组 200 8 Parent
Collection DNATRC1 DNAT 600 7 Parent
Collection DNATRC3 DNAT 610 3 Parent
Collection NetworkRC1 Network 800 1 Parent
BaseRCG2 规则集合组 300 3 Parent
Collection AppRC2 应用程序 1200 2 Parent
Collection NetworkRC2 Network 1300 1 Parent
ChildRCG1 规则集合组 300 5 孩子
Collection ChNetRC1 Network 700 3 孩子
Collection ChAppRC1 应用程序 900 2 孩子
ChildRCG2 规则集合组 650 9 孩子
Collection ChNetRC2 Network 1100 2 孩子
Collection ChAppRC2 应用程序 2000 7 孩子
Collection ChDNATRC3 DNAT 3000 2 孩子

防火墙循环访问所有规则集合组三次,每个规则类型一次:DNAT、网络、应用程序。 在每个传递中,它按优先级顺序处理组,然后按优先级顺序处理每个组中的规则集合。 下表显示了此示例的完整处理顺序:

处理顺序:

步骤 规则集合 类型 父 RCG
1 DNATRC1 DNAT BaseRCG1 (200)
2 DNATRC3 DNAT BaseRCG1 (200)
3 ChDNATRC3 DNAT ChildRCG2 (650)
4 NetworkRC1 Network BaseRCG1 (200)
5 NetworkRC2 Network BaseRCG2 (300)
6 ChNetRC1 Network ChildRCG1(300)
7 ChNetRC2 Network ChildRCG2 (650)
8 AppRC2 应用程序 BaseRCG2 (300)
9 ChAppRC1 应用程序 ChildRCG1(300)
10 ChAppRC2 应用程序 ChildRCG2 (650)

有关防火墙策略规则集的详细信息,请参阅Azure Firewall策略规则集

威胁情报

如果启用基于威胁情报的筛选,这些规则的优先级最高。 Azure Firewall始终先处理它们,然后再处理网络和应用程序规则。 基于威胁情报的筛选可以在Azure Firewall处理任何配置的规则之前阻止流量。 有关详细信息,请参阅Azure Firewall基于威胁情报的筛选

入侵检测和防御系统(IDPS)

警报 模式下配置 IDPS 时,IDPS 引擎与规则处理逻辑并行工作。 它会针对入站和出站流生成匹配签名的警报。 对于 IDPS 签名匹配,Azure Firewall在防火墙日志中记录警报。 但是,由于 IDPS 引擎与规则处理引擎并行工作,应用程序或网络规则拒绝或允许的流量仍可能会生成另一个日志条目。

警报和拒绝 模式下配置 IDPS 时,IDPS 引擎在规则处理引擎后内联工作并激活。 因此,这两个引擎都生成警报,并可能会阻止匹配流。

IDPS 执行的会话中断会以静默方式阻止数据流。 因此,不会在 TCP 级别发送 RST。 由于 IDPS 始终在网络或应用程序规则匹配(允许或拒绝)后检查流量并将其记录在日志中,因此,当 IDPS 因签名匹配决定拒绝会话时,日志中可能会记录另一条 Drop 消息。

启用 TLS 检查时,Azure Firewall检查未加密和加密的流量。

隐式返回流量支持(有状态 TCP/UDP)

可以配置防火墙规则,以仅允许一个方向的流量。 例如,Azure Firewall可以允许从 本地网络启动的连接Azure 虚拟网络,同时要求阻止从 Azure 虚拟网络 发起的新连接到 本地网络。 若要强制实施此策略,请将 explicit Deny 规则添加到从 Azure 虚拟网络本地 网络的流量。

Azure Firewall支持此配置。 Azure Firewall是有状态的,因此它允许返回已建立的 TCP 或 UDP 连接的流量(例如,从本地启动的连接的 SYN-ACK/ACK 数据包),即使显式拒绝规则存在于相反的方向。 显式拒绝规则继续阻止从Azure虚拟网络到本地的新连接。

出站连接

网络规则和应用程序规则

如果配置网络规则和应用程序规则,Azure Firewall在应用程序规则之前按优先级顺序应用网络规则。 规则将终止。 因此,如果Azure Firewall在网络规则中找到匹配项,则它不会处理任何其他规则。 如果配置 IDPS,Azure Firewall在所有遍历流量上运行它。 IDPS 找到签名匹配项时,可以根据 IDPS 模式生成警报或阻止可疑流量。

如果没有网络规则匹配且协议为 HTTP、HTTPS 或 MSSQL,则应用程序规则会按优先级顺序评估数据包。

对于 HTTP,Azure Firewall根据主机标头查找应用程序规则匹配项。 对于 HTTPS,Azure Firewall仅根据 SNI 查找应用程序规则匹配项。

对于 HTTP 和经过 TLS 检查的 HTTPS,防火墙会忽略数据包的目标 IP 地址,而是使用从 Host 头中解析出的 DNS IP 地址。 如果实际 TCP 端口与主机标头中的端口不匹配,防火墙会丢弃流量。 Azure DNS或你在防火墙上配置的自定义 DNS 执行 DNS 解析。

注意

Azure Firewall始终使用设置为原始源 IP 地址的 XFF(X-Forwarded-For) 标头填充 HTTP 和 HTTPS 协议(使用 TLS 检查)。

当应用程序规则包含 TLS 检查时,防火墙规则引擎将处理 SNI、主机标头以及与规则匹配的 URL。

如果Azure Firewall在应用程序规则中找不到匹配项,则会根据基础结构规则集合评估数据包。 如果Azure Firewall仍然找不到匹配项,则默认情况下会拒绝数据包。

基础设施规则集

Azure Firewall(Azure 防火墙)内置了用于默认允许的基础结构 FQDN 的规则集合。 这些 FQDN 特定于平台,不能用于其他目的。 基础结构规则集合在应用程序规则之后和最终拒绝所有规则之前进行处理。

内置基础结构规则集合包括以下服务:

  • 对存储平台镜像库的计算资源访问(PIR)
  • 托管磁盘状态存储访问
  • Azure 诊断和日志记录 (MDS)

重写基础设施规则集合

可以通过创建在最后处理的拒绝全部应用程序的规则集合来替代内置基础设施规则集合。 它始终在基础结构规则集合之前处理。 默认情况下,基础结构规则集合中不存在的任何内容都被拒绝。

注意

可以为 TCPUDPICMP或任何 IP 协议配置网络规则。 任何 IP 协议包括 Internet 分配号码机构(IANA)协议编号文档中定义的所有 IP 协议。 如果显式配置目标端口,规则将转换为 TCP+UDP 规则。 在 2020 年 11 月 9 日之前,“任意”意味着 TCP、UDP 或 ICMP。 因此,你可能在该日期之前配置了“协议为任意”、且“目标端口为 *”的规则 。 如果不打算允许当前定义的任何 IP 协议,请修改规则以显式配置所需的协议(TCP、UDP 或 ICMP)。

入站连接

DNAT 规则和网络规则

可以通过使用 Azure 门户配置目标网络地址转换(DNAT),如 使用 Azure 门户并通过 Azure Firewall DNAT 筛选入站 Internet 或 Intranet 流量 中所述,来启用入站 Internet 或 Intranet 连接。 NAT 规则在网络规则之前采用优先级。 如果 Azure Firewall 找到匹配项,它将根据 DNAT 规则翻译流量并允许通过。 因此,流量不会受到其他网络规则的任何进一步处理。 出于安全原因,请添加特定的 Internet 源以允许 DNAT 访问网络,并避免使用通配符。

Azure Firewall不适用于入站连接的应用程序规则。 因此,如果要筛选入站 HTTP/S 流量,请使用 Web Application Firewall (WAF)。 有关详细信息,请参阅 什么是 Azure Web Application Firewall

示例

下面的示例显示了组合使用其中一些规则时的结果。

示例 1

允许连接到 google.com,因为网络规则匹配。

网络规则 - 操作:允许

名称 协议 源类型 目标类型 目标地址 目标端口
允许网络 TCP IP 地址 * IP 地址 * 80,443

应用程序规则 - 操作:拒绝

名称 源类型 协议:端口 目标完全限定域名 (FQDN)
Deny-google IP 地址 * http:80,https:443 google.com

结果

允许连接到 google.com,因为数据包与 Allow-web 网络规则匹配。 规则处理在此处停止。

示例 2

由于优先级较高的"拒绝"网络规则集合阻止了 SSH 流量,因此 SSH 流量被拒绝。

网络规则集合 1 — 名称:允许集合,优先级:200,操作: 允许

名称 协议 源类型 目标类型 目标地址 目标端口
Allow-SSH TCP IP 地址 * IP 地址 * 22

网络规则集合 2 — 名称:拒绝收集,优先级:100,操作: 拒绝

名称 协议 源类型 目标类型 目标地址 目标端口
拒绝-SSH TCP IP 地址 * IP 地址 * 22

结果

SSH 连接被拒绝,因为优先级较高的网络规则集合会阻止它们。 此时,规则处理停止。

规则更改

如果更改规则以拒绝以前允许的流量,Azure Firewall删除任何相关的现有会话。

三向握手行为

作为有状态服务,Azure Firewall 为允许的流量从源到目标完成 TCP 三向握手。 例如,VNet-A 到 VNet-B。

创建从 VNet-A 到 VNet-B 的允许规则并不意味着允许从 VNet-B 到 VNet-A 的新发起的连接。

因此,无需创建从 VNet-B 到 VNet-A 的显式拒绝规则。

后续步骤