信息处理方法及装置、存储介质、电子装置与流程

文档序号:16199603发布日期:2018-12-08 06:28阅读:157来源:国知局
信息处理方法及装置、存储介质、电子装置与流程

本发明涉及通信领域,具体而言,涉及一种信息处理方法及装置、存储介质、电子装置。

背景技术

相关技术中的流表在安全系统中的应用时,是重要的流跟踪设施,能够有效的防止流误杀。但是流表也是脆弱的,很容易被攻击。流表作为一个清洗系统的组件存在的时候,对流表的性能没有太高的要求,但是对流表的安全性有极高的要求,流表一定不能被打爆是第一要求,例如linux虚拟服务器的流表,收到一个syn就进行入表操作,流表对于syn攻击毫无抵抗能力。

针对相关技术中存在的上述问题,目前尚未发现有效的解决方案。



技术实现要素:

本发明实施例提供了一种信息处理方法及装置、存储介质、电子装置。

根据本发明的一个实施例,提供了一种信息处理方法,包括:接收传输控制协议(transmissioncontrolprotocol,tcp)数据包;通过前置流表检测所述tcp数据包是否满足预设规则;当所述tcp数据包满足预设规则时,将所述tcp数据包发送至主流表。

根据本发明的另一个实施例,提供了一种信息处理装置,包括:接收模块,用于接收传输控制协议tcp数据包;检测模块,用于通过前置流表检测所述tcp数据包是否满足预设规则;发送模块,用于当所述tcp数据包满足预设规则时,将所述tcp数据包发送至主流表。

根据本发明的又一个实施例,还提供了一种存储介质,所述存储介质中存储有计算机程序,其中,所述计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

根据本发明的又一个实施例,还提供了一种电子装置,包括存储器和处理器,所述存储器中存储有计算机程序,所述处理器被设置为运行所述计算机程序以执行上述任一项方法实施例中的步骤。

通过本发明,通过设置前置流表检测tcp数据包,在主流表之前加入了单独的过滤模块,解决了相关技术中不能过滤tcp数据包攻击的技术问题,提高了系统的安全性和稳定性。

附图说明

此处所说明的附图用来提供对本发明的进一步理解,构成本申请的一部分,本发明的示意性实施例及其说明用于解释本发明,并不构成对本发明的不当限定。在附图中:

图1是根据本发明实施例的信息处理方法的流程图;

图2是根据本发明实施例的信息处理装置的结构框图。

具体实施方式

下文中将参考附图并结合实施例来详细说明本发明。需要说明的是,在不冲突的情况下,本申请中的实施例及实施例中的特征可以相互组合。

需要说明的是,本发明的说明书和权利要求书及上述附图中的术语“第一”、“第二”等是用于区别类似的对象,而不必用于描述特定的顺序或先后次序。

一实施例

在本实施例中提供了一种检测数据包的方法,图1是根据本发明实施例的信息处理方法的流程图,如图1所示,该流程包括如下步骤:

步骤s102,接收传输控制协议tcp数据包;

步骤s104,通过前置流表检测tcp数据包是否满足预设规则;

步骤s106,当tcp数据包满足预设规则时,将tcp数据包发送至主流表。

通过上述步骤,通过设置前置流表检测tcp数据包,在主流表之前加入了单独的过滤模块,解决了相关技术中不能过滤tcp数据包攻击的技术问题,提高了系统的安全性和稳定性。

可选的,前置流表为哈希表,tcp数据包包括:syn包,ack包和data(数据)包;或者,tcp数据包包括:syn包,ack+数据包。在本实施方式中,在tcp握手的三次握手过程中,先收到客户端的syn,再收到客户端的ack,再收到客户端的数据,一共是三个数据包。在其他实施方式中,在fast-tcp的情况下,只会收到syn和ack+data两个数据包,此时视ack+data这个数据包为两个数据包。

本实施例通过设置一个本身能防御syn攻击的前置流表,而对于流表来说,可以首先经过syn防御算法,再经过流表的流跟踪算法,使得流跟踪的功能依赖于syn防御算法的防御能力。由于syn防御算法是可以单独开关的,所以用于安全的主流表也仍然需要一个syn攻击基础的过滤模块,即前置流表。

当syn攻击到达的时候,可以不依赖主流表本身来容纳syn流量,而使用额外的前置流表来处理,流表的特点是表大且相对稳定,一个连接通常持续的时间是远远长于连接建立的时间的。

可选地,上述步骤的执行主体可以为网络侧服务器等,但不限于此。

可选地,在通过前置流表检测tcp数据包是否满足预设规则之后,方法还包括:在检测不通过的情况下,拒绝将tcp数据包发送至主流表。

