检测DOS攻击方法、装置、设备及存储介质与流程

文档序号:20009194发布日期:2020-02-22 03:54阅读:282来源:国知局
检测DOS攻击方法、装置、设备及存储介质与流程

本发明一般涉及区块链安全技术领域,具体涉及一种检测dos攻击方法、装置、设备及存储介质。



背景技术:

区块链技术是一种去中心化的分布式互联网数据库,是分布式存储、点对点传输、共识机制、加密算法等计算机技术的新型应用模式。一般来说,区块链具备开放性特征,尤其是公有区块链和部署在公网上的联盟链,任意客户端可以通过公开的接口查询区块链数据,发送交易等。恶意用户可以通过多个客户端大规模发送请求至区块链节点,从而占用节点资源,使得节点无法提供正常的服务或资源访问,且无法参与链的共识,导致节点停止响应甚至崩溃,该攻击行为被称为节点受到拒绝服务攻击(denialofservice,简称dos)。为了防止节点被恶意攻击,对其的dos攻击检测防御十分重要。

目前,对于dos防护通常是在防火墙上配置策略,如限制某个网络之间互连的协议的报文频率等,但是由于节点数量众多,无法通过简单的防火墙配置实现对dos攻击的有效防御。



技术实现要素:

鉴于现有技术中的上述缺陷或不足的至少之一,期望提供一种检测dos攻击方法、装置、设备及存储介质,能够自动检测该客户端是否属于向区块链节点发起dos攻击的主体,使得区块链节点采取措施防御恶意客户端进行的dos攻击。

第一方面,本发明提供了一种检测dos攻击方法,该方法包括:

接收客户端发送的当前操作请求;

基于所述当前操作请求更新计分表,所述计分表包括至少一个计分条目,每个所述计分条目用于记录所述客户端发送的当前操作请求对应的第一计分值;

当所述第一计分值大于或等于预设阈值时,确定所述客户端属于发起dos攻击的主体。

在其中一个实施例中,所述基于所述当前操作请求更新计分表,包括:

根据所述当前操作请求确定当前计分值;

记录所述当前操作请求对应的请求时间戳并获取记录时间戳;

当所述当前计分值不为0时,根据所述记录时间戳和所述请求时间戳调整所述当前计分值,并更新所述请求时间戳为所述记录时间戳。

在其中一个实施例中,根据所述当前操作请求确定当前计分值,包括:

判断所述客户端发送的当前操作请求是否为首次操作请求;

当所述客户端发送的当前操作请求是首次操作请求时,设置初始计分值并创建计分条目;

当所述客户端发送的当前操作请求不是首次操作请求时,根据所述当前操作请求查找所述计分条目对应的当前计分值。

在其中一个实施例中,所述根据所述记录时间戳和所述请求时间戳调整所述当前计分值,包括:

确定所述记录时间戳和所述请求时间戳的时间间隔;

当所述时间间隔大于或等于预设时间时,调整所述当前计分值为0;

当所述时间间隔小于预设时间时,以所述时间间隔为指数对所述当前计分值进行指数调整,得到第一计分值。

在其中一个实施例中,在更新计分表之后,所述方法还包括:

若所述第一计分值小于所述预设阈值时,则处理所述当前操作请求;

并获取所述当前操作请求的请求类型和当前时间戳;

根据所述请求类型、所述记录时间戳和所述当前时间戳,调整所述第一计分值为第二计分值,并存储所述第二计分值。

在其中一个实施例中,根据所述请求类型、所述记录时间戳和所述当前时间戳,调整所述第一计分值为第二计分值,包括:

根据所述请求类型,按照所述请求类型对应的增加量对所述第一计分值进行增值处理;

以所述记录时间戳和所述当前时间戳之间的时间间隔为指数,对增值处理后的第一计分值进行指数调整,得到所述第二计分值。

在其中一个实施例中,在接收客户端发送的当前操作请求之后,所述方法还包括:

判断所述客户端是否为admin客户端,所述admin客户端为预置安全ip地址的客户端;

当所述客户端为所述admin客户端时,直接处理所述当前操作请求。

第二方面,本发明提供了一种检测dos攻击装置,该装置包括:

接收模块,用于接收客户端发送的当前操作请求;

