数据过滤方法及装置与流程

文档序号:18933267发布日期:2019-10-22 20:57阅读:132来源:国知局
数据过滤方法及装置与流程

本发明涉及工业控制防火墙领域,尤其涉及一种数据过滤方法及装置。



背景技术:

防火墙是一种增强两个或者多个网络之间边界的系统或者系统组合,是一个网络与其它网络之间的受控访问点。可以分为硬件防火墙和软件防火墙,其能够对流经它的所有网络通信信息进行扫描,并过滤掉一些攻击性操作,以免目标网络遭受破坏。防火墙还可以关闭不常使用的端口,而且还可以禁止特定端口的通信以及禁止来自某些特殊站点的访问,从而防止来自不明入侵者的所有通信。

工业控制场景下,不同的工控设备通过工业控制协议进行通信。工业控制协议在TCP/IP基础上进行数据传输,工业防火墙针对工业控制协议进行分析,阻止有威胁的数据传输。传统工业控制防火墙的做法是以数据包为单位,分析工业控制协议通信过程中的数据包。如果检测到有威胁的数据包,则直接丢弃该数据包。

但是发明人在实现本发明的过程中发现,由于TCP协议的连续性(每一个数据包都包含有连续的序列号),丢弃数据包会导致此连接断开(因为,丢弃数据包之后接收数据包的一端,例如服务器端,将接收不到被丢弃的数据包。根据TCP协议的超时机制,当服务器端判断未接收到被丢弃的数据包的时间超过预定时长后,将断开与客户端之间的TCP连接),这样做破坏了数据流的连续性。由于工业控制场景的特殊性,对数据的延时和连续性要求极高,如果由于丢弃中间的某些威胁数据包而影响整个业务的连续性,将会对工业生产造成巨大的影响。



技术实现要素:

本发明实施例提供一种数据过滤方法及装置,用于至少解决上述技术问题之一。

第一方面,本发明实施例提供一种数据过滤方法,用于过滤第一终端发送至第二终端的数据包中的威胁数据包,所述方法包括:

将接收自所述第一终端的TCP数据包转化为数据流;

按照预设规则对所述数据流进行分析以过滤所述数据流中所包含的威胁数据;

将所述数据流中除了所述威胁数据之外的数据打包成连续的TCP数据包;

依次发送所述连续的TCP数据包至所述第二终端。

第二方面,本发明实施例还提供一种数据过滤装置,用于过滤第一终端发送至第二终端的数据包中的威胁数据包,所述装置包括:

数据流转化模块,用于将接收自所述第一终端的TCP数据包转化为数据流;

数据过滤模块,用于按照预设规则对所述数据流进行分析以过滤所述数据流中所包含的威胁数据;

数据打包模块,用于将所述数据流中除了所述威胁数据之外的数据打包成连续的TCP数据包;

数据包发送模块,用于依次发送所述连续的TCP数据包至所述第二终端。

第三方面,本发明实施例提供一种非易失性计算机可读存储介质,所述存储介质中存储有一个或多个包括执行指令的程序,所述执行指令能够被电子设备(包括但不限于计算机,服务器,或者网络设备等)读取并执行,以用于执行本发明上述任一项数据过滤方法。

第四方面,提供一种电子设备,其包括:至少一个处理器,以及与所述至少一个处理器通信连接的存储器,其中,所述存储器存储有可被所述至少一个处理器执行的指令,所述指令被所述至少一个处理器执行,以使所述至少一个处理器能够执行本发明上述任一项数据过滤方法。

第五方面,本发明实施例还提供一种计算机程序产品,所述计算机程序产品包括存储在非易失性计算机可读存储介质上的计算程序,所述计算机程序包括程序指令,当所述程序指令被计算机执行时,使所述计算机执行上述任一项数据过滤方法。

本发明实施例的数据过滤方法及装置通过将第一终端发送至第二终端的TCP数据包转化为数据流后再进行威胁数据的识别与过滤,并将剩下的安全数据再转化为TCP包后发送至第二终端,从而在实现对威胁数据的过滤的情况下还保证了发送至第二终端的TCP数据包的连续性,避免了连接的中断,保证了工业控制的稳定性与可靠性。

附图说明

为了更清楚地说明本发明实施例的技术方案,下面将对实施例描述中所需要使用的附图作一简单地介绍,显而易见地,下面描述中的附图是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。

图1为本发明的数据过滤方法的一实施例的流程图;

图2为图1中步骤S11的一实施方式的流程图;

图3为本发明的数据过滤装置的一实施例的结构框图;