可选地,通过前置流表检测tcp数据包是否满足预设规则包括:

s11,通过哈希表确定tcp数据包的状态和tcp数据包中seq数据域的序列号;其中,seq数据域是指tcp数据包中的seq数据域,代表已经发送的字节数,每一个tcp包都会携带,通过确定seq数据域中数值的连续性确定接收到的tcp数据包是同一个连接下的三次握手信号数据包;tcp数据包的状态包括syn接收状态和syn确定状态。

s12,当tcp数据包的状态表征接收到syn包和已经建立连接,以及seq数据域的序列号连续时,确定满足预设规则。

本实施例的方案可以用于流表的入表操作,用于流跟踪,同时使得主流表在攻击来临的时候不会急速膨胀导致遍历性能的快速下降。在流表的前面添加前置流表,前置流表与linux环境中的前置流表的机制类似,其中一个区别是linux内核里的前置流表在每一个syn到达的时候会分配大量的内存给一个连接,如此在syn攻击到达的时候会快速耗尽内存。而本实施例的前置流表的目的是辅助于正常的流表跟踪的需求,流表可以不需要存储五元组(源ip地址、源端口、目的ip地址、目的端口、传输层协议),只需要存储一个五元组哈希过的rss(接收信号强度)值,这个rss值对应前置哈希表的一个2个字节的条目,一个字节用于状态跟踪和后续扩展,一个字节用于seq的序列号跟踪,这个序列号可以不使用全量的,如只使用最后8位,就可以确定这个顺序是否是连续的。前置流表的单项相对于linux内核的设计成倍的节省了内存,而且,前置流表可以做到比较快速的老化,可以限制的很小,因为linux内核的前置流表需要完全的符合rfc规定的标准,而流跟踪需求的前置流表用于安全防御,是可以接受一定程度的误杀的,所以可以忽略掉很多特殊情况。在使用前置流表进行状态跟踪时,只需要跟踪syn_recv(syn接收状态),established(syn确定状态)两个状态,一共一位。syn_recv的时候,状态为位0,established的时候状态为位1。一次是在接收到握手的ack包的时候检查是否存在syn包,一次检查是在接收到数据包的时候检查是否已经建立连接。当接收到ack握手包时,检查是否存在这个条目,当接收到数据包时,检查状态位是否位1。1个字节包括8位2进制数,2位用于后续扩展,在一个示例中,把用于后续扩展的2个位也用于时间戳,可以实现一个流多停留在表中一段时间。

可选地,所述哈希表还携带syn时间戳,其中,所述syn时间戳用于描述所述哈希表内条目的有效性。在一个示例中,时间戳占5位,即32s,使用时间戳可以实现滚动删除的老化方式,32s的时间周期内每次都删除某些时间计数器装置即将到达的值对应的所有条目,比如3s的时候删除5-8s对应的所有条目。

哈希表包括两个字节,其中第一字节用于tcp数据包的状态跟踪和扩展,第二字节用于tcp数据包的seq数据域的序列号跟踪,第一字节的条目包括syn时间戳和rss值,其中,rss值用于确定tcp数据包的状态,第二字节的条目用于确定seq数据域的序列号是否连续。rss值用于在哈希表中建立一个key的条目。

在一个示例中,根据接收到的syn包在前置流表中建立对应的关键字,根据接收到的与syn包对应的ack包设置关键字的值为预设数值,tcp数据包的状态表征接收到syn包和已经建立连接包括:根据接收到的ack包查询到对应的关键字时,确定接收到syn包;根据接收到的data包查询到对应的关键字的值为预设数值时,确定已经建立连接。哈希表包括key和value,即关键字和对应的值,哈希表在接收到syn包之后,网卡提取syn包中的五元组计算的rss值,用该值作为哈希表的key,在哈希表中建立一个条目,其中,包含关键字和空的数值,在收到ack包后,通过对五元组计算得到的rss值去查表中是否存在对应的关键字,如果存在,确定是同一个连接中的syn,进一步更改该关键字对应的值,使对应的值对应为建立状态,在后续接收到data包,查询到该对应的值时,确定已经建立连接。

在一个示例中,通过哈希表确定tcp数据包中seq数据域的序列号包括:依次获取tcp数据包中多个包的seq数据域;确定seq数据域的序列号是否连续。

如此,这个前置流表是一个三包入表系统,当收到syn,syn/ack和数据这三个包之后,并且seq值连续就可以确定入流表。如此有效的解决了流表膨胀的问题,并且能节省了攻击发生的时候的大量流表遍历开销。