更新模块,用于基于所述当前操作请求更新计分表,所述计分表包括至少一个计分条目,每个所述计分条目用于记录所述客户端发送的当前操作请求对应的第一计分值;

确定模块,用于当所述第一计分值大于或等于预设阈值时,确定所述客户端属于发起dos攻击的主体。

第三方面,本申请实施例提供了一种计算机设备,包括存储器和处理器,所述存储器存储有计算机程序,所述处理器执行所述计算机程序时实现上述所述检测dos攻击方法。

第四方面,本申请实施例提供了一种计算机可读存储介质,其上存储有计算机程序,所述计算机程序被处理器执行时实现上述所述检测dos攻击方法。

综上所述,本申请提供的一种检测dos攻击方法、装置、设备及存储介质,通过接收客户端发送的当前操作请求,并基于当前操作请求更新计分表,该计分表包括至少一个计分条目,每个计分条目中用于记录客户端发送的当前操作请求对应的第一计分值,当第一计分值大于或等于预设阈值时,确定该客户端属于发起dos攻击的主体。该方法能够通过给客户端发送的当前操作请求进行计分的方式,从而根据第一计分值检测区块链节点是否受到dos攻击,并判断客户端是否属于向区块链节点发起dos攻击的主体,进而使得区块链节点采取措施防御恶意客户端进行的dos攻击。

附图说明

通过阅读参照以下附图所作的对非限制性实施例所作的详细描述,本申请的其它特征、目的和优点将会变得更明显:

图1为本发明实施例提供的区块链网络的应用系统结构示意图;

图2为本发明实施例提供的检测dos攻击方法的流程示意图;

图3为本发明另一实施例提供的检测dos攻击方法的流程示意图;

图4为本发明另一个实施例提供的检测dos攻击方法的流程示意图;

图5为本发明实施例提供的检测dos攻击装置的流程示意图;

图6为本发明实施例提供的计算机系统的结构示意图。

具体实施方式

下面结合附图和实施例对本申请作进一步的详细说明。可以理解的是,此处所描述的具体实施例仅仅用于解释相关发明,而非对该发明的限定。另外还需要说明的是,为了便于描述,附图中仅示出了与发明相关的部分。

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

如背景技术中提到的,随着区块链技术的发展,越来越多的企业开始关注区块链,因其具备开放性特征,尤其是公有区块链和部署在公网上的联盟链,任意客户端可以通过公共接口发送交易或查询区块链数据,存在恶意用户对区块链网络中的节点进行dos攻击,导致节点停止响应甚至瘫痪。其中,以比特币为代表的采用工作量证明(proofofwork,简称pow)共识算法区块链,攻击者能够对正常工作的节点进行攻击,使得节点的维护者必须通过网络安全措施防御可能的攻击行为,以保证节点的正常运行;如拜占庭容错算法(byzantinefaulttolerance,简称bft)和股权证明(proofofstake,简称pos)共识算法的公有链和联盟链中,由于参与共识的节点数量多,如果部分节点遭受攻击,导致剩余节点无法完成共识,因此,为了防止节点被恶意攻击,对其的dos攻击检测和防御十分重要。现有技术中通常是在防火墙上配置策略,如限制某个网络之间互连的协议的报文频率等,但是由于节点数量多,无法通过简单的防火墙配置实现对dos攻击的有效防御。

基于上述缺陷,本申请提供了一种检测dos攻击方法、装置、设备及存储介质,通过接收客户端发送的当前操作请求,并基于当前操作请求更新计分表,该计分表包括至少一个计分条目,每个计分条目用于记录客户端发送的当前操作请求对应的第一计分值,当第一计分值大于或者等于预设阈值时,确定该客户端属于发起dos攻击的主体。与现有技术相比,该方法能够直接通过给客户端计分的方式,从而确定该客户端是否属于发起dos攻击的主体,使得区块链节点采取措施防御恶意客户端进行的dos攻击。

