描述NGFW数据包转发流程Server-map

题目

描述NGFW数据包转发流程Server-map

思路

  • NGFW数据转发三阶段
    • 查询会话表前
    • 查询会话中(重要)
    • 查询会话后

题干

实战画板

NGFW数据转发三个阶段

防火墙在收到数据包到内部处理及转发时,可以分为三个阶段,分别为查询会话表前、查询会话表中、查询会话表后;

查询会话表前

主要目的是解析出报文的帧头部和IP报文头部,根据头部当中的信息进行一些基础的安全检测
接收报文 → 解析帧头部 → 剥离帧头部 → 解析IP报文头 → 白名单 → DDoS攻击防范 → IP/MAC绑定

查询会话中(重点)

主要分为有会话和没会话两种,根据查询结果对报文做不同的安全机制检测和处理,此阶段是NGFW的核心处理环节,主要的安全功能都在这个阶段实现。

没会话

状态检测(1、判断是否开启状态检测;2、判断是否首包(SYN/UDP/PING)) → 黑名单 → server-map(4种类型ASPF多通道协议生成四元组(匹配策略直接生成会话表),STUN三元组,NAT(匹配安全策略才能生成) NO-PAT,NAT server) → 在线用户表 → 目的NAT(nat-server) → 路由表/MAC表 → 认证策略 → 安全策略匹配(包过滤) → SSL加密流量检测策略 → 源NAT策略 → 连接数限制 → 创建会话

有会话

刷新在线用户表 → 流攻击防范 → 状态检测(判断是否需要刷新会话;1、用户上下线;2、应用识别(1特征字;2关键载荷;3行为模型);3、UTM检测黑名单;4配置变更)→ 否/是 → 路由表/MAC表 → 安全策略匹配(包过滤) → 黑名单 → 用户重定向

查询会话后

对流量进行相应的安全检测处理并转发;
带宽策略 → 内容安全(AV,IPS,URL) → 报文地址转换(源NAT转换) → VPN加解封装(GRE,IPSEC,SSL,L2TP) → 入接口带宽阈值 → 出接口带宽阈值 → 发送报文

补充

由于在报文处理的过程中,某些特性可能会修改报文的一些字段,因此掌握这个流程图可以帮助管理员后续的配置和维护。
比如在NAT处理中,NGFW会修改IP报文的源IP地址或者目的IP地址。而在安全策略匹配以及路由表查询中,又要根据IP地址来进行规则匹配。根据图1,服务器映射在安全策略匹配和路由表查询之前处理,源NAT策略在安全策略匹配和路由表查询之后处理。
假设一条Internet用户访问内部服务器的流量,需要经过以下两次NAT转换:

  1. 经过服务器映射处理,将其目的IP地址修改为服务器的私网IP地址。
  2. 经过源NAT策略处理,将其源IP地址修改为与服务器在同一网段的私网IP地址

查询会话表前

MAC地址过滤&解析帧头部

首先监测是否有配置MAC地址过滤(配置基于MAC地址的包过滤可以通过屏蔽主机MAC地址来防止ARP攻击,以及根据协议类型来控制报文的通过)

追问:为什么是先MAC地址过滤再解析帧头部?
MAC地址过滤的时候只是扫描出MAC地址,根据MAC地址来进行MAC地址过滤。后面的解析帧头部能完整的解析整个帧头部。

D.MAC S.MAC Type Data FCS

收接口为二层or三层

对于三层接口接收的报文

NGFW需要根据报文中的目的地址来标明路由表,以决定这个报文的出接口。所以此类报文会在解析和剥离头部信息后,进入后续的处理。(剥离帧头部解析IP报文,是为了确定目的IP,以用做后续路由表查询(路由表查询,原因之一是为了确定出接口))
三层接口报文

对于二层接口接收的报文

NGFW需要先判断这个帧是否需要跨VLAN转发,对于同一VLAN内的报文,NGFW需要根据报文中的目的MAC地址查询MAC地址转发表,以决定这个报文的出接口。
对于需要跨VLAN转发的报文,NGFW需要获取其VLAN ID,找到对应的子接口或者VLAN-IF接口(子接口和VLAN-IF接口是虚拟的三层接口)所以此时报文就会按照类似三层接口接收一样处理,NGFW根据报文中的目的地址来查找路由表,以决定这个报文的出接口。

