传输控制协议流量过滤方法、装置、服务器及存储介质与流程

文档序号:15931104发布日期:2018-11-14 01:39阅读:134来源:国知局

本发明涉及网络安全领域,特别涉及一种传输控制协议流量过滤方法、装置、服务器及存储介质。

背景技术

分布式拒绝服务(distributeddenialofservice,ddos)攻击,是指黑客通过控制分布在各处的僵死网络向目的服务器发起大量异常流量,服务器忙于处理异常流量,无法处理正常用户请求,甚至系统崩溃,造成拒绝服务。

黑洞挑战(chanllengecollapsar,cc)攻击是一种非常常见的ddos攻击手法。攻击端(例如,被控制的客户端)先与被攻击端(例如,被攻击服务器)建立传输控制协议(transmissioncontrolprotocol,tcp)连接,然后向被攻击端发送大量的tcp垃圾报文,阻塞被攻击端带宽,导致业务瘫痪。

传统cc攻击防护方案采用水印防护实现,在客户端向服务器发送上行tcp报文时,需要在tcp报文中携带通过事先约定的算法算出的水印字段。设置在客户端和服务器之间的防护端,通过验证该上行tcp报文中水印字段的合法性,从而判断是否将该tcp报文转发给服务器,实现对非法报文进行拦截。然而,这种防护方案需要对客户端的代码进行修改,接入成本和门槛较高;另外,携带水印字段的tcp报文长度增加,增加了上行流量成本。



技术实现要素:

为了解决相关技术中存在的采用水印防护cc攻击时,客户端接入成本和门槛较高,同时增加了上行流量成本问题。本发明实施例提供了一种tcp流量过滤方法、装置、服务器及存储介质。所述技术方案如下:

一方面,提供了一种tcp流量过滤方法,所述方法包括:

当服务器受到cc攻击时,基于所述服务器的源ip地址信任列表,确定发送给所述服务器的tcp报文的源ip地址中的信任源ip地址和非信任源ip地址,所述信任源ip地址为处于源ip地址信任列表中的源ip地址,所述非信任源ip地址为不处于源ip地址信任列表中的源ip地址。将所述信任源ip地址的tcp报文发送给所述服务器。利用所述非信任源ip地址的syn报文速率基线、tcp报文长度基线和tcp报文速率基线,判断是否对所述非信任源ip地址的tcp报文进行拦截。

另一方面,还提供了一种tcp流量过滤装置,所述装置包括:

判断模块,用于当服务器受到cc攻击时,基于所述服务器的源ip地址信任列表,确定发送给所述服务器的tcp报文的源ip地址中的信任源ip地址和非信任源ip地址,所述信任源ip地址为处于源ip地址信任列表中的源ip地址,所述非信任源ip地址为不处于源ip地址信任列表中的源ip地址。过滤模块,用于将所述信任源ip地址的tcp报文发送给所述服务器;利用所述非信任源ip地址的syn报文速率基线、tcp报文长度基线和tcp报文速率基线,判断是否对所述非信任源ip地址的tcp报文进行拦截。

另一方面,还提供了一种服务器,所述服务器包括处理器和存储器,所述存储器中存储有至少一条指令,所述指令由所述处理器加载并执行以实现如第一方面所述的tcp流量过滤方法。

另一方面,还提供了一种计算机可读存储介质,所述存储介质中存储有至少一条指令,所述指令由处理器加载并执行以实现如第一方面所述的tcp流量过滤方法。

本发明实施例提供的技术方案带来的有益效果是:

通过在服务器受到cc攻击时,先判断发送的服务器的tcp报文的每个源ip地址是否为信任源ip地址,如果是,则直接转发该信任源ip地址的tcp报文,不会影响正常客户端的tcp业务。如果不是,则利用syn报文速率基线、tcp报文长度基线和tcp报文速率基线对非信任源ip地址进行判断,判断该非信任源ip地址的tcp报文是否异常,进而确定是丢弃该非信任源ip地址的tcp报文,还是转发该非信任源ip地址的tcp报文。采用这种方式,无需在上行tcp报文中携带水印字段,因此无需对客户端的代码进行修改,成本低、门槛低,且适用于云服务场景。同时tcp报文长度不变,节省了上行流量成本。

附图说明

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

图1是一种cc攻击的流程示意图;

图2是本发明实施例提供的一种tcp流量过滤系统的拓扑示意图;

图3是本发明实施例提供的一种tcp流量过滤方法的流程图;

图4是本发明实施例提供的另一种tcp流量过滤方法的流程图;

图5是本发明实施例提供的一种tcp流量过滤装置的结构示意图;

图6是本发明实施例提供的一种服务器的结构示意图。

具体实施方式

为使本发明的目的、技术方案和优点更加清楚,下面将结合附图对本发明实施方式作进一步地详细描述。