通过以上的实施方式的描述,本领域的技术人员可以清楚地了解到根据上述实施例的方法可借助软件加必需的通用硬件平台的方式来实现,当然也可以通过硬件,但很多情况下前者是更佳的实施方式。基于这样的理解,本发明的技术方案本质上或者说对现有技术做出贡献的部分可以以软件产品的形式体现出来,该计算机软件产品存储在一个存储介质(如rom/ram、磁碟、光盘)中,包括若干指令用以使得一台终端设备(可以是手机,计算机,服务器,或者网络设备等)执行本发明各个实施例的方法。

在本实施例中还提供了一种检测数据包的装置,该装置用于实现上述实施例及优选实施方式,已经进行过说明的不再赘述。如以下所使用的,术语“模块”可以实现预定功能的软件和/或硬件的组合。尽管以下实施例所描述的装置较佳地以软件来实现,但是硬件,或者软件和硬件的组合的实现也是可能并被构想的。

图2是根据本发明实施例的信息处理装置的结构框图,如图2所示,该装置包括:

接收模块20,用于接收传输控制协议tcp数据包;

检测模块22,用于通过前置流表检测tcp数据包是否满足预设规则;

发送模块24,用于当tcp数据包满足预设规则时,将tcp数据包发送至主流表。

可选的,前置流表为哈希表,tcp数据包包括:syn包、ack包和data包。

可选的,检测模块包括:第一确定单元,用于通过哈希表确定tcp数据包的状态和tcp数据包中seq数据域的序列号;第二确定单元,用于当tcp数据包的状态表征接收到syn包和已经建立连接,以及seq数据域的序列号连续时,确定满足预设规则。

本发明使用的前置流表的老化算法与真实流表的老化算法在设计上有比较大的区别。前置流表的老化比较激进,流表的老化比较谨慎。前置流表的大小也可以相对的小,如此老化的遍历控制在了可以接受的开销。

本发明使用了dpdk的哈希表,使用了网卡计算的rss值作为哈希表的key,value只有两个字节。短小精悍的解决了流表的爆炸问题。

需要说明的是,上述各个模块是可以通过软件或硬件来实现的,对于后者,可以通过以下方式实现,但不限于此:上述模块均位于同一处理器中;或者,上述各个模块以任意组合的形式分别位于不同的处理器中。

一实施例

本发明的实施例还提供了一种存储介质,该存储介质中存储有计算机程序,其中,该计算机程序被设置为运行时执行上述任一项方法实施例中的步骤。

可选地,在本实施例中,上述存储介质可以被设置为存储用于执行以下步骤的计算机程序:

s1,接收传输控制协议tcp数据包;

s2,通过前置流表检测tcp数据包是否满足预设规则;

s3,当tcp数据包满足预设规则时,将tcp数据包发送至主流表。

可选地,在本实施例中,上述存储介质可以包括但不限于:u盘、只读存储器(read-onlymemory,简称为rom)、随机存取存储器(randomaccessmemory,简称为ram)、移动硬盘、磁碟或者光盘等各种可以存储计算机程序的介质。

本发明的实施例还提供了一种电子装置,包括存储器和处理器,该存储器中存储有计算机程序,该处理器被设置为运行计算机程序以执行上述任一项方法实施例中的步骤。

可选地,上述电子装置还可以包括传输设备以及输入输出设备,其中,该传输设备和上述处理器连接,该输入输出设备和上述处理器连接。

可选地,在本实施例中,上述处理器可以被设置为通过计算机程序执行以下步骤:

s1,接收传输控制协议tcp数据包;

s2,通过前置流表检测tcp数据包是否满足预设规则;

s3,当tcp数据包满足预设规则时,将tcp数据包发送至主流表。

可选地,本实施例中的具体示例可以参考上述实施例及可选实施方式中所描述的示例,本实施例在此不再赘述。

显然,本领域的技术人员应该明白,上述的本发明的各模块或各步骤可以用通用的计算装置来实现,它们可以集中在单个的计算装置上,或者分布在多个计算装置所组成的网络上,可选地,它们可以用计算装置可执行的程序代码来实现,从而,可以将它们存储在存储装置中由计算装置来执行,并且在某些情况下,可以以不同于此处的顺序执行所示出或描述的步骤,或者将它们分别制作成各个集成电路模块,或者将它们中的多个模块或步骤制作成单个集成电路模块来实现。这样,本发明不限制于任何特定的硬件和软件结合。

以上所述仅为本发明的优选实施例而已,并不用于限制本发明,对于本领域的技术人员来说,本发明可以有各种更改和变化。凡在本发明的原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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