图4为本发明的数据过滤装置中的数据转换模块的一实施例的结构框图;

图5为本发明的电子设备的一实施例的结构示意图。

具体实施方式

为使本发明实施例的目的、技术方案和优点更加清楚,下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。

需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

本发明可以在由计算机执行的计算机可执行指令的一般上下文中描述,例如程序模块。一般地,程序模块包括执行特定任务或实现特定抽象数据类型的例程、程序、对象、元件、数据结构等等。也可以在分布式计算环境中实践本发明,在这些分布式计算环境中,由通过通信网络而被连接的远程处理设备来执行任务。在分布式计算环境中,程序模块可以位于包括存储设备在内的本地和远程计算机存储介质中。

在本发明中,“模块”、“装置”、“系统”等等指应用于计算机的相关实体,如硬件、硬件和软件的组合、软件或执行中的软件等。详细地说,例如,元件可以、但不限于是运行于处理器的过程、处理器、对象、可执行元件、执行线程、程序和/或计算机。还有,运行于服务器上的应用程序或脚本程序、服务器都可以是元件。一个或多个元件可在执行的过程和/或线程中,并且元件可以在一台计算机上本地化和/或分布在两台或多台计算机之间,并可以由各种计算机可读介质运行。元件还可以根据具有一个或多个数据包的信号,例如,来自一个与本地系统、分布式系统中另一元件交互的,和/或在因特网的网络通过信号与其它系统交互的数据的信号通过本地和/或远程过程来进行通信。

最后,还需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”,不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括……”限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。

如图1所示,本发明的一实施例的数据过滤方法,可以应用于工业控制防火墙来实现客户端与服务器端之间传输数据的过滤,将传输数据中所包含的威胁数据滤出,保证工控系统的安全性。工业控制防火墙接收数据包,接着对数据包进行协议检测,调用协议识别进程进行协议辨别,对具体的协议根据不同类型调用不同解码模块,深度检测数据流的内容,然后对数据流进行过滤。工业控制防火墙将根据预定义的规则(例如,白名单)对数据包进行比较,比较参照粗细粒度和算法对过滤内容进行处理(阻止或者放行)。

如图1所示,本发明实施例的数据过滤方法,用于过滤第一终端发送至第二终端的数据包中的威胁数据包,所述方法包括:

S11、将接收自所述第一终端的TCP数据包转化为数据流;

S12、按照预设规则对所述数据流进行分析以过滤所述数据流中所包含的威胁数据;

S13、将所述数据流中除了所述威胁数据之外的数据打包成连续的TCP数据包;

S14、依次发送所述连续的TCP数据包至所述第二终端。

本发明实施例的数据过滤方法通过将第一终端发送至第二终端的TCP数据包转化为数据流后再进行威胁数据的识别与过滤,并将剩下的安全数据再转化为TCP包后发送至第二终端,从而在实现对威胁数据的过滤的情况下还保证了发送至第二终端的TCP数据包的连续性,避免了连接的中断,保证了工业控制的稳定性与可靠性。需要说明的是,本发明实施例中第一终端可以为客户端或者服务器端,第二终端可以为服务器端或者客户端。即,本发明实施例的方法可以应用于过滤客户端之间、客户端与服务器之间、服务器与客户端之间以及服务器与服务器之间所传输的数据包。

步骤S11中的TCP数据包的数量至少为一个。上述实施例中步骤S12按照预设规则对所述数据流进行分析以过滤所述数据流中所包含的威胁数据中的预设规则可以是白名单。通过比较数据流与白名单来确定数据流中是否存在威胁数据。当确定数据流中的某一段或者多个段数据为威胁数据时将确定的威胁数据从数据流中删除。步骤S13中将所述数据流中除了所述威胁数据之外的数据打包成连续的TCP数据包为:参照TCP协议栈在linux内核中的实现方式将删除了威胁数据之后的新的数据流打包为新的TCP数据包,从而得到连续的多个TCP数据包。

为使得本发明实施例的数据过滤方法更加清晰,我们以客户端向服务器端发送序列号为1-5的五个TCP数据包为例。依据本发明实施例的方法首先将这五个TCP数据包转换为连续的数据流,然后根据预设规则对数据流进行分析从而将数据流中可能存在的威胁数据删除。如果确定数据流中的一段数据为威胁数据,则将这段威胁数据删除并生成新的数据流并输出。然后参照TCP协议栈在linux内核中的实现方式将新的数据流打包为多个新的TCP数据包。如果确定的威胁数据对应于原来五个TCP数据包中的一个,例如序列号为4的TCP数据包,则生成的新的TCP数据包的序列号分别为1-4(即,将对应于原来序列号为5的TCP数据包的数据转化成了新的序列号为4的TCP数据包),可见是保证了发送至服务器端的TCP包的连续性的。