可以理解,本申请提供的检测dos攻击方法可以应用于区块链系统中,如图1为本申请应用场景下的系统结构图,该系统包括多个区块链节点和多个客户端,该区块链节点可以是服务器,多个客户端可以分布在一台终端主机上,也可以分布在多台终端主机上。客户端是与服务器相对应,为客户提供本地服务的程序,一般安装在普通的终端主机上,需要与服务器相互配合运行,一般较常用的客户端包括如万维网使用的网页浏览器,手机电子邮件时的电子邮件客户端,以及即时通讯的客户端等。可选的,本申请实施例中,该客户端可以包括正常客户端和恶意客户端,其中,恶意客户端可以是发起dos攻击的客户端。

为了便于理解和说明,下面通过图2至图6详细说明本申请实施例提供的检测dos攻击方法、装置、设备及存储介质。

图2为本申请实施例提供的检测dos攻击方法的流程示意图,如图2所示,该方法可以应用于上述区块链系统中的任意一个区块链节点,该方法包括:

s101、接收客户端发送的当前操作请求。

s102、基于当前操作请求更新计分表,该计分表包括至少一个计分条目,每个计分条目中用于记录客户端发送的当前操作请求对应的第一计分值。

具体的,可以预先通过配置文件添加已知安全客户端的ip地址为admin客户端,区块链节点在接收到客户端发送的当前操作请求时,可以判断该客户端是否为admin客户端,其中,当前操作请求中包括该客户端的ip地址,可以判断ip地址是否存在于admin客户端配置文件中,如果存在,则确定该客户端为admin客户端,表示该客户端是已知的安全客户端,可以直接处理该当前操作请求;如果判断出该客户端不是admin客户端时,则更新计分表。

其中,该计分表中包括至少一个计分条目,每个ip地址的客户端对应一个计分条目,同一个ip地址上不同端口的客户端在计分表中可以共用一个计分条目,也可以存储在不同的计分条目,可以根据ip地址和端口号创建不同的计分条目,每个计分条目中记录客户端发送的当前操作请求对应的第一计分值。区块链节点根据客户端的ip地址区分客户端,并更新记录ip地址对应的计分条目。

本实施例中通过预先配置已知安全ip地址的客户端为admin客户端,从而使得区块链节点能够对正常客户端发送的操作请求进行实时处理,表示当admin客户端不断的发送请求,能够放开对其的防御,及时对操作请求进行处理,而不认为在攻击区块链节点。

作为一种可实现方式,图3为本申请实施例提供的检测dos攻击方法的流程示意图。如图3所示,该方法包括:

s201、根据当前操作请求确定当前计分值。

需要说明的是,当接收到客户端发送的当前操作请求后,先根据客户端的ip地址判断该客户端是否为admin客户端,当确定出该客户端不是admin客户端时,则先判断该客户端发送的当前操作请求是否为首次操作请求,当该当前操作请求为首次操作请求,即表示客户端首次向区块链节点发送的操作请求时,则区块链节点设置初始计分值并创建计分条目,例如可以设置初始计分值n为0。

当客户端发送的当前操作请求不是首次操作请求时,则获取该客户端对应的ip地址,并根据ip地址查找计分表中计分条目对应的当前计分值。

s202、记录当前操作请求对应的请求时间戳并获取记录时间戳。

s203、若当前计分值不为0时,根据记录时间戳和请求时间戳调整当前计分值,并更新请求时间戳为记录时间戳。

需要说明的是,当该当前操作请求是客户端首次发送的操作请求时,则记录该当前操作请求对应的请求时间戳tp,并获取记录时间戳tn,并更新请求时间戳tp为记录时间戳tn。

当该当前操作请求不是客户端首次发送的操作请求时,则记录当前操作请求对应的请求时间戳tp并获取记录时间戳tn,并判断该当前计分值是否为0,若当前计分值不为0时,则调整当前计分值,可以是通过调整当前计分值随时间增加或减少的方式,包括但不限于线性增加或减少,可以呈指数增加或减少。

进一步地,可以根据记录时间戳和请求时间戳调整当前计分值,先对记录时间戳tn和请求时间戳tp进行作差计算,确定记录时间戳tn和请求时间戳tp的时间间隔,若时间间隔大于或等于预设时间时,则直接调整当前计分值为0,并更新请求时间戳tp为记录时间戳tn;若时间间隔小于预设时间时,则以时间间隔为指数对当前计分值进行指数调整,指数调整方法为随时间指数衰减,从而得到第一计分值,并更新请求时间戳tp为记录时间戳tn。其中,该预设时间可以是用户自定义设置,例如可以是120秒,具体对当前计分值的调整方式可以参见如下公式:

其中,α为指数衰减常数,α>0,n1为第一计分值;tp为请求时间戳;tn为记录时间戳;tn-tp为记录时间戳和请求时间戳的时间间隔,n为当前计分值。

s103、当第一计分值大于或等于预设阈值时,确定客户端属于发起dos攻击的主体。

具体的,在确定出第一计分值后,将第一计分值n1与预设阈值m进行比较,如果第一计分值大于或等于预设阈值,则确定客户端属于发起dos攻击的主体,并确定是未知的不安全的ip地址上的客户端在高频发送请求,即区块链节点受到该客户端的dos攻击,以使得区块链节点采取相应措施防御dos攻击。

可选的,可以通过断开与该客户端的连接来防御dos攻击,也可以通过记录该ip地址或报警形式来防御dos攻击。

本申请实施例提供的防御dos攻击方法,通过接收客户端发送的当前操作请求,并基于当前操作请求更新计分表,该计分表包括至少一个计分条目,每个计分条目中用于记录客户端发送的当前操作请求对应的第一计分值,当第一计分值大于或等于预设阈值时,确定该客户端属于发起dos攻击的主体。该方法能够通过给客户端发送的当前操作请求进行计分的方式,从而根据第一计分值检测区块链节点是否受到dos攻击,并判断客户端是否属于向区块链节点发起dos攻击的主体,进而使得区块链节点采取措施防御恶意客户端进行的dos攻击。

在上述实施例的基础上,图4为本申请实施例提供的检测dos攻击方法的流程示意图。如图4所示,该方法包括:

s301、若第一计分值小于预设阈值时,则处理当前操作请求;

s302、并获取操作请求的请求类型和当前时间戳;

s303、根据请求类型、记录时间戳和当前时间戳,调整第一计分值为第二计分值,并存储第二计分值。

需要说明的是,如果第一计分值小于预设阈值时,则区块链节点处理该当前操作请求,在处理完当前操作请求后,处理当前操作请求的过程会耗时,并获取该当前操作请求的请求类型和当前时间戳,根据请求类型、记录时间戳和当前时间戳的时间间隔对第一计分值进行调整,得到第二计分值并存储。

具体的,在确定第二计分值时,先根据请求类型,按照请求类型对应的增加量对第一计分值进行增值处理,得到增值处理后的第一计分值,其中不同的请求类型对应第一计分值的增加值不同。示例性地,当请求类型为普通请求时,增加值为20;当请求类型为提交交易时,增加值为400;当请求类型为无效请求时,增加值为100;当请求类型为异常请求时,增加值为100。

在对第一计分值进行增加值调整得到增值处理后的第一计分值后,根据更新后的请求时间戳tn和获取的当前时间戳之间的时间间隔对增值处理后的第一计分值进行指数调整,当该时间间隔大于或等于预设时间时,直接调整增值处理后的第一计分值为0;当时间间隔小于预设时间时,则以记录时间戳和当前时间戳之间的时间间隔为指数,对增值处理后的第一计分值进行指数调整,从而得到第二计分值并存储,并更新请求时间戳tp为当前时间戳。

例如,当预设阈值为48000时,同一个ip地址上的客户端在1s时间内,不考虑计分值衰减,则发送1200个提交交易请求后,计分值为1200*400=48000,此时该计分值等于预设阈值,则确定区块链节点受到dos攻击,并断开与该客户端的连接。其中,计分值越大时,随时间衰减得越快,当α为1时,每秒计分值最大衰减为480,000÷2.718≈176,600.441。

本申请实施例通过获取当前操作请求的请求类型和当前时间戳,并根据请求类型、记录时间戳和当前时间戳,调整第一计分值为第二计分值,并存储第二计分值,从而使得客户端发送下次操作请求时,能够自动读取存储的第二计分值,进而判断区块链节点是否受到dos攻击,进一步使得区块链节点采取措施防御恶意客户端进行的dos攻击。

图5为本申请实施例提供的检测dos攻击装置的结构示意图。如图5所示,该装置包括:

接收模块10,用于接收客户端发送的当前操作请求;

更新模块20,用于基于所述当前操作请求更新计分表,所述计分表包括至少一个计分条目,每个所述计分条目用于记录所述客户端发送的当前操作请求对应的第一计分值;

确定模块30,用于当所述第一计分值大于或等于预设阈值时,确定所述客户端属于发起dos攻击的主体。

可选的,所述更新模型20,包括:

确定单元201,用于根据所述当前操作请求确定当前计分值;

记录单元202,用于记录所述当前操作请求对应的请求时间戳并获取记录时间戳;

调整单元203,用于当所述当前计分值不为0时,根据所述记录时间戳和所述请求时间戳调整所述当前计分值,并更新所述请求时间戳为所述记录时间戳。

可选的,所述记录单元201,具体用于:

判断所述客户端发送的当前操作请求是否为首次操作请求;

当所述客户端发送的当前操作请求是首次操作请求时,设置初始计分值并创建计分条目;

当所述客户端发送的当前操作请求不是首次操作请求时,根据所述当前操作请求查找所述计分条目对应的当前计分值。

可选的,所述调整单元203,具体用于:

确定所述记录时间戳和所述请求时间戳的时间间隔;

当所述时间间隔大于或等于预设时间时,调整所述当前计分值为0;

当所述时间间隔小于预设时间时,以所述时间间隔为指数对所述当前计分值进行指数调整,得到第一计分值。

可选的,所述装置还用于:

若所述第一计分值小于所述预设阈值时,则处理所述当前操作请求;

并获取所述操作请求的请求类型和当前时间戳;

根据所述请求类型、所述记录时间戳和所述当前时间戳,调整所述第一计分值为第二计分值,并存储所述第二计分值。

可选的,所述装置具体用于:

根据所述请求类型,按照所述请求类型对应的增加量对所述第一计分值进行增值处理;

以所述记录时间戳和所述当前时间戳之间的时间间隔为指数,对增值处理后的第一计分值进行指数调整,得到所述第二计分值。

可选的,所述装置还包括:

判断模块40,用于判断所述客户端是否为admin客户端,所述admin客户端为预置安全ip地址的客户端;

处理模块50,用于当所述客户端为所述admin客户端时,直接处理所述当前操作请求。

本实施例提供的检测dos攻击装置,可以执行上述方法的实施例,其实现原理和技术效果类似,在此不再赘述。

下面参考图6,其示出了适于用来实现本申请实施例的的计算机系统600的结构示意图,该计算机系统可以应用于服务器。

如图6所示,计算机系统600包括中央处理单元(cpu)601,其可以根据存储在只读存储器(rom)602中的程序或者从存储部分603加载到随机访问存储器(ram)603中的程序而执行各种适当的动作和处理。在ram603中,还存储有系统600操作所需的各种程序和数据。cpu601、rom602以及ram603通过总线604彼此相连。输入/输出(i/o)接口605也连接至总线604。

以下部件连接至i/o接口605:包括键盘、鼠标等的输入部分606;包括诸如阴极射线管(crt)、液晶显示器(lcd)等以及扬声器等的输出部分607;包括硬盘等的存储部分608;以及包括诸如lan卡、调制解调器等的网络接口卡的通信部分609。通信部分609经由诸如因特网的网络执行通信处理。驱动器610也根据需要连接至i/o接口605。可拆卸介质611,诸如磁盘、光盘、磁光盘、半导体存储器等等,根据需要安装在驱动器610上,以便于从其上读出的计算机程序根据需要被安装入存储部分608。

特别地,根据本申请公开的检测dos攻击方法的实施例,上文参考图6描述的过程可以被实现为计算机软件程序。例如,本申请公开的主控模块的实施例包括一种计算机程序产品,其包括有形地包含在机器可读介质上的计算机程序,该计算机程序包含用于执行图2-图4的方法的程序代码。在这样的实施例中,该计算机程序可以通过通信部分605从网络上被下载和安装,和/或从可拆卸介质611被安装。