为便于对本发明实施例提供的技术方案的理解,下面对现有cc攻击防护方案所存在的问题进行说明:

图1是一种cc攻击的流程示意图,这里的cc攻击为四层cc攻击,其中四层是指开放式系统互联(opensysteminterconnection,osi)中的第四层,其具体过程参见图1,攻击端先与被攻击端(被攻击服务器)通过3次握手建立tcp连接。如图1所示,攻击端先向被攻击端发送同步序列编号(synchronizesequencenumbers,syn)报文,被攻击端返回syn确认(synacknowledgement,synack)报文,然后攻击端向被攻击端发送ack报文,完成3次握手。建立tcp连接后,攻击端向被攻击端发送大量的tcp垃圾报文,阻塞被攻击端带宽,导致业务瘫痪。

传统cc攻击防护方案采用水印防护实现,客户端在上行tcp报文传输时,需要在tcp报文中携带通过事先约定的算法算出的水印字段。设置在客户端(攻击端)和服务器(被攻击端)之间的防护端,通过验证该上行tcp报文中水印字段的合法性,从而判断是否将该tcp报文转发给服务器,实现对非法报文进行拦截。如图1所示,防护端检测tcp报文中的水印字段是否正确,由于tcp垃圾报文由攻击端发送,其中并未携带正确的水印字段,因此,防护端会丢弃该tcp垃圾报文。

然而,这种防护方案需要对客户端的代码进行修改,费时费力,接入成本高,同时,这种方案也导致接入门槛较高。另外,携带水印字段的tcp报文长度增加,增加了上行流量成本。为了解决上述问题,本发明实施例提供了一种tcp流量过滤方法。在介绍本申请的tcp流量过滤方法前,先对tcp流量过滤系统(也即前述防护端)的架构进行简单说明。

图2是本发明实施例提供的一种tcp流量过滤系统的拓扑示意图,参见图2,该tcp流量过滤系统10连接路由器20,该路由器20通常为网络中的核心路由器,路由器20连接运营商网络30,路由器20通过交换机40连接服务器50,从而实现服务器50与网络其他设备的连通。其中,路由器20可以连接多个交换机40,该交换机40可以为核心交换机,每个交换机40可以连接一个或多个服务器50。

tcp流量过滤系统10包括检测学习子系统101、防护子系统102和控制子系统103,三个子系统既可以分别采用独立的设备(如服务器)实现,也可以其中两个或者三个全部集成在一个设备上。

路由器20在传输发送给服务器50的流量时,会产生镜像流量,并将镜像流量发送给检测学习子系统101。检测学习子系统101根据镜像流量对各个服务器的tcp报文进行学习,得到源ip地址信任列表、syn报文速率基线、tcp报文长度基线和tcp报文速率基线;并将源ip地址信任列表、syn报文速率基线、tcp报文长度基线和tcp报文速率基线存储到控制子系统103的数据库中。同时,检测学习子系统101检测各个服务器50是否受到cc攻击,在检测到服务器50受到cc攻击时,向防护子系统102和控制子系统103输出告警信息。

防护子系统102收到告警信息时,从防护子系统102获取该服务器的源ip地址信任列表、syn报文速率基线、tcp报文长度基线和tcp报文速率基线。同时,防护子系统102与路由器20之间进行流量牵引,将服务器的tcp报文牵引到防护子系统102,防护子系统102根据源ip地址信任列表、syn报文速率基线、tcp报文长度基线和tcp报文速率基线对服务器的tcp报文进行过滤,将过滤后的服务器的tcp报文回传给路由器20,再由路由器20传输给服务器50。

其中,服务器为前述路由器20连接的任一个服务器。

图3是本发明实施例提供的一种tcp流量过滤方法的流程图,参见图3,该方法由前述tcp流量过滤系统执行,该方法包括:

步骤101:当服务器受到cc攻击时,基于服务器的源ip地址信任列表,确定发送给该服务器的tcp报文的源ip地址中的信任源ip地址和非信任源ip地址。

在本发明实施例中,信任源ip地址为处于源ip地址信任列表中的源ip地址,非信任源ip地址为不处于源ip地址信任列表中的源ip地址。

在本发明实施例中,服务器受到cc攻击是指服务器收到大量的tcp攻击流量,在本申请中,可以通过服务器的新建连接数、连接并发量和异常连接数来确定服务器是否受到cc攻击。

在本发明实施例中,tcp流量也即采用tcp协议传输给服务器的数据,由多个tcp报文组成。

在本发明实施例中,一个服务器可以与多个客户端建立tcp连接,从而收到多个客户端发送的tcp报文,向服务器发送的tcp报文的客户端的ip地址即为前述源ip地址。在服务器受到cc攻击时,需要对该服务器的tcp报文进行区分,将攻击端发送的tcp报文拦截下来,将正常客户端发送的tcp报文转发给服务器。