在一些实施例中,步骤S11中接收自所述第一终端的TCP数据包为针对于至少一种业务的多个数据包。本实施例的数据过滤方法能够更加彻底的识别出威胁数据,进而提升工控系统的安全级别。因为发明人在实践中发现威胁数据不只是存在于单个的TCP数据包中,还有可能隐藏在针对于同一个业务的连续的多个TCP数据包中。如果逐个判断每一个TCP数据包是否为威胁数据的话无法识别这类威胁数据,而将多个数据包转化为连续的数据流才可以有效的识别出这类隐藏的威胁数据。因此,本实施例保证了对此类威胁数据的识别,提升了整个工业控制系统的安全级别。

当TCP数据包针对于一种业务时,可以根据数据包所对应于这种业务的基本业务功能将多个数据包至少分为一组,并相应的转化为至少一条数据流。每一组TCP数据包针对于该业务的一个基本业务功能。例如,OPC协议查询数据的业务,客户端给服务端发送连接数据,并在此连接中确定查询数据开放的端口;此为一条数据流,客户端根据开发的端口,向服务器查询工业控制数据,此为另一条数据流。并且相应的生成两条数据流进行威胁数据的过滤。

当TCP数据包针对于多种业务时,可以在每一种业务的数据包进行分组并转化为针对不同业务的至少一条数据流。例如,TCP数据包针对于两种业务,则针对第一种业务的数据包按照对应于第一种业务的基本业务功能将多个数据包至少分为一组,并相应的转化为至少一条数据流;再针对第二种业务的数据包按照对应于第而种业务的基本业务功能将多个数据包至少分为一组,并相应的转化为至少一条数据流。

本发明实施例的数据过滤方法再并行的处理上述实施例确定的多条数据流,这样提高了对第一客户端与第二客户端之间通信数据的处理效率。

如图2所示在一些实施例中,步骤S11将接收自所述第一终端的TCP数据包转化为数据流包括:

S21、依次解析所述多个数据包中的每一个数据包的包头以确定所述每一个数据包的数据起始位;

S22、根据确定的所述每一个数据包的数据起始位获取每一个数据包所包含的数据以生成数据流。

由TCP数据包的格式可知,TCP数据包包括包头和数据两部分。其中包头部分记载有本TCP数据包的包头长度。因此,本实施例中通过步骤S21解析数据包的包头可以确定出数据部分在整个TCP数据包中的数据起始位,从而可以准确的获取TCP数据包的数据部分。本实施例中的步骤S21对接收到的多个TCP数据包,分别依次解析其包头以确定每一个TCP数据包的数据起始位。然后在步骤S22中再根据已经确定的数据起始位分别获取相应的TCP数据包的数据部分,并将获取的多个数据部分转化为数据流。

在一些实施例中,步骤S11将接收自所述第一终端的TCP数据包转化为数据流还包括:根据TCP数据包的包头信息确定属于一个数据流的多个TCP数据包。本实施例中可以根据TCP数据包的包头信息中的五元组:源IP地址,源端口,目的IP地址,目的端口和传输层协议来确定TCP数据包是否属于一个数据流。本实施例中将五元组相互一致的TCP数据包归类为用于生成一条数据流的数据包。通过本实施例的方法避免了将属于其它数据流的TCP数据包分类到当前的数据流中,防止了属于不同数据流的TCP数据包之间的相互窜扰。

在一些实施例中,在依次发送所述连续的TCP数据包至所述服务器端之前还包括:根据打包得到的TCP数据包的大小更新所述TCP数据包的发送滑动窗口大小。

滑动窗口的大小表示服务器端在接收自客户端发送的TCP数据的过程中向客户端反馈ack之前需要接收到的字节数。在本发明的实施例中,在建立客户端与服务器端之间的TCP连接时已经根据网络拥塞状况以及资源的可用性同步了滑动窗口的大小。但是由于本实施例中由于将发送的TCP数据包存在威胁数据的数据包删除了,所以需要重新更新滑动窗口的大小。以避免服务器端在预设时间之间内不能接收到最初建立TCP连接时同步的窗口大小所需要的字节数而判定当前TCP连接出错,导致当前TCP连接的断开。因此,本实施例通过根据过滤后得到的新的TCP数据包的大小来更新滑动窗口的方式保证了TCP传输的可靠性和稳定性,提升了工业控制系统的安全级别。