需要说明的是,本发明所示的计算机可读介质可以是计算机可读信号介质或者计算机可读存储介质或者是上述两者的任意组合。计算机可读存储介质例如可以是——但不限于——电、磁、光、电磁、红外线、或半导体的系统、装置或器件,或者任意以上的组合。计算机可读存储介质的更具体的例子可以包括但不限于:具有一个或多个导线的电连接、便携式计算机磁盘、硬盘、随机访问存储器(ram)、只读存储器(rom)、可擦式可编程只读存储器(eprom或闪存)、光纤、便携式紧凑磁盘只读存储器(cd-rom)、光存储器件、磁存储器件、或者上述的任意合适的组合。在本申请中,计算机可读存储介质可以是任何包含或存储程序的有形介质,该程序可以被指令执行系统、装置或者器件使用或者与其结合使用。

而在本申请中,计算机可读的信号介质可以包括在基带中或者作为载波一部分传播的数据信号,其中承载了计算机可读的程序代码。这种传播的数据信号可以采用多种形式,包括但不限于电磁信号、光信号或上述的任意合适的组合。计算机可读的信号介质还可以是计算机可读存储介质以外的任何计算机可读介质,该计算机可读介质可以发送、传播或者传输用于由指令执行系统、装置或者器件使用或者与其结合使用的程序。计算机可读介质上包含的程序代码可以用任何适当的介质传输,包括但不限于:无线、电线、光缆、rf等等,或者上述的任意合适的组合。

附图中的流程图和框图,图示了按照本申请各种计算机系统、方法和计算机程序产品的可能实现的体系架构、功能和操作。在这点上,流程图或框图中的每个方框可以代表一个模块、程序段、或代码的一部分,前述模块、程序段、或代码的一部分包含一个或多个用于实现规定的逻辑功能的可执行指令。也应当注意,在有些作为替换的实现中,方框中所标注的功能也可以以不同于附图中所标注的顺序发生。例如,两个接连地表示的方框实际上可以基本并行地执行,它们有时也可以按相反的顺序执行,这依所涉及的功能而定。也要注意的是,框图和/或流程图中的每个方框、以及框图和/或流程图中的方框的组合,可以用执行规定的功能或操作的专用的基于硬件的系统来实现,或者可以用专用硬件与计算机指令的组合来实现。

描述于本申请实施例中所涉及到的单元或模块可以通过软件的方式实现,也可以通过硬件的方式来实现。所描述的单元或模块也可以设置在处理器中,例如,可以描述为:一种处理器包括接收模块、更新模块及确定模块。其中,这些单元或模块的名称在某种情况下并不构成对该单元或模块本身的限定,例如,接收模块还可以被描述为“用于接收客户端发送的当前操作请求”。

作为另一方面,本申请还提供了一种计算机可读存储介质,该计算机可读存储介质可以是上述实施例中前述装置中所包含的计算机可读存储介质;也可以是单独存在,未装配入设备中的计算机可读存储介质。计算机可读存储介质存储有一个或者一个以上程序,前述程序被一个或者一个以上的处理器用来执行描述于本申请的检测dos攻击方法,具体执行:接收客户端发送的当前操作请求;基于所述当前操作请求更新计分表,所述计分表包括至少一个计分条目,每个所述计分条目用于记录所述客户端发送的当前操作请求对应的第一计分值;当所述第一计分值大于或等于预设阈值时,确定所述客户端属于发起dos攻击的主体。

应当注意,尽管在上文详细描述中提及了用于动作执行的设备的若干模块或者单元,但是这种划分并非强制性的。实际上,根据本公开的实施方式,上文描述的两个或更多模块或者单元的特征和功能可以在一个模块或者单元中具体化。反之,上文描述的一个模块或者单元的特征和功能可以进一步划分为由多个模块或者单元来具体化。

此外,尽管在附图中以特定顺序描述了本公开中方法的各个步骤,但是,这并非要求或者暗示必须按照该特定顺序来执行这些步骤,或是必须执行全部所示的步骤才能实现期望的结果。附加的或备选地,可以省略某些步骤,将多个步骤合并为一个步骤执行,以及/或者将一个步骤分解为多个步骤执行等。通过以上的实施方式的描述,本领域的技术人员易于理解,这里描述的示例实施方式可以通过软件实现,也可以通过软件结合必要的硬件的方式来实现。

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