在本发明实施例中,源ip地址信任列表也即该服务器对应的客户端的白名单,该源ip地址信任列表中记载的源ip地址对应的客户端发送的tcp报文无需经过步骤103的再次验证,可以直接转发给服务器。每个服务器分别对应一个源ip地址信任列表,源ip地址信任列表中的ip地址是在正常传输时间(即未被攻击的时间)内通过学习获取到的,避免攻击端的ip地址混入其中。

在该步骤中,确定发送给该服务器的tcp报文的源ip地址中的信任源ip地址和非信任源ip地址,可以包括:在源ip地址信任列表查找发送给该服务器的tcp报文的源ip地址;如果查找到,则说明该源ip地址为信任源ip地址,如果没有查找到,则说明该源ip地址为非信任源ip地址。

步骤102:将信任源ip地址的tcp报文发送给服务器。

这里,信任源ip地址的tcp报文具体是指,tcp报文中源ip地址为信任源ip地址的tcp报文。在该步骤中可以将信任源ip地址的所有tcp报文发送给服务器。

对于信任源ip地址的tcp报文进行直接转发,降低误杀风险,避免tcp流量过滤方法对正常tcp业务造成影响。

步骤103:利用非信任源ip地址的syn报文速率基线、tcp报文长度基线和tcp报文速率基线,判断是否对非信任源ip地址的tcp报文进行拦截。

在步骤103中,先采用syn报文速率基线和非信任源ip地址的syn报文的传输速率进行比较,判断syn报文是否存在异常,进而确定是否需要拦截非信任源ip地址的tcp报文。如果syn报文异常,则确定需要拦截非信任源ip地址的tcp报文,丢弃该非信任源ip地址的tcp报文,避免对服务器进行攻击。

如果syn报文不存在异常,则利用tcp报文长度基线判断非信任源ip地址的tcp报文中是否存在异常大报文。如果非信任源ip地址的tcp报文中不存在异常大报文,则将信任源ip地址的tcp报文发送给服务器;如果非信任源ip地址的tcp报文中存在异常大报文,则利用tcp报文速率基线判断该非信任源ip地址是否异常。如果判断结果为该非信任源ip地址没有异常,则将该非信任源ip地址的tcp报文发送给服务器;如果判断结果为该非信任源ip地址异常,则将丢弃该非信任源ip地址的tcp报文。

本申请通过在服务器受到cc攻击时,先判断发送的服务器的tcp报文的每个源ip地址是否为信任源ip地址,如果是,则直接转发该信任源ip地址的tcp报文,不会影响正常客户端的tcp业务。如果不是,则利用syn报文速率基线、tcp报文长度基线和tcp报文速率基线对非信任源ip地址进行判断,判断该非信任源ip地址的tcp报文是否异常,进而确定是丢弃该非信任源ip地址的tcp报文,还是转发该非信任源ip地址的tcp报文。采用这种方式,无需在上行tcp报文中携带水印字段,因此无需对客户端的代码进行修改,成本低、门槛低,且适用于云服务场景。同时tcp报文长度不变,节省了上行流量成本。

图4是本发明实施例提供的另一种tcp流量过滤方法的流程图,参见图4,该方法由前述tcp流量过滤系统执行,该方法流程包括:

步骤201:统计单位时间内服务器的新建连接数、连接并发量和异常连接数。

具体地,tcp流量过滤系统接收路由器发送的镜像流量,该镜像流量既包括tcp流量,也包括其他流量,如udp流量。统计单位时间内各个服务器的tcp连接的新建连接数、连接并发量和异常连接数。

其中,按照tcp流量中报文的五元组(协议、源端口、源ip地址、目的端口、目的ip地址)来统计该服务器的tcp连接,并根据统计的该服务器的tcp连接确定出新建连接数和连接并发量。其中,新建连接数是指当前单位时间(例如一分钟)相比前一单位时间新增的tcp连接的数量,连接并发量是指当前单位时间内存在的tcp连接的数量。

其中,异常连接数是指当前单位时间内存在的tcp连接中存在异常的tcp连接的数量。异常的tcp连接可以采用如下方式确定:当tcp连接满足以下条件中的任一项,则确定该tcp连接异常:

tcp连接传输的报文的载荷以get字段开头,且报文长度在500字节以上。

tcp连接传输的报文的载荷单个字节连续重复次数超过预设值,且报文长度在500字节以上。

tcp连接传输的报文的载荷以#开头,且报文长度在500字节以上。

在tcp连接中传输的报文,报文的序列(seq)号不断增加,但是确认(ack)号保持不变。

因为经过大数据分析,发现现网的四层cc攻击具有共性,即经常出现这几种情况,而正常的业务极小会出现这种情况,所以把这些情况判断为异常tcp连接。

在本发明实施例中,路由器发送的镜像流量包括多个服务器的tcp流量,所以在统计时,对各个服务器的新建连接数、连接并发量和异常连接数分别进行统计。当镜像流量包括多个服务器的tcp流量时,后续各个步骤也需要针对各个服务器的tcp流量分别执行。