剥离帧头部

这两类报文在提取到所需的信息后,剥离头部,进入后续的处理

解析IP报文头&IP/MAC绑定&入接口IP阈值&单包攻击防范

特性 说明
VLAN VLAN是用于控制以太网帧在局域网泛洪的一种技术。
IP/MAC地址绑定 为了防止IP地址欺骗和ARP类的攻击,管理员可以配置IP地址和MAC地址的对应关系。此特性可以根据报文中携带的IP地址和MAC地址信息判断该报文是否合法,并对报文进行过滤。
DDoS攻击防范 FW根据管理员开启的DDoS攻击防范类型,阻断攻击流量。
单包攻击防范 在获取报文的头部信息后,FW就可以根据管理员开启的单包攻击防范类型对报文的合法性和安全性进行检测,判断报文是否属于攻击报文,并对报文进行过滤。(位置设置的原因:因为很多单包攻击都是基于IP、MAC来攻击的,在此之前,防火墙已经获取到了数据包的IP、MAC信息,已经可以很有效地抵御单包攻击了)

*补充,不问不讲

单包攻击包括扫描类攻击、畸形报文类攻击和特殊报文类攻击。

扫描类攻击

主要包括IP地址扫描和端口扫描,IP地址扫描是指攻击者发送目的地址不断变化的IP报文(TCP/UDP/ICMP)来发现网络上存在的主机和网络,从而准确的发现潜在的攻击目标。端口扫描是指通过扫描TCP和UDP的端口,检测被攻击者的操作系统和潜在服务。攻击者通过扫描窥探就能大致了解目标系统提供的服务种类和潜在的安全漏洞,为进一步侵入系统做好准备。

畸形报文类攻击

通过向目标系统发送有缺陷的IP报文,使得目标系统在处理这样的IP报文时发生错误,或者造成系统崩溃,影响目标系统的正常运行。主要的畸形报文攻击有Ping of Death、Teardrop等。

特殊报文类攻击

攻击者利用一些合法的报文对网络进行侦察,这些报文都是合法的应用类型,只是正常网络很少用到。主要的特殊报文攻击有超大ICMP报文控制、Tracert和时间戳选项IP报文控制等。

查询会话表中

状态检测

进行状态检测机制检测,判断该报文是否属于正常的可以建立会话的首包。(这个状态检测是检查,该步骤是看防火墙是否开启了状态检测,NGFW默认是开启的,当来回路径不一致的流量要通过NGFW时,需要关闭状态检测机制,其次是查看数据包是不是首包,是首包,进行下一步骤,不是首包,丢掉)

追问:什么情况会导致会话来回路径不一致?
例如硬件SACG功能会导致来回路径不一致,双机热备负载分担的情况下。

对于正常首包(对于TCP包和ICMP的回显请求报文包才存在首包和非首包),NGFW将进行一系列的查询和处理,以获取这条流量的用户和应用等无法通过解析头部获取的信息。

黑名单

查看数据包的源地址是不是在黑名单中,如在黑名单中到此过程便被丢弃,不再进行后续流程。(生成黑名单的方式有很多种,形成方式:可以是手动添加的,或者是单包攻击防范中动态生成的,类型:源目IP 、用户;很多的排错中都可能涉及到黑名单问题)

server-map(重点)

用于服务器映射、负载均衡和多通道协议转发的重要表项。
如果首包匹配Server-map,FW根据Server-map对报文进行转发或地址转换。Server-map分为静态Server-map和动态Server-map:

  • 静态:服务器映射、负载均衡、NAT64;
  • 动态:NAT No-PAT、NAT Full-cone、DS-Lite(做安全检车)、ASPF/NAT ALG(不做安全检查)

