状态检测防火墙报文处理流程
- 查询会话前的处理过程:基础处理
- 查询会话中的处理过程:转发处理,关键是会话建立
- 查询会话后的处理过程:安全业务处理及报文发送
了解转发流程之前,先给报文分个类
- 协议报文:使防火墙正常运行于网络中,或用于双机热备等功能的协议报文,如OSPF,HRP,ICMP等报文
- 穿过防火墙的业务报文:用户经过防火墙访问Internet的报文,我们通常习惯称为业务报文,可能是二层或三层报文。尤其TCP,UDP最为常见。(二层和三层报文,转发流程没有本质区别,主要差异在于查路由阶段,二层报文根据MAC地址转发,三层报文根据路由表转发)
做分类是因为防火墙对于这两类报文处理流程有所不同。
- 对于协议报文,防火墙处理比较特殊,并不适用于通用原则。以OSPF为例,当网络类型为Broadcast时,其DD报文为单播报文,需要经过防火墙的安全策略检查。而当网络类型为P2P时,其DD报文为组播报文,则不需要经过防火墙的安全策略检查,直接被转发。对于每个协议。防火墙处理并不完全相同。
- 对于业务报文。如TCP首包,UDP等报文都需要建立会话。判断该报文要创建会话后,接下来马上查询会话表中是否已创建该报文的会话。
- ---对于不能匹配会话表中任一表项的报文,防火墙判断该报文为某一流量的首包,进入首包处理流程
---对于匹配了会话表中某一表项的报文,防火墙判断该报文为某一流量的后续包,进入后续包处理流程
查询会话表前的基本处理
主要目的是解析出报文的帧头部和IP报文头部。根据头部当中的信息进行一些基础的安全检测
收到一个数据包:
首先监测是否有配置MAC地址过滤
为什么是先MAC地址过滤再解析帧头部?.
MAC地址过滤的时候只是扫描出MAC地址,根据MAC地址来进行MAC地址过滤。后面的解析帧头部能完整的解析整个帧头部。(自我补充:如果两者位置调换,只会徒增设备的性能消耗,费力不讨好)
根据接收报文的接口是二层接口还是三层接口有两种处理方式:
对于三层接口接收的报文,NGFW需要根据报文中的目的地址来标明路由表,以决定这个报文的出接口。所以此类报文会在解析和剥离头部信息后,进入后续的处理。(剥离帧头部解析IP报文,是为了确定目的IP,以用做后续路由表查询)
对于二层接口接收的报文,NGFW需要先判断这个帧是否需要跨VLAN转发,对于同一VLAN内的报文,NGFW需要根据报文中的目的MAC地址查询MAC地址转发表,以决定这个报文的出接口。对于需要跨VLAN转发的报文,NGFW需要获取其VLAN ID,找到对应的子接口或者VLAN-IF接口。子接口和VLAN-IF接口是虚拟的三层接口。所以此时报文就会按照类似三层接口接收一样处理,NGFW根据报文中的目的地址来查找路由表,以决定这个报文的出接口。
这两类报文在提取到所需的信息后,剥离头部,进入后续的处理
在这个阶段中主要进行的特性有:
特性 | 说明 |
---|---|
MAC地址过滤 | 根据报文帧头部的源MAC和目的MAC对报文进行过滤 |
VLAN | VLAN是用户控制以太帧在局域网泛洪的一种技术 |
IP/MAC地址绑定 | 为了防止IP地址欺骗和ARP类的***,管理员可以配置IP和MAC的对应关系,此特性可以根据报文中携带的Ip和MAC信息判断报文是否合法并过滤 |
入接口带宽阈值 | 管理员可以在接口上配置接受报文的带宽阈值,如果当前流量带宽已经超过了阈值,入接口就会将超出的 报文丢弃 |
单包***防范 | 在获取报文的头部信息后,NGFW就可以根据管理员开启的单包***防范类型对报文的合法性和安全性进行检测,判断报文 是否属于***报文并进行过滤 |
查询会话表,根据查询结果对报文做不同的安全机制检测和处理。
此阶段是NGFW的核心处理环节,主要的安全功能都在这个阶段实现。NGFW根据该报文是否存在匹配的会话表项?
不存在匹配的会话表项(一些特殊的报文是不创建会话直接转发的,例如除了ping的echo和replay的icmp包)
此时报文被认为是一条流量的首包,进入首包处理流程。
无会话
进行状态检测机制检测,判断该报文是否属于正常的可以建立会话的首包。
(这个状态检测是检查,该步骤是看防火墙是否开启了状态检测,NGFW默认是开启的,当来回路径不一致的流量要通过NGFW时,需要关闭状态检测机制)
首包处理流程
- 匹配黑名单,若报文源地址命中黑名单,则此报文被丢弃
- 查询Server-map表,若命中,记录Server-map表中的信息(不做处理,但在3中路由查询使用的是Server-map表中记录的转换后的地址)
- 查看数据包有没有对应的服务器映射(即目的NAT)数据包要先将访问的目的地址转换后才能进一步查路由表,所以这也就解释了为什么服务映射阶段在查找路由表阶段前面
- 对数据包做在线用户列表检查
用户在线时会生成在线用户列表,如不发送流量不会产生会话,当流量过来时会刷新在线用户列表的超时时间,并继续后续的包转发流程生成会话表。
(1)用户访问网络资源前,首先需要经过NGFW的认证,目的是识别这个用户当前在使用哪个IP地址。
(2)对于通过认证的用户,NGFW还会检查用户的属性(用户状态、账号过期时间、IP/MAC地址绑定、是否允许多人同时使用该账号登录),只有认证和用户属性检查都通过的用-=户,该用户才能上线,称为在线用户。
(3)NGFW上的在线用户列表记录了用户和该用户当前所使用的地址的对应关系,对用户实施策略,也就是对该用户对应的IP地址实施策略。用户上线后,如果在线用户超时时间内(缺省30分钟)没有发起业务流量,则该用户对应的在线用户监控表项将被删除。当该用户下次再发起业务访问时,需要重新进行认证。 - 根据(2)的记录结果,查询报文命中哪条路由,优先查询策略路由。未命中策略路由,查询路由表,决定下一跳和出接口
- 查询是否命中安全策略。已知报文入接口源地址,从(3)判断出接口,确定区域查找安全策略
- 查询是否命中源NAT策略。若匹配到,则记录NAT转换后的源IP地址和端口信息
- 根据上述记录结果,创建会话。
后续包处理流程
转载于:https://blog.51cto.com/13351897/2320585