步骤202:根据服务器的新建连接数、连接并发量和异常连接数,判断该服务器是否受到cc攻击。

具体地,将单位时间内服务器的新建连接数与服务器的新建连接数安全阈值做比较,将单位时间内服务器的连接并发量与服务器的连接并发量安全阈值做比较,将单位时间内服务器的异常连接数与服务器的异常连接数安全阈值做比较。

当服务器的新建连接数、连接并发量和异常连接数中的任一个超过对应的安全阈值时,确定服务器受到cc攻击。当服务器的新建连接数、连接并发量和异常连接数均为超过对应的安全阈值时,确定服务器未受到cc攻击。

在本发明实施例中,新建连接数安全阈值、连接并发量安全阈值和异常连接数安全阈值可以采用如下方式确定:确定服务器的新建连接数基线和连接并发量基线。采用新建连接数基线乘以a得到新建连接数安全阈值,采用连接并发量基线乘以b得到连接并发量安全阈值,采用新建连接数基线乘以c得到异常连接数安全阈值,其中a和b大于1,c大于0且小于1。

其中,新建连接数基线具体为一个新建连接数的阈值,连接并发量基线具体为一个连接并发量的阈值,新建连接数基线和连接并发量基线可以先通过学习得到,然后存储在数据库中。

其中,a、b和c的取值可以根据实际需要选取,例如a和b的取值可为2,c的取值可以为2/3。

新建连接数基线和连接并发量基线刻画了正常业务行为,安全阈值则是用来限定异常的业务行为,因此需要在新建连接数基线和连接并发量基线的基础上乘以一个系数,即上述a、b、c。

进一步地,该方法还包括:记录服务器受到cc攻击的时间,服务器受到cc攻击的时间包括起始时间和结束时间。其中,起始时间是指步骤202中检测到服务器开始受到cc攻击的时间,结束时间为步骤202中检测到服务器开始不受cc攻击的时间。

步骤203:对服务器的tcp报文进行学习,得到源ip地址信任列表、syn报文速率基线、tcp报文长度基线和tcp报文速率基线。

其中,源ip地址信任列表也即该服务器对应的客户端的白名单,该源ip地址信任列表中记载的源ip地址对应的客户端发送的tcp报文无需经过步骤103的再次验证,可以直接转发给服务器。每个服务器分别对应一个源ip地址信任列表,源ip地址信任列表中的ip地址是在正常传输时间内通过学习获取到的,避免攻击端的ip地址混入其中。

在本发明实施例中,源ip地址信任列表的学习过程如下:

记录的tcp报文的源ip地址。在记录时需要同时记录源ip地址和对应的时间,即获取到该源ip地址发送的tcp报文的时间。

将服务器受到cc攻击时记录的源ip地址删除。

选取在连续n个周期中的至少m个周期出现过的源ip地址,生成源ip地址信任列表,n和m为整数,且n≥m>1。

其中,连续n个周期可以根据需要进行设计,例如连续7个周期,如7天。如果7个周期中的2个周期出现过的源ip地址,则确定为信任源ip地址,写入源ip地址信任列表。

在本发明实施例中,syn报文速率基线、tcp报文长度基线和tcp报文速率基线的学习过程如下:

获取服务器的tcp报文中syn报文速率、tcp报文长度和tcp报文速率。在记录时需要同时记录syn报文速率、tcp报文长度和tcp报文速率,以及对应的时间和源ip地址,其中syn报文速率、tcp报文速率可以每个单位时间记录一次,例如1分钟记录一次。

将服务器受到cc攻击时获取到的syn报文速率、tcp报文长度和tcp报文速率删除。

周期性地根据获取到的syn报文速率、tcp报文长度和tcp报文速率,生成syn报文速率基线、tcp报文长度基线和tcp报文速率基线。

在该步骤中,每个周期时间结束时,对该周期时间内获得的服务器的syn报文速率、tcp报文长度和tcp报文速率进行统计,得到syn报文速率基线、tcp长度基线和tcp报文速率基线。每个周期生成syn报文速率基线、tcp长度基线和tcp报文速率基线后,对上个周期得到的syn报文速率基线、tcp长度基线和tcp报文速率基线进行更新。

示例性地,周期时间可以为一天。

其中,周期性地根据获取到的syn报文速率、tcp报文长度和tcp报文速率,生成syn报文速率基线、tcp报文长度基线和tcp报文速率基线,包括:

计算周期内syn报文速率的标准差,并将syn报文速率的平均值加上x倍的标准差,得到第一数值,如果第一数值小于或等于第一速率阈值,则采用第一速率阈值作为syn报文速率基线,如果第一数值大于第一速率阈值,则采用第一数值作为syn报文速率基线,x大于1。例如,将syn报文速率的平均值加上5倍的标准差(即平均值+5×标准差),得到第一数值,如果第一数值小于或等于20个/秒,则采用20作为syn报文速率基线,如果第一数值大于20,则采用第一数值作为syn报文速率基线。