查看数据包是否匹配NGFW上现有的Server-map表
简单的说Server-map表,会有两种作用出现在两种不同情况:

  1. 如果匹配的是ASPF产生的Server-map表,便直接产生会话表;
  2. 如果匹配的是nat(no-pat或者nat-server只是记录转换后的目的IP和端口信息)产生的Server-map便会对数据包做地址转换,地址转换完成后进入安全策略匹配才产生会话表。其实还有SLB、三元组NAT等也会生成Server-map表;
    注:由于Server-map中并不会记录报文的下一跳等信息,所以Server-map通常只是用来检查第一个报文。在这个报文通过检查之后,系统会生成一条会话表用于后续报文的转发。即Server-map只是用于新通道建立,通道建立后的报文还是根据会话表来转发。因此对于以上几种产生Server-map的情况最终也都还是会产生会话表项的。

目的NAT

查看数据包有没有对应的服务器映射(nat-server)数据包要先将访问的目的地址转换后才能进一步查路由表,所以这也就解释了为什么目的NAT阶段在查找路由表阶段前面。

在线用户表

对数据包做在线用户列表检查,包括用户与IP地址的对应关系,用户上线时间和在线时长等。
用户在线时会生成在线用户列表,如不发送流量不会产生会话,当流量过来时会刷新在线用户列表的超时时间,并继续后续的包转发流程生成会话表。

  1. 用户访问网络资源前,首先需要经过NGFW的认证,目的是识别这个用户当前在使用哪个IP地址。
  2. 对于通过认证的用户,NGFW还会检查用户的属性(用户状态、账号过期时间、IP/MAC地址绑定、是否允许多人同时使用该账号登录),只有认证和用户属性检查都通过的用户,该用户才能上线,称为在线用户。
  3. NGFW上的在线用户列表记录了用户和该用户当前所使用的地址的对应关系,对用户实施策略,也就是对该用户对应的IP地址实施策略。用户上线后,如果在线用户超时时间内(缺省30分钟)没有发起业务流量,则该用户对应的在线用户监控表项将被删除。当该用户下次再发起业务访问时,需要重新进行认证。

刷新在线用户表

后续报文首先会触发在线用户表的刷新,以保持有流量的用户持续在线
首包建立过程也可能会刷新在线用户列表,这种情况出现在:用户在线,在线用户列表还未超时消失,但没有传数据,突然又重新传数据,那么这个数据的第一个包被状态检测出来为首包走首包建立会话的流程,到“在线用户列表”这一阶段刷新用户列表

路由表/MAC表

  • 对于三层接口接收的报文,FW根据报文中的目的地址来查询路由表,以决定这个报文的出接口。策略路由也在查询路由这个环节,优先于路由表,如果报文匹配策略路由则根据策略路由确定出接口。
  • 对于二层接口接收的报文,FW根据报文中的目的MAC地址来查询MAC地址转发表,以决定这个报文的出接口。

认证策略

根据报文的IP地址、安全区域信息决定是否要求对该条流量进行认证,以获取用户信息。
对于需要认证的用户,设备会重定向该用户的HTTP请求,向其推送网页形式的认证页面,要求用户输入用户名和密码。

安全策略(包过滤)

用户通过认证后,设备就获取到了该条流量的用户的信息。根据管理员配置,对这条流量进行包过滤处理。

SSL加密流量检测策略

匹配SSL加密流量检测策略的加密流量将被解密,然后才能进行内容安全检测。

源NAT策略匹配

查找源NAT策略,在会话表中记录地址转换信息,在此处只是匹配了源NAT策略但是没有做源NAT转换

连接数限制&创建会话

如果此时会话数尚未达到管理员配置的连接数限制阈值,NGFW就会通过上述检测的首包建立会话。首包本身将继续进入后续的转发模块处理,而这条流量的后续报文将进入“存在匹配的会话表项”这个流程处理。

基于流的攻击防范

然后通过基于流的攻击防范(先开启流量统计功能,再判断是否超过预先设定的阈值)
基于流的攻击防范,例如DDoS攻击,来的第一个包(首包)看不出有什么问题,建立了会话,结果后续数据流变成1s来几千个包,便会定义为DDoS攻击,然后给予防范动作。因此也可以理解到为什么首包建立会话的过程中没有“基于流的攻击防范”这个过程。

状态检测&会话刷新