需要说明的是,对于前述的各方法实施例,为了简单描述,故将其都表述为一系列的动作合并,但是本领域技术人员应该知悉,本发明并不受所描述的动作顺序的限制,因为依据本发明,某些步骤可以采用其他顺序或者同时进行。其次,本领域技术人员也应该知悉,说明书中所描述的实施例均属于优选实施例,所涉及的动作和模块并不一定是本发明所必须的。

在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其他实施例的相关描述。

如图3所示为本申请一实施例提供的一种数据过滤装置300,用于过滤第一终端发送至第二终端的数据包中的威胁数据包,所述装置包括:

数据流转化模块310,用于将接收自所述第一终端的TCP数据包转化为数据流;

数据过滤模块320,用于按照预设规则对所述数据流进行分析以过滤所述数据流中所包含的威胁数据;

数据打包模块330,用于将所述数据流中除了所述威胁数据之外的数据打包成连续的TCP数据包;

数据包发送模块340,用于依次发送所述连续的TCP数据包至所述第二终端。

本发明实施例的数据过滤装置通过将第一终端发送至第二终端的TCP数据包转化为数据流后再进行威胁数据的识别与过滤,并将剩下的安全数据再转化为TCP包后发送至第二终端,从而在实现对威胁数据的过滤的情况下还保证了发送至第二终端的TCP数据包的连续性,避免了连接的中断,保证了工业控制的稳定性与可靠性。需要说明的是,本发明实施例中第一终端可以为客户端或者服务器端,第二终端可以为服务器端或者客户端。即,本发明实施例的装置可以应用于过滤客户端之间、客户端与服务器之间、服务器与客户端之间以及服务器与服务器之间所传输的数据包。

在一些实施例中,所述接收自所述客户端的TCP数据包为针对于至少一种业务的多个数据包。

本实施例的数据过滤方法能够更加彻底的识别出威胁数据,进而提升工控系统的安全级别。因为发明人在实践中发现威胁数据不只是存在于单个的TCP数据包中,还有可能隐藏在针对于同一个业务的连续的多个TCP数据包中。如果逐个判断每一个TCP数据包是否为威胁数据的话无法识别这类威胁数据,而将多个数据包转化为连续的数据流才可以有效的识别出这类隐藏的威胁数据。因此,本实施例保证了对此类威胁数据的识别,提升了整个工业控制系统的安全级别。如图4所示,在一些实施例中,所述数据流转化模块310包括:

数据起始位确定单元311,用于依次解析所述多个数据包中的每一个数据包的包头以确定所述每一个数据包的数据起始位;

数据流获取单元312,用于根据确定的所述每一个数据包的数据起始位获取每一个数据包所包含的数据以生成数据流。

由TCP数据包的格式可知,TCP数据包包括包头和数据两部分。其中包头部分记载有本TCP数据包的包头长度。因此,本实施例中通过步骤S21解析数据包的包头可以确定出数据部分在整个TCP数据包中的数据起始位,从而可以准确的获取TCP数据包的数据部分。本实施例中的数据起始位确定单元311对接收到的多个TCP数据包,分别依次解析其包头以确定每一个TCP数据包的数据起始位。然后在数据流获取单元312中再根据已经确定的数据起始位分别获取相应的TCP数据包的数据部分,并将获取的多个数据部分转化为数据流。

在一些实施例中,本发明的数据过滤装置300还包括:

滑动窗口更新模块,用于在依次发送所述连续的TCP数据包至所述第二终端之前,根据打包得到的TCP数据包的大小更新所述TCP数据包的发送滑动窗口大小。

滑动窗口的大小表示第二终端在接收自第一终端发送的TCP数据的过程中向第一终端反馈ack之前需要接收到的字节数。在本发明的实施例中,在建立第一终端与第二终端之间的TCP连接时已经根据网络拥塞状况以及资源的可用性同步了滑动窗口的大小。但是由于本实施例中由于将发送的TCP数据包存在威胁数据的数据包删除了,所以需要重新更新滑动窗口的大小。以避免第二终端在预设时间之间内不能接受到最初建立TCP连接时同步的窗口大小所需要的字节数而判定当前TCP连接出错,导致当前TCP连接的断开。因此,本实施例通过根据过滤后得到的新的TCP数据包的大小来更新滑动窗口的方式保证了TCP传输的可靠性和稳定性,提升了工业控制系统的安全级别。