计算周期内tcp报文长度的平均值和标准差,并将tcp报文长度的平均值加上y倍的标准差,得到第二数值,如果第二数值小于或等于报文长度阈值,则采用报文长度阈值作为tcp报文长度基线,如果第二数值大于报文长度阈值,则采用第二数值作为tcp报文长度基线,y大于1。其中,y的取值可以为5,第二数值可以根据实际需要选取,单位为字节。

计算周期内tcp报文速率的平均值和标准差,并将tcp报文速率的平均值加上z倍的标准差,得到第三数值,如果第三数值小于或等于第二速率阈值,则采用第二速率阈值作为tcp报文速率基线,如果第三数值大于第二速率阈值,则采用第三数值作为tcp报文速率基线,z大于1。其中,z的取值可以为5,第三数值可以根据实际需要选取,单位为个/秒。

可选地,在步骤203中还可以学习源ip报文速率基线,其学习方法与tcp报文速率基线相同,区别在于源ip报文速率基线与发送到服务器的各种流量(例如tcp、udp、控制报文协议(internetcontrolmessageprotocol,icmp)流量等)的报文的速率相关。

进一步地,tcp流量过滤系统还需要对前述新建连接数基线和连接并发量基线进行学习。

在本发明实施例中,新建连接数基线和连接并发量基线的学习过程如下:

记录单位时间内服务器的新建连接数和连接并发量。在记录时需要同时记录新建连接数和连接并发量以及对应的时间。新建连接数和连接并发量的记录方法可以与步骤201相同。

将服务器受到cc攻击时记录的新建连接数和连接并发量删除。

周期性地根据获取到的单位时间内服务器的新建连接数和连接并发量,生成新建连接数基线和连接并发量基线。

其中,周期性地根据获取到的单位时间内服务器的新建连接数和连接并发量,生成新建连接数基线和连接并发量基线,包括:

计算周期内新建连接数的平均值和标准差,并将新建连接数的平均值加上p倍的标准差,得到第四数值,如果第四数值小于或等于连接数阈值,则采用连接数阈值作为新建连接数基线,如果第四数值大于连接数阈值,则采用第四数值作为新建连接数基线,p大于1。例如,将新建连接数的标准差乘以5倍,得到第四数值,如果第四数值小于或等于400,则采用400作为新建连接数基线,如果第四数值大于400,则采用第四数值作为新建连接数基线。

计算周期内连接并发量的平均值和标准差,并将连接并发量的平均值加上q倍的标准差,得到第五数值,如果第五数值小于或等于并发量阈值,则采用并发量阈值作为连接并发量基线,如果第五数值大于并发量阈值,则采用第五数值作为连接并发量基线,q大于1。其中,q的取值可以为5,第五数值可以根据实际需要选取。

在该方法流程中,步骤201、202、203由图2所示的tcp流量过滤系统中的检测学习子系统执行。

步骤204:保存源ip地址信任列表、syn报文速率基线、tcp报文长度基线和tcp报文速率基线。

为了表述方便下文采用指纹特征基线数据来指代源ip地址信任列表、syn报文速率基线、tcp报文长度基线和tcp报文速率基线。

在本发明实施例中,保存指纹特征基线数据是指,将所述指纹特征基线数据存入数据库中。数据库中存储有各个服务器的指纹特征基线数据。具体地,数据库中可以包括指纹特征基线数据及其对应的服务器的地址,从而保证后续过程中能够根据服务器的地址获取到对应的指纹特征基线数据。

该数据库可以设置在tcp流量过滤系统中的控制子系统上,步骤204由tcp流量过滤系统中的检测学习子系统执行,检测学习子系统将指纹特征基线数据存入控制子系统的数据库中。由于指纹特征基线数据是周期生成的,所以数据库中的指纹特征基线数据也是周期性更新。其中,更新是指用新的指纹特征基线数据替换数据库中原来的指纹特征基线数据。

步骤205:当服务器受到cc攻击时,基于服务器的源ip地址信任列表,确定发送给该服务器的tcp报文的源ip地址中的信任源ip地址和非信任源ip地址,信任源ip地址为处于源ip地址信任列表中的源ip地址,非信任源ip地址为不处于源ip地址信任列表中的源ip地址。

在本发明实施例中,步骤205可以包括:根据服务器的地址从数据库中获取服务器的源ip地址信任列表;确定每个tcp报文的源ip地址是否处于源ip地址信任列表中。

步骤205可以由tcp流量过滤系统中的防护子系统执行。

可选地,该方法还包括:当服务器受到cc攻击时,生成告警信息。