状态检测后可以进入后续的转发模块处理
由于NGFW认为“首包安全并不代表后续报文一定安全”,所以NGFW实现的是对一条流量持续不断的安全检测。
这第二个状态检测是在这个持续检测中,应用信息识别、用户上下线、内容安全功能检测出流量携带入侵或病毒等安全风险(首包没有病毒,后续报文突然包含病毒会触发该项)、管理员配置变更(例如修改安全策略中的源目的IP等)多种情况都有可能导致会话表项刷新。
所以一但会话表项被刷新过,NGFW就会对该条流量的报文重新进行一些检查和处理。
但是会话刷新导致对报文重新检测的过程,只进行了少量需要重新确认报文处理方式的特性,其流程仍然比首包处理流程简单得多。
加上会话刷新的情况并非经常出现,所以这种机制在保证了对流量的持续保护的同时,也不会导致处理效率的明显降低。

用户重定向

有会话的用户重定向:重新对用户做认证

在这个阶段中主要进行的特性有

特性 说明
基于流的攻击防范 有一些攻击的特征需要综合该条流量的多个报文才能判断,所以在后续报文处理中,可以进行基于流的攻击防范
服务器负载均衡 NAT策略的一种功能。在服务器负载均衡中,同一目的地址的报文将根据带宽情况被分配到不同的物理服务器上处理,所以在后续报文处理中,判断转发出接口还需要考虑服务器负载均衡的配置。

最后转发阶段

这个阶段的主要的是对通过安全检测后的流量进行正确的转发;
带宽策略:判断当前流量的带宽占用情况,以判断是否需要丢弃这个报文以降低流量速率。

内容安全(UTM过滤):根据安全策略中引用的内容安全配置文件,NGFW会对报文进行内容安全过滤。所以针对UTM配置的安全包过滤策略一定是permit的才会产生会话进而到此处做UTM过滤处理
UTM包含各模块的处理流程是怎样?
应用行为控制、入侵防御、反病毒、URL过滤、文件过滤、内容过滤、邮件过滤在NGFW中是并行处理的。
内容安全处理流程

  • 报文地址转换(源NAT策略):对报文的源IP地址进行源NAT转换

  • VPN加解封装:判断该报文是否需要进入VPN隧道,进入哪条隧道,如果来的是VPN报文,VPN封装的是有外层IP报文头的,然后进行解封装,将内层数据包要重走一遍“第一、二、三阶段”,对通过的VPN报文最后进行必要的加密,封装等操作传输。

  • 入接口带宽阈值,出接口带宽阈值:根据之前的MAC地址转发表或者路由表查询的结果,NGFW已经得知该报文的出接口。
    根据入、出接口配置的带宽阈值限制,NGFW会再次控制流量的速率,如果当前流量带宽已经超过了阈值,接口就会将超出的报文进行丢弃。

  • 发送报文:将报文通过出接口发送出去。

在这个阶段中主要进行的特性有

特性 说明
带宽策略 通过带宽策略可以分配网络流量的带宽占用,避免网络拥塞。
内容安全 此时设备将持续不断地检测报文中是否携带安全风险,并进行实时过滤。
报文地址转换 根据会话表中的地址转换信息修改报文中的源地址或目的地址。这里有一点需要说明,虽然在查Server-map、源NAT策略时并没有真正转换报文中的地址,但是FW已经获取到转换后的地址,在后续的各个模块中已经可以根据需要使用转换后的地址。
VPN 通过VPN技术可以实现私网跨越公网的安全互联。针对不同的应用场景有不同的VPN技术支持,例如L2TP、IPSec等。
入接口带宽阈值 管理员可以在接口上配置接收报文的带宽阈值。如果当前流量带宽已经超过了阈值,入接口就会将超出的报文进行丢弃。
出接口带宽阈值 管理员可以在接口上配置发送报文的带宽阈值。如果当前流量带宽已经超过了阈值,出接口就会将超出的报文进行丢弃。

会话表

记录TCP、UDP、ICMP等协议连接状态的表项,是FW转发报文的重要依据。

作用