上述本发明实施例的数据过滤装置可用于执行本发明实施例的数据过滤方法,并相应的达到上述本发明实施例的数据过滤方法所达到的技术效果,这里不再赘述。

本发明实施例中可以通过硬件处理器(hardware processor)来实现相关功能模块。

另一方面,本发明实施例提供一种非易失性计算机可读存储介质,所述存储介质中存储有一个或多个包括执行指令的程序,所述执行指令能够被电子设备(包括但不限于计算机,服务器,或者网络设备等)读取并执行,以用于执行上述方法实施例中的相关步骤,例如:将接收自第一终端的TCP数据包转化为数据流;按照预设规则对所述数据流进行分析以过滤所述数据流中所包含的威胁数据;将所述数据流中除了所述威胁数据之外的数据打包成连续的TCP数据包;依次发送所述连续的TCP数据包至第二终端。

另一方面,本发明实施例还公开一种电子设备,该电子设备包括:

至少一个存储器,用于存放计算机操作指令;

至少一个处理器,用于执行所述存储器存储的计算机操作指令,以执行:将接收自第一终端的TCP数据包转化为数据流;按照预设规则对所述数据流进行分析以过滤所述数据流中所包含的威胁数据;将所述数据流中除了所述威胁数据之外的数据打包成连续的TCP数据包;依次发送所述连续的TCP数据包至第二终端。

图5是本申请另一实施例提供的执行数据过滤方法的电子设备的硬件结构示意图,如图5所示,该设备包括:

一个或多个处理器510以及存储器520,图5中以一个处理器510为例。

执行数据过滤方法的设备还可以包括:输入装置530和输出装置540。

处理器510、存储器520、输入装置530和输出装置540可以通过总线或者其他方式连接,图5中以通过总线连接为例。

存储器520作为一种非易失性计算机可读存储介质,可用于存储非易失性软件程序、非易失性计算机可执行程序以及模块,如本申请实施例中的数据过滤方法对应的程序指令/模块。处理器510通过运行存储在存储器520中的非易失性软件程序、指令以及模块,从而执行服务器的各种功能应用以及数据处理,即实现上述方法实施例数据过滤方法。

存储器520可以包括存储程序区和存储数据区,其中,存储程序区可存储操作系统、至少一个功能所需要的应用程序;存储数据区可存储根据数据过滤装置的使用所创建的数据等。此外,存储器520可以包括高速随机存取存储器,还可以包括非易失性存储器,例如至少一个磁盘存储器件、闪存器件、或其他非易失性固态存储器件。在一些实施例中,存储器520可选包括相对于处理器510远程设置的存储器,这些远程存储器可以通过网络连接至数据过滤装置。上述网络的实例包括但不限于互联网、企业内部网、局域网、移动通信网及其组合。

输入装置530可接收输入的数字或字符信息,以及产生与数据过滤装置的用户设置以及功能控制有关的键信号输入。输出装置540可包括显示屏等显示设备。

所述一个或者多个模块存储在所述存储器520中,当被所述一个或者多个处理器510执行时,执行上述任意方法实施例中的数据过滤方法。

上述产品可执行本申请实施例所提供的方法,具备执行方法相应的功能模块和有益效果。未在本实施例中详尽描述的技术细节,可参见本申请实施例所提供的方法。

本申请实施例的电子设备以多种形式存在,包括但不限于防火墙,防火墙的构成包括处理器、硬盘、内存、系统总线等,防火墙和通用的计算机架构类似,但是由于需要提供高可靠的服务,因此在处理能力、稳定性、可靠性、安全性、可扩展性、可管理性等方面要求较高。

以上所描述的装置实施例仅仅是示意性的,其中所述作为分离部件说明的单元可以是或者也可以不是物理上分开的,作为单元显示的部件可以是或者也可以不是物理单元,即可以位于一个地方,或者也可以分布到多个网络单元上。可以根据实际的需要选择其中的部分或者全部模块来实现本实施例方案的目的。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到各实施方式可借助软件加通用硬件平台的方式来实现,当然也可以通过硬件。基于这样的理解,上述技术方案本质上或者说对相关技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品可以存储在计算机可读存储介质中,如ROM/RAM、磁碟、光盘等,包括若干指令用以使得一台计算机设备(可以是个人计算机,服务器,或者网络设备等)执行各个实施例或者实施例的某些部分所述的方法。

最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。

当前第1页1 2 3 
网友询问留言 已有0条留言
  • 还没有人留言评论。精彩留言会获得点赞!
1