其中,告警信息可以包括接收时间、服务器的地址及攻击类型。其中,攻击类型为cc攻击。

该告警信息由检测学习子系统生成,然后输出到控制子系统和防护子系统。当防护子系统接收到告警信息时,根据告警信息中的服务器的地址从控制子系统获取服务器的指纹特征基线数据。

步骤206:将信任源ip地址的tcp报文发送给服务器。

在本发明实施例中,步骤206由tcp流量过滤系统中的防护子系统执行,步骤206可以包括:防护子系统与路由器之间进行流量牵引,将服务器的tcp报文牵引到防护子系统。然后根据指纹特征基线数据对服务器的tcp报文进行过滤,将信任源ip地址的tcp报文返回给路由器,由路由器发送给服务器。

其中,防护子系统与路由器之间进行流量牵引,将服务器的tcp报文牵引到tcp流量过滤系统可以通过如下方式实现:防护子系统通过与路由器建立的边界网关协议(bordergatewayprotocol,bgp)邻居关系。向路由器发布服务器的牵引路由,将服务器的tcp报文发送到防护子系统。

具体地,路由器中可以虚拟出两个路由器:第一虚拟路由器和第二虚拟路由器,第一虚拟路由器负责接收服务器的tcp报文,第二虚拟路由器负责将服务器的tcp报文发送给服务器。防护子系统向第一虚拟路由器发布服务器的牵引路由,该牵引路由的下一跳为防护子系统,该牵引路由的子网掩码比第一虚拟路由器学习到的服务器的路由的子网掩码长,根据最长掩码匹配原则,第一虚拟路由器采用该牵引路由作为服务器的路由。第一虚拟路由器将接收到的服务器的tcp报文发送给防护子系统,防护子系统进行tcp流量过滤。在服务器结束被攻击后,防护子系统可以向第一虚拟路由器发送宣告牵引路由无效的信息,使服务器未受到cc攻击时的tcp报文不再发送给防护子系统。

防护子系统将过滤后的tcp报文返回路由器,由路由器发送给服务器。

具体地,防护子系统在进行tcp流量过滤后将服务器的tcp报文发送给前述第二虚拟路由器,由第二虚拟路由器发送给服务器。

步骤207:利用非信任源ip地址的syn报文速率基线、tcp报文长度基线和tcp报文速率基线,判断是否对非信任源ip地址的tcp报文进行拦截。

在本发明实施例中,判断是否对非信任源ip地址的tcp报文进行拦截,包括:

判断非信任源ip地址的syn报文的传输速率是否超过syn报文速率基线。这里,需要先确定非信任源ip地址的syn报文的传输速率,然后比较非信任源ip地址的syn报文的传输速率和syn报文速率基线的大小。由于攻击端比正常客户端建立连接的次数更频繁,因此通过syn报文速率基线可以确定出非信任源ip地址是否为攻击端。

当非信任源ip地址的syn报文的传输速率超过syn报文速率基线时,拦截非信任源ip地址的tcp报文,即将该非信任源ip地址的tcp报文丢弃。进一步地,该方法还可以包括:将丢弃了tcp报文的非信任源ip地址拉黑,该非信任源ip地址的后续tcp报文全部进行拦截。

当非信任源ip地址的syn报文的传输速率未超过syn报文速率基线时,判断非信任源ip地址的tcp报文中是否存在报文长度超过tcp报文长度基线且速率超过tcp报文速率基线的报文。这里,需要先确定非信任源ip地址的tcp报文的报文长度和速率,比较时可以先比较报文长度,再比较速率,如果报文长度超过tcp报文长度基线,再比较速率,如果报文长度未超过tcp报文长度基线,无需再比较速率。当然,上述比较顺序也可以是先比较速率,再比较报文长度。由于攻击端发送的报文比正常客户端发送的报文更长、速率更快,因此通过tcp报文长度基线和tcp报文速率基线可以确定出非信任源ip地址是否为攻击端。

如果存在报文长度超过tcp报文长度基线且速率超过tcp报文速率基线的报文,则拦截非信任源ip地址的tcp报文;如果不存在报文长度超过tcp报文长度基线且速率超过tcp报文速率基线的报文,则将非信任源ip地址的tcp报文发送给服务器。

其中,将非信任源ip地址的tcp报文发送给服务器的方式参见步骤206。

