文章整理自《华为防火墙技术漫谈》

全系列状态检测防火墙报文处理流程

 

状态检测会话机制是华为防火墙对报文处理的关键环节,即防火墙收到报文后,何时、如何创建会话,命中会话表的报文如何被转发。我们自然而然地就会把防火墙上的报文处理过程分为查询会话表前、中、后三个阶段。

华为防火墙笔记-报文处理流程-编程之家

查询会话前的处理过程:基础处理

这个阶段的主要目的是解析出报文的帧头和IP头,并根据报文头部中的信息进行一些基础的安全检测(单包攻击防范)。

查询会话中的处理过程:转发处理,关键是会话建立

这个阶段是防火墙对报文转发处理的核心。建立会话表,根据会话表转发报文,是状态检测防火墙的精髓。

报文分类

协议报文:使防火墙正常运行于网络中,或用于双机热备等功能的协议报文,如OSPF,IGMP,HRP等报文。

穿过防火墙的业务报文:报文的源地址为内网、目的地址为外网,例如,用户经过防火墙访问Internet的报文,我们通常习惯称为业务报文。这些报文可能为二层或三层报文,尤其是TCP,UDP等报文最为常见。顺便说一句,二层和三层报文,其实在转发流程上没有本质区别,主要差异在于查询路由阶段,二层报文是根据MAC地址转发,三层报文是根据路由表转发。

对于协议报文,防火墙处理比较特殊,并不适用于通用原则。以OSPF协议为例,当网络类型为Broadcast时,其DD报文为单播报文,需要经过防火墙的安全策略检查。而当网络类型为P2P时,其DD报文为组播报文,则不需要经过防火墙的安全策略检查,直接被转发。对于每个协议,防火墙处理并不完全相同,由于协议报文主要用于系统及网络互联。

对于业务报文,如TCP首包、UDP等报文都需要创建会话,判断该报文要创建会话后,接下来马上查询会话表中是否已经创建了该报文的会话。

对于不能匹配会话表中任一表项的报文,防火墙判断该报文为某一流量的首包,进入首包处理流程

对于匹配了会话表中某一表项的报文,防火墙判断该报文为某一流量的后续包,进入后续包处理流程

首包处理流程

(1)先使该报文与黑名单匹配,若报文源地址命中黑名单,则此报文被丢弃,不再进入后续流程。

(2)查询该报文是否命中正反向Server-map表,若报文命中Server-map表,记录Server-map表中的信息。

防火墙上配置NAT ServerNAT No-pat三元组NATASPF等功能,会生成Server-map表。

NAT Server:配置完成后防火墙上直接生成Server-map表。若报文匹配该Server-map表,刚记录Server-map表中转换后目的IP地址和端口信息,并根据该记录继续后续流程。

NAT No-pat:匹配该NAT No-pat策略的报文,会触发生成Server-map表。后续报文(这里的后续报文不是首包/后续包概念中的后续包,是这个业务的后续报文)查询该Server-map表,记录转换后目的IP地址和端口信息,并根据该记录继续后续流程。

三元组NAT:匹配该三元组NAT策略的报文,会触发生成Server-map表。后续报文(同上)查询该Server-map表,记录转换后目的IP地址和端口信息,并根据该记录继续后续流程。这块还要分情况对待,匹配Server-map表的报文受不受安全策略控制是由firewall endpoint-independent filter enable命令决定的。

ASPF:在安全域间或域内,针对特定业务配置ASPF功能后,防火墙会对业务恨文进行检测,检测到的报文会触发生成Server-map表。后续报文(同上)查询该Server-map表,命中该表的报文,不再进行安全策略匹配,直接按该表信息创建新会话。

(3)继续根据(2)的记录结果,查询报文命中哪条路由,优先查询策略路由。若未命中策略路由,则查询路由表,决定报文的下一跳和出接口。

(4)继续查询是否命中安全策略,已知报文入接口源地址、判断出报文出接口后,可以查询到该出入接口所在安全区域的安全策略配置,若报文没有匹配到安全策略或匹配到的安全策略的动作为“阻断”,则报文被丢弃,不再继续后续流程;若报文匹配的安全策略的动作为“允许”,则继续后续流程。

