Observação
O acesso a essa página exige autorização. Você pode tentar entrar ou alterar diretórios.
O acesso a essa página exige autorização. Você pode tentar alterar os diretórios.
可以使用经典规则或防火墙策略在 Azure 防火墙上配置 NAT 规则、网络规则和应用程序规则。 默认情况下,Azure 防火墙会拒绝所有流量,除非手动配置规则以允许流量。 规则是终止性的,因此在匹配时规则处理会停止。
使用经典规则进行处理
处理规则集合时,会根据规则类型按优先级顺序(由低编号到高编号,从 100 到 65,000)进行。 规则集合名称只能包含字母、数字、下划线、句点或连字符。 该名称必须以字母或数字开头,并且以字母、数字或下划线结尾。 名称最大长度为 80 个字符。
最好在最初以 100 为增量(100、200、300,依此类推)设置规则集合优先级编号,这样在需要时就还有空间,可以添加更多的规则集合。
通过防火墙策略处理规则
通过使用防火墙策略,规则被组织在规则集合和规则集合组内。 规则集合组包含零个或多个规则集合。 规则集合的类型为 NAT、网络或应用程序。 可以在单个规则组中定义多个规则集合类型。 可以在一个规则集合中定义零个或多个规则。 规则集合中的规则必须属于同一类型(NAT、网络或应用程序)。
根据规则集合组优先级和规则集合优先级处理规则。 优先级为 100(最高优先级)到 65,000(最低优先级)之间的任意数字。 首先处理优先级最高的规则集合组。 在规则集合组中,首先处理优先级最高(数字最小)的规则集合。
如果防火墙策略继承自父策略,则始终优先处理父策略中的规则集合组,而无论子策略的优先级如何。
注意
应用程序规则始终在网络规则之后处理,网络规则始终在 DNAT 规则之后处理,而不管规则集合组或规则集合优先级和策略继承如何。
所以,总而言之:
家长政策始终优先。
- 规则集合组按优先级顺序处理。
- 规则集合按优先级顺序处理。
- 先处理 DNAT 规则,然后处理网络规则,再处理应用程序规则。
下面是一个示例策略:
假设 BaseRCG1 是规则集合组优先级 (200),其中包含规则集合:DNATRC1、DNATRC3、NetworkRC1。
BaseRCG2 是规则集合组优先级 (300),其中包含规则集合:AppRC2、NetworkRC2。
ChildRCG1 是规则集合组优先级 (300),其中包含规则集合:ChNetRC1、ChAppRC1。
ChildRCG2 是一个规则集合优先级 (650),其中包含规则集合:ChNetRC2、ChAppRC2、ChDNATRC3。
如下表所示:
| 名称 | 类型 | 优先级 | 规则 | 继承自 |
|---|---|---|---|---|
| BaseRCG1 | 规则集合组 | 200 | 8 | 父策略 |
| DNATRC1 | DNAT 规则集合 | 600 | 7 | 父策略 |
| DNATRC3 | DNAT 规则集合 | 610 | 3 | 父策略 |
| NetworkRC1 | 网络规则集合 | 800 | 1 | 父策略 |
| BaseRCG2 | 规则集合组 | 300 | 3 | 父策略 |
| AppRC2 | 应用程序规则集合 | 1200 | 2 | 父策略 |
| NetworkRC2 | 网络规则集合 | 1300 | 1 | 父策略 |
| ChildRCG1 | 规则集合组 | 300 | 5 | - |
| ChNetRC1 | 网络规则集合 | 700 | 3 | - |
| ChAppRC1 | 应用程序规则集合 | 900 | 2 | - |
| ChildRCG2 | 规则集合组 | 650 | 9 | - |
| ChNetRC2 | 网络规则集合 | 1100 | 2 | - |
| ChAppRC2 | 应用程序规则集合 | 2000 | 7 | - |
| ChDNATRC3 | DNAT 规则集合 | 3000 | 2 | - |
DNAT 规则的初始迭代:
该过程首先检查编号最小的规则集合组 (RCG),即优先级为 200 的 BaseRCG1。 在该组中,它搜索 DNAT 规则集合并根据优先级对其进行评估。 在此示例中,DNATRC1(优先级 600)和DNATRC3(优先级 610)被发现并进行相应处理。
接下来,它转到下一个 RCG,即 BaseRCG2(优先级 300),但找不到 DNAT 规则集合。
接下来,它继续转到 ChildRCG1(优先级 300),同样没有 DNAT 规则集合。
最后,它检查 ChildRCG2(优先级 650),找到 ChDNATRC3 规则集合(优先级 3000)。
网络规则的迭代:
返回到 BaseRCG1,迭代继续,这次是针对 NETWORK 规则。 仅找到 NetworkRC1(优先级 800)。
然后,它转到 BaseRCG2,NetworkRC2(优先级 1300)就位于此处。
继续转到 ChildRCG1,它发现作为 NETWORK 规则的 ChNetRC1(优先级 700)。
最后,在 ChildRCG2 中,它找到作为 NETWORK 规则集合的 ChNetRC2(优先级 1100)。
APPLICATION 规则的最终迭代:
返回到 BaseRCG1,该过程迭代查找应用规则,但没有找到。
在 BaseRCG2 中,它将 AppRC2(优先级 1200)标识为 APPLICATION 规则。
在 ChildRCG1 中,ChAppRC1(优先级 900)被识别为 APPLICATION 规则。
最后,在 ChildRCG2 中,将 ChAppRC2(优先级 2000)确定为 APPLICATION 规则。
总而言之,规则处理顺序如下:DNATRC1、DNATRC3、ChDNATRC3、NetworkRC1、NetworkRC2、ChNetRC1、ChNetRC2、AppRC2、ChAppRC1、ChAppRC2。
此过程涉及按优先级分析规则集合组,并在每个组内根据每种规则类型(DNAT、NETWORK 和 APPLICATION)的优先级对规则排序。
首先,从所有规则收集组处理所有 DNAT 规则,按优先级顺序分析规则收集组,并按优先级顺序对每个规则集合组中的 DNAT 规则进行排序。 然后对 NETWORK 规则执行相同的过程,最后对 APPLICATION 规则执行相同的过程。
有关防火墙策略规则集的详细信息,请参阅 Azure 防火墙策略规则集。
威胁情报
如果启用基于威胁情报的筛选,则这些规则的优先级最高,始终首先处理(在网络和应用程序规则之前)。 在处理任何已配置的规则之前,威胁情报筛选可能会拒绝流量。 有关详细信息,请参阅 Azure 防火墙基于威胁情报的筛选。
入侵检测和防御系统(IDPS)
在“警报”模式下配置 IDPS 时,IDPS 引擎与规则处理逻辑并行工作,并针对入站和出站流的匹配签名生成警报。 对于 IDPS 签名匹配,会在防火墙日志中记录警报。 但是,由于 IDPS 引擎与规则处理引擎并行工作,因此应用程序/网络规则拒绝/允许的流量仍可能会生成另一个日志条目。
在“警报和拒绝”模式下配置 IDPS 时,IDPS 引擎内联并在规则处理引擎之后激活。 因此,这两个引擎都会生成警报,并且可能会阻止匹配流。
IDPS 执行的会话丢弃会以无提示方式阻止流量。 因此,不会在 TCP 级别发送 RST。 由于 IDPS 总是在匹配了网络/应用程序规则(允许/拒绝)并在日志中标记之后检查流量,因此当 IDPS 因为签名匹配而决定拒绝会话时,会在日志中记录另一条丢弃消息。
如果启用 TLS 检查,则会检查未加密和加密的流量。
出站连接
网络规则和应用程序规则
如果配置了网络规则和应用程序规则,则会在应用程序规则之前先按优先级顺序应用网络规则。 规则将终止。 因此,如果在网络规则中找到了匹配项,则不会处理其他规则。 如果已配置 IDPS,则会对所有经过的流量执行 IDPS,并且在签名匹配时,IDPS 可能会警报或阻止可疑流量。
如果没有网络规则匹配项,并且协议是 HTTP、HTTPS 或 MSSQL,则应用程序规则会按优先级顺序评估数据包。
对于 HTTP,Azure 防火墙根据主机标头查找应用程序规则匹配项。 对于 HTTPS,Azure 防火墙仅根据 SNI 查找应用程序规则匹配项。
对于 HTTP 和经过 TLS 检查的 HTTPS,防火墙会忽略数据包的目标 IP 地址,而是使用从 Host 头中解析出的 DNS IP 地址。 防火墙期望获取主机标头中的端口号,否则它采用标准端口 80。 如果实际 TCP 端口与主机标头中的端口之间存在端口不匹配的情况,则会删除流量。 DNS 解析由 Azure DNS 或自定义 DNS(如果在防火墙上配置)完成。
注意
HTTP 和 HTTPS 协议(使用 TLS 检查)始终由 Azure 防火墙填充,其 XFF (X-Forwarded-For) 标头等于原始源 IP 地址。
当应用程序规则包含 TLS 检查时,防火墙规则引擎会处理 SNI、主机标头以及 URL,以匹配规则。
如果在应用程序规则中仍未找到匹配项,则会根据基础结构规则集合评估数据包。 如果仍然没有匹配项,则默认情况下会拒绝该数据包。
基础设施规则集
Azure 防火墙包含默认情况下允许的基础结构 FQDN 的内置规则集合。 这些 FQDN 特定于平台,不能用于其他目的。 基础结构规则集合在应用程序规则之后和最终拒绝所有规则之前进行处理。
内置基础结构规则集合中包括以下服务:
- 对存储平台镜像库的计算资源访问(PIR)
- 托管磁盘状态存储访问
- Azure 诊断和日志记录 (MDS)
重写基础设施规则集合
可以通过创建一个所有应用都被拒绝的规则集合,且该集合是最后处理的,以替代此内置基础结构规则集合。 它始终会在基础设施规则集合之前被处理。 默认情况下,基础设施规则集之外的任何内容都会被拒绝。
注意
可以为 TCP、UDP、ICMP 或“任意”IP 协议配置网络规则。 “任意”IP 协议包括 Internet 数字分配机构 (IANA) 协议编号文档中定义的所有 IP 协议。 如果显式配置了目标端口,则会将规则转换为 TCP+UDP 规则。 在 2020 年 11 月 9 日之前,“任意”意味着 TCP、UDP 或 ICMP。 因此,你可能在该日期之前配置了“协议为任意”、且“目标端口为 *”的规则 。 如果不打算像当前定义一样允许任意 IP 协议,请修改规则以显式配置所需的协议(TCP、UDP 或 ICMP)。
入站连接
DNAT 规则和网络规则
可以通过配置目标网络地址转换 (DNAT) 来启用入站 Internet 连接,如使用 Azure 门户通过 Azure Firewall DNAT 筛选入站流量中所述。 NAT 规则会在网络规则之前按优先级应用。 如果找到匹配项,流量将根据 DNAT 规则进行转译,并被防火墙允许通过。 这意味着流量不会由其他网络规则进行进一步的处理。 出于安全原因,推荐的方法是添加特定的 Internet 源以允许 DNAT 访问网络,并避免使用通配符。
应用程序规则不适用于入站连接。 因此,如果要筛选入站 HTTP/S 流量,应使用 Web 应用程序防火墙 (WAF)。 有关详细信息,请参阅什么是 Azure Web 应用程序防火墙?
示例
下面的示例显示了组合使用其中一些规则时的结果。
示例 1
由于存在匹配的网络规则,因此允许连接到 qq.com。
网络规则
- 操作:允许
| 名称 | 协议 | 源类型 | 源 | 目标类型 | 目标地址 | 目标端口 |
|---|---|---|---|---|---|---|
| 允许网络 | TCP | IP 地址 | * | IP 地址 | * | 80,443 |
应用程序规则
- 操作:拒绝
| 名称 | 源类型 | 源 | 协议:端口 | 目标完全限定域名 (FQDN) |
|---|---|---|---|---|
| Deny-qq | IP 地址 | * | http:80,https:443 | qq.com |
结果
允许连接到 qq.com,因为该数据包符合 Allow-web 网络规则。 此时,规则处理停止。
示例 2
由于优先级较高的"拒绝"网络规则集合阻止了 SSH 流量,因此 SSH 流量被拒绝。
网络规则集合 1
- 名称:Allow-collection
- 优先级:200
- 操作:允许
| 名称 | 协议 | 源类型 | 源 | 目标类型 | 目标地址 | 目标端口 |
|---|---|---|---|---|---|---|
| Allow-SSH | TCP | IP 地址 | * | IP 地址 | * | 22 |
网络规则集合 2
- 名称:Deny-collection
- 优先级:100
- 操作:拒绝
| 名称 | 协议 | 源类型 | 源 | 目标类型 | 目标地址 | 目标端口 |
|---|---|---|---|---|---|---|
| 拒绝-SSH | TCP | IP 地址 | * | IP 地址 | * | 22 |
结果
由于优先级较高的网络规则集合阻止 SSH 连接,因此 SSH 连接被拒绝。 此时,规则处理停止。
规则更改
如果更改规则以拒绝以前允许的流量,则会删除任何相关的现有会话。
三向握手行为
作为有状态服务,Azure 防火墙为从源到目标的允许流量完成 TCP 三向握手。 例如,VNet-A 到 VNet-B。
创建从 VNet-A 到 VNet-B 的允许规则并不意味着允许从 VNet-B 到 VNet-A 的新启动连接。
因此,无需创建从 VNet-B 到 VNet-A 的显式拒绝规则。