本申请通过在服务器受到cc攻击时,先判断发送的服务器的tcp报文的每个源ip地址是否为信任源ip地址,如果是,则直接转发该信任源ip地址的tcp报文,不会影响正常客户端的tcp业务。如果不是,则利用syn报文速率基线对非信任源ip地址进行判断,如果判断如果syn报文异常,则拦截非信任源ip地址的tcp报文,丢弃该非信任源ip地址的tcp报文,避免对服务器进行攻击。如果syn报文不存在异常,则进一步采用tcp报文长度基线和tcp报文速率基线判断该非信任源ip地址的tcp报文是否异常。如果判断结果为该非信任源ip地址的tcp报文没有异常,则将非信任源ip地址的tcp报文发送给服务器。如果判断结果为该非信任源ip地址的tcp报文异常,则丢弃该非信任源ip地址的tcp报文。在这种方式中,不需要在上行tcp报文中携带水印字段,因此无需对客户端的代码进行修改,成本低、门槛低,同时tcp报文长度不变,节省了上行流量成本。另外,上述源ip地址信任列表、syn报文速率基线、tcp报文长度基线和tcp报文速率基线均通过学习而来,保证该方案能够适应不同的网络,应用范围广。

图5是本发明实施例提供的一种tcp流量过滤装置的结构示意图,参见图5,该装置300包括:判断模块301和过滤模块302。

判断模块301用于当服务器受到cc攻击时,基于服务器的源ip地址信任列表,确定发送给该服务器的tcp报文的源ip地址中的信任源ip地址和非信任源ip地址,信任源ip地址为处于源ip地址信任列表中的源ip地址,非信任源ip地址为不处于源ip地址信任列表中的源ip地址。过滤模块302用于将信任源ip地址的tcp报文发送给服务器;利用非信任源ip地址的syn报文速率基线、tcp报文长度基线和tcp报文速率基线,判断是否对非信任源ip地址的tcp报文进行拦截。

在本发明实施例中,该过滤模块302,用于判断非信任源ip地址的syn报文的传输速率是否超过syn报文速率基线。当非信任源ip地址的syn报文的传输速率超过syn报文速率基线时,拦截非信任源ip地址的tcp报文。当非信任源ip地址的syn报文的传输速率未超过syn报文速率基线时,判断非信任源ip地址的tcp报文中是否存在报文长度超过tcp报文长度基线且速率超过tcp报文速率基线的报文。如果存在报文长度超过tcp报文长度基线且速率超过tcp报文速率基线的报文,则拦截非信任源ip地址的tcp报文,如果不存在报文长度超过tcp报文长度基线且速率超过tcp报文速率基线的报文,则将非信任源ip地址的tcp报文发送给服务器。

进一步地,该装置还包括:学习模块303和存储模块304。

学习模块303用于对服务器的tcp报文进行学习,得到源ip地址信任列表、syn报文速率基线、tcp报文长度基线和tcp报文速率基线。存储模块304用于保存源ip地址信任列表、syn报文速率基线、tcp报文长度基线和tcp报文速率基线。

在本发明实施例中,该学习模块303用于记录的tcp报文的源ip地址。将服务器受到cc攻击时记录的源ip地址删除。选取在连续n个周期中的至少m个周期出现过的源ip地址,生成源ip地址信任列表,n和m为整数,且n≥m>1。

在本发明实施例中,该学习模块303用于获取服务器的tcp报文中syn报文速率、tcp报文长度和tcp报文速率。将服务器受到cc攻击时获取到的syn报文速率、tcp报文长度和tcp报文速率删除。周期性地根据获取到的syn报文速率、tcp报文长度和tcp报文速率,生成syn报文速率基线、tcp报文长度基线和tcp报文速率基线。

在本发明实施例中,该学习模块303用于计算周期内syn报文速率的平均值和标准差,并将syn报文速率的平均值加上x倍的标准差,得到第一数值,如果第一数值小于或等于第一速率阈值,则采用第一速率阈值作为syn报文速率基线,如果第一数值大于第一速率阈值,则采用第一数值作为syn报文速率基线,x大于1。计算周期内tcp报文长度的平均值和标准差,并将tcp报文长度的平均值加上y倍的标准差,得到第二数值,如果第二数值小于或等于报文长度阈值,则采用报文长度阈值作为tcp报文长度基线,如果第二数值大于报文长度阈值,则采用第二数值作为tcp报文长度基线,y大于1。计算周期内tcp报文速率的平均值和标准差,并将tcp报文速率的平均值加上z倍的标准差,得到第三数值,如果第三数值小于或等于第二速率阈值,则采用第二速率阈值作为tcp报文速率基线,如果第三数值大于第二速率阈值,则采用第三数值作为tcp报文速率基线,z大于1。

进一步地,该装置还包括:检测模块305。

该检测模块305用于统计单位时间内服务器的新建连接数、连接并发量和异常连接数。将单位时间内服务器的新建连接数与服务器的新建连接数安全阈值做比较,将单位时间内服务器的连接并发量与服务器的连接并发量安全阈值做比较,将单位时间内服务器的异常连接数与服务器的异常连接数安全阈值做比较。当服务器的新建连接数、连接并发量和异常连接数中的任一个超过对应的安全阈值时,确定服务器受到cc攻击。