FW采用了基于“状态”的报文控制机制:只对首包或者少量报文进行检测就确定一条连接的状态,大量报文直接根据所属连接的状态进行控制。这种状态检测机制迅速提高了FW的检测和转发效率。
而会话表正是为了记录连接的状态而存在的。设备在转发TCP、UDP和ICMP报文时都需要查询会话表,来判断该报文所属的连接以及相应的处理措施。
UDP、TCP、ICMP ping报文、ICMPv6 ping报文、GRE、AH、ESP、IPIP、OSPF、RIP、BFD 等IP类协议报文会创建会话,ICMP差错报文、组播报文、广播报文、分片后续片报文、非IP类协议报文不建立会话。

会话老化

对于一个已经建立的会话表表项,只有当它不断被报文匹配才有存在的必要。如果长时间没有报文匹配,则说明可能通信双方已经断开了连接,不再需要该条会话表项了。
此时,为了节约系统资源,系统会在一条表项连续未被匹配一段时间后,将其删除,即会话表项已经老化。

如果在会话表项老化之后,又有和这条表项相同的五元组的报文通过,则系统会重新根据安全策略决定是否为其建立会话表项。如果不能建立会话表项,则这个报文是不能被转发的。

所以会话表老化时间的长短对系统转发有以下影响:

  • 如果会话表老化时间过长,会导致系统中可能存在很多已经断开的连接的会话表,占用系统资源,并且有可能导致新的会话表项不能正常建立,影响其他业务的转发。
  • 如果会话表老化时间过短,会导致一些可能需要长时间才收发一次报文的连接被系统强行中断,影响这种业务的转发。
    在某些场景下,当网络中发生某些攻击时,FW上的并发会话数快速增长,可能导致正常业务无法创建新的会话。FW提供会话快速老化功能,并发会话数或内存使用率达到一定条件后,FW会加速会话老化进程,提前老化会话,快速降低会话表使用率。

清除会话表reset firewall session table [session-id]

存在匹配的会话表项

此时,这条流量的首包已经通过了一系列路由查询和安全检测,并最终建立了会话,那么匹配了会话表项的后续报文就无需要重复一遍首包处理流程,这种机制可以提高NGFW的检测效率。

追问

policy name有几种情况?

三种,有名字、—,默认策略default

应用怎么识别?

开启SA功能

server-map老化时间?

没流量时才会老化,有流量过来直接刷新表项了

状态检测怎么理解?哪些报文是首包?

开启状态检测首包创建会话,syn,icmp request,udp

会话表和servermap表的关系?

先查server-map,再查会话表

没有路由会不会命中会话表?

不会命中

路由下一跳写错了在会话表中是怎么呈现的?

显示错误的下一跳MAC地址

已经生成的会话,管理员改了策略变成deny会怎么样?

会话消失

tcp的老化时间是多少?

1200秒

防火墙产生的会话表是什么样的?

1
2
3
4
5
  telnet  VPN:public --> public  ID: a48f3648905d02c0553591da1
  Zone: trust--> local  TTL: 00:20:00  Left: 00:20:00
  Output-interface: InLoopBack0  NextHop: 127.0.0.1  MAC: 00-00-00-00-00-00
  <--packets:89 bytes:5174   -->packets:98 bytes:4014
  10.18.196.44:2807-->10.18.196.253:23

静态路由下一跳配置错误,是否可以完成转发?

是否有默认路由,如果没有不能完成转发。

如何依据session table排错定位?

看是否来回路径不一致,看显示来回包的地方,是否没有回包数据。

什么情况下会话表里的MAC地址为全0?

  1. 当目的IP为防火墙的接口地址时(表示流量是抵达防火墙本身的),下一跳IP为127.0.0.1,MAC为全0
  2. 转发到虚拟墙里的报文,下一跳MAC为全0
  3. ARP请求失败时,下一跳IP的MAC为全0

为什么单包攻击在第一阶段最后?

单包攻击一般是基于数据链路层、IP层,必须解析帧头部和IP后才能防范,在第一阶段能及时处理单包攻击较为合理,如果放在创建会话处影响防火墙性能

有会话阶段的状态检测是什么意思?

检测是否需要刷新会话;用户上下线、应用识别(1特征字;2关键载荷;3行为模型)

会话表中的policyName为—代表什么意思?

没有匹配安全策略的流量,到达设备本身的报文会跳过安全策略检查