(5)继续查询是否命中源NAT策略,若报文匹配到一条源NAT策略,则记录NAT转换后的源IP地址和端口信息。

(6)顺利通过安全策略匹配检查后,终于走到这一步:根据上述记录结果,创建会话

后续包处理流程

该流程主要判断会话是否需要刷新。

当为首包创建会话的各表项和策略,如路由表、安全策略等发生变化时,会话需要根据这些变化相应进行刷新。会话刷新,也意味着需要重新查询路由表、安全策略,来确定该后续包的走向。

查询会话后的处理过程:安全业务处理及报文发送

报文在首包处理流程中经一通查询、创建会话后,就与后续包处理流程殊途同归了,即都进入本阶段(第三阶段)。

(1)首先进行基于IP的限流、IPS等UTM业务处理。

(2)报文顺利通过UTM检查之后,到了实质性的地址转换环节:根据已创建的会话表,进行目的地址转换、源地址转换。

这个目的地址转换、源地址转换对应配置就是NAT Server,源NAT策略等NAT功能。

(3)该转换的就转换,该过滤的就过滤,一切安全业务流程顺利通过后,报文终于走到了分发的十字路口。

  • 如果报文的目的地址为外部网络的地址,防火墙转发该报文,由接口发送出去。
  • 如果报文的目的地址为防火墙本身(ping等协议报文),会被上送至防火墙设备管理层面处理。
  • 如报文是VPN报文(收到的VPN报文,防火墙为隧道终点),则会被解封装。并在解封装后重走一次上述第一、二、三阶段处理流程。
  • 如报文是准备进入VPN隧道的报文(防火墙为VPN隧道起点),则会进行VPN封装。

求同存异:集中式与分布式防火墙差异对报文处理流程的影响

对于集中式低端防火墙USG2000/3000/5000/6000说,报文会被上送至一个集中的CPU模块(可能由多个CPU组成)进行处理

集中式防火墙一般为盒式设备,可以插接多种扩展接口卡,但设备的总机性能恒定,即取决于该设备配置的CPU模块处理能力。

对于分布式高端防火墙USG9500来说,报文处理流程就会复杂一些,分为多种情况,全系列状态检测防火墙报文处理流程中介绍的报文处理流程是其中一个最核心的子集-SPU板业务处理流程

分布式防火墙一般为框式设备,以USG9500来说,由两块标配主控板MPU、交换网板SFU、接口板LPU、业务板SPU组成,其中LPU与SPU的槽位可混插,客户可按需购买。相比集中式防火墙,分布式防火墙由各种单板组成,每种单板各司其责。

  • 主控板MPU:主要负责系统的控制和管理工作,包括路由计算、设备管理和维护、设备监控等。
  • 交换网板SFU:主要负责各板之间数据交换。
  • 接口板LPU:主要负责接收和发送报文,以及Qos处理等。
  • 业务板SPU:主要负责防火墙的安全业务处理,包括安全策略、NAT、攻击防范、VPN等。设备总机性能随插接SPU板的数量增加而线性增加,这是分布式防火墙的特点和价值所在。

当安全策略遇上NAT Server

防火墙报文处理流程中查询Server-Map表在前,安全策略处理在后。当需求为允许外网客户端访问经过NAT Server转换的内部服务器时,安全策略配置允许到达的目的地址为该服务器的私网地址,而非NAT Server的global地址。

当源NAT遇上NAT Server

由于防火墙报文处理流程规定NAT Server处理在前,源NAT处理在后。所以报文命中了NAT Server反向Server-map表后,不再源NAT流程。

这个问题的解决办法是,配置NAT Server时增加no-reverse参数,不生成反向Server-map表。这样HTTP Server访问分部资源的流量就可以匹配源NAT策略,不做源NAT转换(no-nat)直接进入VPN处理流程。

[FW]nat server protocol tep global 1.1.1.1 9980 inside 192.168.1.2 80 no-reverse