在本发明实施例中,该学习模块303还用于记录单位时间内服务器的新建连接数和连接并发量。将服务器受到cc攻击时记录的新建连接数和连接并发量删除。周期性地根据获取到的单位时间内服务器的新建连接数和连接并发量,生成新建连接数基线和连接并发量基线。采用新建连接数基线乘以a得到新建连接数安全阈值,采用连接并发量基线乘以b得到连接并发量安全阈值,采用新建连接数基线乘以c得到异常连接数安全阈值,其中a和b大于1,c大于0且小于1。

在本发明实施例中,该学习模块303用于计算周期内新建连接数的平均值和标准差,并将新建连接数的平均值加上p倍的标准差,得到第四数值,如果第四数值小于或等于连接数阈值,则采用连接数阈值作为新建连接数基线,如果第四数值大于连接数阈值,则采用第四数值作为新建连接数基线,p大于1。计算周期内连接并发量的平均值和标准差,并将连接并发量的平均值加上q倍的标准差,得到第五数值,如果第五数值小于或等于并发量阈值,则采用并发量阈值作为连接并发量基线,如果第五数值大于并发量阈值,则采用第五数值作为连接并发量基线,q大于1。

需要说明的是:上述实施例提供的tcp流量过滤装置在实现tcp流量过滤方法时,仅以上述各功能模块的划分进行举例说明,实际应用中,可以根据需要而将上述功能分配由不同的功能模块完成,即将装置的内部结构划分成不同的功能模块,以完成以上描述的全部或者部分功能。另外,上述实施例提供的tcp流量过滤装置与tcp流量过滤方法实施例属于同一构思,其具体实现过程详见方法实施例,这里不再赘述。

图6是本发明实施例提供的一种服务器的结构示意图。该服务器可以是tcp流量过滤系统。具体来讲:

tcp流量过滤系统400包括中央处理单元(cpu)401、包括随机存取存储器(ram)402和只读存储器(rom)403的系统存储器404,以及连接系统存储器404和中央处理单元401的系统总线405。tcp流量过滤系统400还包括帮助计算机内的各个器件之间传输信息的基本输入/输出系统(i/o系统)406,和用于存储操作系统413、应用程序414和其他程序模块415的大容量存储设备407。

基本输入/输出系统406包括有用于显示信息的显示器408和用于用户输入信息的诸如鼠标、键盘之类的输入设备409。其中显示器408和输入设备409都通过连接到系统总线405的输入输出控制器410连接到中央处理单元401。基本输入/输出系统406还可以包括输入输出控制器410以用于接收和处理来自键盘、鼠标、或电子触控笔等多个其他设备的输入。类似地,输入输出控制器410还提供输出到显示屏、打印机或其他类型的输出设备。

大容量存储设备407通过连接到系统总线405的大容量存储控制器(未示出)连接到中央处理单元401。大容量存储设备407及其相关联的计算机可读介质为tcp流量过滤系统400提供非易失性存储。也就是说,大容量存储设备407可以包括诸如硬盘或者cd-rom驱动器之类的计算机可读介质(未示出)。

不失一般性,计算机可读介质可以包括计算机存储介质和通信介质。计算机存储13介质包括以用于存储诸如计算机可读指令、数据结构、程序模块或其他数据等信息的任何方法或技术实现的易失性和非易失性、可移动和不可移动介质。计算机存储介质包括ram、rom、eprom、eeprom、闪存或其他固态存储其技术,cd-rom、dvd或其他光学存储、磁带盒、磁带、磁盘存储或其他磁性存储设备。当然,本领域技术人员可知计算机存储介质不局限于上述几种。上述的系统存储器404和大容量存储设备407可以统称为存储器。

根据本发明的各种实施例,tcp流量过滤系统400还可以通过诸如因特网等网络连接到网络上的远程计算机运行。也即tcp流量过滤系统400可以通过连接在系统总线405上的网络接口单元411连接到网络412,或者说,也可以使用网络接口单元411来连接到其他类型的网络或远程计算机系统(未示出)。

上述存储器还包括一个或者一个以上的程序,一个或者一个以上程序存储于存储器中,被配置由cpu执行。cpu401通过执行该一个或一个以上程序来实现图3或图4所示的tcp流量过滤方法。

本发明实施例还提供了一种非临时性计算机可读存储介质,当存储介质中的指令由tcp流量过滤系统的处理器执行时,使得tcp流量过滤系统能够执行图3或图4所示实施例提供的tcp流量过滤方法。

一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述图3或图4所示实施例提供的tcp流量过滤方法。

本领域普通技术人员可以理解实现上述实施例的全部或部分步骤可以通过硬件来完成,也可以通过程序来指令相关的硬件完成,所述的程序可以存储于一种计算机可读存储介质中,上述提到的存储介质可以是只读存储器,磁盘或光盘等。

以上所述仅为本发明的较佳实施例,并不用以限制本发明,凡在本发明的精神和原则之内,所作的任何修改、等同替换、改进等,均应包含在本发明的保护范围之内。

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