以下几种情况会遇到:

  • 报文命中了认证动作为Portal认证的认证策略;
  • 用户向Web服务器发起HTTP/HTTPS请求时,syn首包不受安全策略控制;
  • 接口开启了网管功能;
  • 双机热备,主墙备份到备墙,备墙会话表显示—;

什么情况下不受安全策略控制?

  1. ASPF的情况
  2. 开启了接口网管功能的情况

会话表老化方式

  1. 超过老化时间后的会话老化
  2. 内容安全检测出威胁后的会话老化
  3. TCP会话收到FIN/RST报文后的会话老化

开启了状态检测,只有首包才能创建会话吗?那ESP报文能不能创建会话?.

可以,基于ip的包都可以创建,比如OSPF

Server-Map的本质是什么?

Server-Map其实就是一张特别通行证,是ASPF的核心表项

ASPF的本质又是什么?

ASPF本质就是识别应用层(报文载荷)中关联应用的地址和端口,并通过Server-map表项为转发建立临时会话。 

ASPF产生几元组的server-map表?

ASPF多通道协议生成四元组(源目IP、协议、端口号),STUN三元组(目的IP、端口、协议)

黑名单有什么类型?

两种,手动创建和自动创建(三种类型,源IP、目的IP、用户类型)

应用是怎么识别的?

特征字、关键载荷、行为模型

会话表构成?

建立会话第一步进行状态检测检测的是什么?

检查防火墙是否开始状态检测,判断该包是否是首包。分TCP,UDP,ICMP

已经有会话了是否还需要进行状态检测?如果需要检测的是什么?

需要,首包检测没问题不代表后续报文也是正常的。应用信息识别、用户上下线、内容安全功能检测出流量携带入侵或病毒等安全风险(首包没有病毒,后续报文突然包含病毒会触发该项)、管理员配置变更(例如修改安全策略中的源目的IP等)

为什么认证策略是在路由表下方?

认证策略前需通过路由表确定源目区域(匹配认证策略需要通过匹配4元组作为依据,4元组为源目IP,源目区域)

Syn攻击是在上面步骤中检查出来的?什么是流攻击?

Syn是flood攻击,是在有会话时进行流攻击扫描检查。流攻击就是使用大量正常的报文来进行攻击,主要造成拒绝服务的攻击效果。

为什么匹配nat那里不直接进行转换?

直接转换如果遇到数据包超过连接数限制,无法创建会话表,会造成资源浪费;

会话老化时间是否会变化?

会,可以手动更改。

查询会话时间的命令?

dis firewall session aging-time

Server-map表和后面的服务器映射表是否作用相同?有什么区别?

服务器映射,是基于命令对服务器映射关系的体现,并且基于服务器映射生成的Server-map表。
server-map,其中包含服务器映射所产生的表项,用于匹配访问对应服务的流量创建后续会话而使用。ASPF、NAT的NO-PAT,SLB都会产生server-map表项。

3次握手老化时间?

Syn 5秒,syn+ack 10秒。

为什么有了源NAT处理,在第二部分还需要进行源NAT匹配?

第二阶段会生成会话表,会话表中需要有相应的转换表项。

认证策略匹配条件?

源目安全区域,源目IP地址

为什么路由表查询是在安全策略匹配包过滤过程之前?

因为域间包过滤策略是匹配有源安全区域和目的安全区域的,要知道来的数据包源IP到目的IP是从哪个区域的只能通过查询路由表来确定的,所以检查路由表在安全策略匹配包过滤过程前面。

在哪些情况下会话表才会被刷新?

应用识别、内容安全功能检测查询到后续包有带病毒、配置变更(策略、路由)、用户上下线会被刷新

NGFW状态防火墙体现在两优点

  1. 安全性高;例如:对于出流量只需放行出方向策略,同一数据流的回程包直接匹配会话返回。
  2. 转发速度快;只有首包要经历创建会话过程,和首包同数据流同方向的包只需查找会话走有会话的流程,后续转发不需要再走建立会话的流程,提升转发速度。

描述NGFW数据包转发流程Server-map
https://www.xuchang.dev/post/2fd2722
作者
许畅
发布于
2024年5月1日
许可协议