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

  1. 查询会话前的处理过程:基础处理
  2. 查询会话中的处理过程:转发处理,关键是会话建立
  3. 查询会话后的处理过程:安全业务处理及报文发送

了解转发流程之前,先给报文分个类


  1. 协议报文:使防火墙正常运行于网络中,或用于双机热备等功能的协议报文,如OSPF,HRP,ICMP等报文
  2. 穿过防火墙的业务报文:用户经过防火墙访问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时,需要关闭状态检测机制)


首包处理流程

  1. 匹配黑名单,若报文源地址命中黑名单,则此报文被丢弃
  2. 查询Server-map表,若命中,记录Server-map表中的信息(不做处理,但在3中路由查询使用的是Server-map表中记录的转换后的地址)
  3. 查看数据包有没有对应的服务器映射(即目的NAT)数据包要先将访问的目的地址转换后才能进一步查路由表,所以这也就解释了为什么服务映射阶段在查找路由表阶段前面
  4. 对数据包做在线用户列表检查
    用户在线时会生成在线用户列表,如不发送流量不会产生会话,当流量过来时会刷新在线用户列表的超时时间,并继续后续的包转发流程生成会话表。
    (1)用户访问网络资源前,首先需要经过NGFW的认证,目的是识别这个用户当前在使用哪个IP地址。
    (2)对于通过认证的用户,NGFW还会检查用户的属性(用户状态、账号过期时间、IP/MAC地址绑定、是否允许多人同时使用该账号登录),只有认证和用户属性检查都通过的用-=户,该用户才能上线,称为在线用户。
    (3)NGFW上的在线用户列表记录了用户和该用户当前所使用的地址的对应关系,对用户实施策略,也就是对该用户对应的IP地址实施策略。用户上线后,如果在线用户超时时间内(缺省30分钟)没有发起业务流量,则该用户对应的在线用户监控表项将被删除。当该用户下次再发起业务访问时,需要重新进行认证。
  5. 根据(2)的记录结果,查询报文命中哪条路由,优先查询策略路由。未命中策略路由,查询路由表,决定下一跳和出接口
  6. 查询是否命中安全策略。已知报文入接口源地址,从(3)判断出接口,确定区域查找安全策略
  7. 查询是否命中源NAT策略。若匹配到,则记录NAT转换后的源IP地址和端口信息
  8. 根据上述记录结果,创建会话。


后续包处理流程

转载于:https://blog.51cto.com/13351897/2320585

NGFW中数据包转发流程相关推荐

  1. 5G网络学习(四)——5G网络中数据包转发模型(未完待续)

    3GPP TS 29.244介绍了控制层面和用户层面节点之间的接口 主要介绍了数据包转发模型及其内部一系列操作. 目录 1.定义缩写 2数据包转发模型 2.1数据包检测规则(PDR) 2.2使用报告的 ...

  2. Kubernetes 中数据包的生命周期 -- 第 3 部分

    本文翻译自:Life of a Packet in Kubernetes - Part 3 [1] 作者:Dinesh Kumar Ramasamy 本文在原文的基础上做了适当的修改,如有疑问请查阅原 ...

  3. ip数据包转发和iptables

    Linux内核数据包转发功能和iptables的关系 内核数据包转发(路由)功能是内核将从A网卡接收到的目的地址不是自身地址的ip数据包通过B网卡发送出去的功能(即路由器的功能). 使用以下命令即可开 ...

  4. 路由个数据包转发简介

    第一章: 网络的核心是路由器, 路由器的作用就是将各个网络彼此连接起来.因此,路由器需要负责不同网络之间的数据包传送.网际通信的效率取决于路由器的性能,即取决于路由器是否能以最有效的方式转发数据包. ...

  5. linux net.ipv4.ip_forward 数据包转发

    出于安全考虑,Linux系统默认是禁止数据包转发的.所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将数据包发往本机另一块网卡,该网卡根据路由表继续发送数据包.这通常 ...

  6. echo “1“ > /proc/sys/net/ipv4/ip_forward(数据包转发)

            出于安全考虑,Linux系统默认是禁止数据包转发的.所谓转发即当主机拥有多于一块的网卡时,其中一块收到数据包,根据数据包的目的ip地址将包发往本机另一网卡,该网卡根据路由表继续发送数据 ...

  7. Linux内核网络数据包处理流程

    Linux内核网络数据包处理流程 from kernel-4.9: 0. Linux内核网络数据包处理流程 - 网络硬件 网卡工作在物理层和数据链路层,主要由PHY/MAC芯片.Tx/Rx FIFO. ...

  8. 【5G核心网】Packet Forwarding Model 数据包转发模型

    1. Packet Forwarding Model CP 通过建立,修改,删除 PFCP 会话上下文,以及通过为每个 PFCP 会话赏析哪问提供 PDR FAR QER URR BAR,来控制 UP ...

  9. 网络数据包转发过程详解

    本片文章详解了两台终端跨网段通信时数据包转发的过程,包含第一次转发数据包ARP工作的过程以及详细配置,下面是本次实验的拓扑图,在华为ENSP模拟器上实现. 简单介绍一下实验环境,在本次实验中包含两个区 ...

最新文章

  1. UPDATE 时主键冲突引发的思考
  2. java服务器http post_使用Java程序通过http post访问ABAP Netweaver服务器
  3. 欧拉函数的一道练习题(附加容斥做法)
  4. 怎样避免每次都解释大量指令?
  5. Sqlite error- INSERT failed: datatype mismatch
  6. centos常用命令_二、Docker镜像是什么?Docker常用命令
  7. 在导出php,PDF导出在php
  8. 【空间分析】7 叠置分析和缓冲区分析
  9. 信息安全之程序实现简单替换加密,并用字母频率统计进行破解
  10. KNN算法 使用KNN对iris数据集分类
  11. excel文件如何撤销工作表保护
  12. 在线word预览方案
  13. sis最新地址获取方法_SIS系统在制药行业内的运用—奥格经典案例
  14. Carsim2016及2019 轨迹跟踪过程中跑直线的解决方案
  15. day23面向对象第一篇
  16. 【三维目标检测】3DSSD(二)
  17. 计算机网络水晶头博客,计算机网络 验一 双绞线水晶头制作.docx
  18. 认知决定你的格局和财富差距
  19. Python爬虫实战 - 电影榜单Top250
  20. joda-time使用方法

热门文章

  1. 付费?不存在的,20 行代码将电子书转换为有声小说
  2. java五子棋的重要算法讲解_[Java五子棋小游戏-Ai算法精讲以及实现]-02--高级算法初步...
  3. 谷歌浏览器查看版本信息及个人资料路径的命令方法
  4. 超级详细的CentOS8.2搭建个人网站(WordPress)
  5. Android接入微信分享视频和图片
  6. ESXI安装OpenWRT LEDE软路由部署指南(附镜像下载)
  7. 链接的图片转base64,字符串转流pdf预览-zip下载
  8. D. Pythagorean Triples (math、暴力)
  9. win10安装账户卡住_简单几步解决win10安装卡死在用户名的问题
  10. VPLS原理+两个实验