发明内容
本发明实施例提供一种挑战黑洞攻击防御方法及装置,可以针对攻击者的危害程度进行动态地过滤。
本发明实施例提供一种基于用户请求可疑度的挑战黑洞攻击防御方法,该方法包括:
根据捕获的数据包判断用户请求的WEB页面是否是动态页面;
如果是动态页面,则每个用户对应一个用户请求可疑度;
根据所述用户请求可疑度对用户的动态页面请求进行过滤。
本发明实施例还提供一种基于用户请求可疑度的挑战黑洞攻击防御装置,该装置包括:
第一判断模块,用于根据捕获的数据包判断用户请求的WEB页面是否是动态页面,如果是动态页面,则每个用户对应一个用户请求可疑度;
用户请求可疑度计算模块,用于计算用户请求的可疑度值;
防御处理模块,用于根据存储模块中存储的用户请求可疑度对用户的动态页面请求进行过滤。
本发明实施例为每个请求动态页面的新用户建立一个可疑数据表,该可疑数据表用于存储用户请求可疑度,新用户的用户请求可疑度初始值是建立可疑数据表时系统自动赋予的,之后用户每次发出新的动态页面请求,其可疑度也发生变化,更新可疑数据表。所以在启动防御功能时,可以根据可疑数据表中用户可疑度的不同进行动态地过滤,高可疑度的用户先过滤,低可疑度的用户后过滤,这样可以提高CPU利用率,避免资源的浪费。
具体实施方式
为了使本发明的目的、技术方案及优点更加清楚明白,以下结合附图及实施方式,对本发明进行进一步详细说明。应当理解,此处所描述的具体实施方式仅仅用以解释本发明,并不用于限定本发明。
请参考图2,为本发明实施例一的流程示意图,其步骤包括:
步骤201、根据捕获的数据包判断所请求的页面是否是动态页面,如果是则进行步骤202;
步骤202、判断该请求动态页面的用户是否是新用户,如果是则进行步骤203,否则进行步骤204;
步骤203、为新用户建立可疑数据表,该数据表包括两个表项:用户的源IP地址和用户请求可疑度,其中用户请求可疑度的初始值是建立数据表时系统自动赋予的;
步骤204、计算用户请求可疑度,并更新可疑数据表;
步骤205、根据可疑数据表中的用户可疑度值对用户进行过滤。
本发明利用可疑数据表存储用户请求可疑度,新用户的用户请求可疑度初始值是建立可疑数据表时系统自动赋予的,之后用户每次发出新的动态页面请求,其可疑度也发生变化,所以在启动防御功能时,可以根据可疑数据表中用户可疑度的不同进行动态地过滤,高可疑度的用户先过滤,低可疑度的用户后过滤,这样可以提高CPU利用率,避免资源的浪费。
请参考图3,为本发明实施例二的流程示意图,其步骤包括:
步骤301、捕获请求访问WEB服务器页面的数据包;
步骤302、判断用户请求访问的页面是否是动态页面,动态网页多以.asp、.jsp、.php、.perl、.cgi、.aspx、.dcsp、.cfm等形式为后缀,并且在动态网页网址中有一个标志性的符号“?”。通过提取捕获数据包的URL字段,查看其中是否含有动态页面的后缀名,可以判断出请求页面是否为动态页面;如果是则进行步骤303,否则回到步骤301;
步骤303、判断该请求动态页面的用户是否是新用户,根据捕获数据包的用户的IP地址可以判断出是否是新用户,如果是则进行步骤304,否则进行步骤305;
步骤304、为新用户建立可疑数据表,该数据表可以是数据库的形式也可以是数据列表的形式。可疑数据表包括两个参数,从数据包采集的用户源IP地址以及用户请求可疑度。用户请求可疑度的初始值是创建数据表的时候系统自动赋予的,比如0;
步骤305、计算用户请求可疑度
用户请求可疑度可以用可疑度函数T=f(t,n,...)计算,其中t为每个用户初次请求的响应时间,n为每个用户请求目标服务器上动态页面的次数,T与t和n成正比例关系。其中,响应时间t为收到服务器返回状态码的时刻减去发送请求的时刻;n,即每个用户请求目标服务器上动态页面的次数采用以下方法获得:为每个初次访问用户设置访问次数计数器Nip(初始值为1),以后每当收到用户新的动态页面请求时,都将用户对应的Nip加1,最后得到的Nip的值就是所述n。此外,还可以根据被保护服务器、网络的实际情况,增加或删除参数,从而提高防御效果。
步骤306、用步骤305计算出的用户请求可疑度值替换可疑数据表中的原有的用户请求可疑度值;
步骤307、监控服务器的CPU使用率是否到达警戒线,如果达到了进行步骤308。可以理解的是,步骤307并非是执行完步骤306之后才开始进行的,监控服务器的CPU使用率是否到达警戒线的动作可以是一直处于运行状态的,也可以在整个过程中的任一步骤前后启动。
步骤308、启动防御处理功能。具体防御处理可有多种实施方式,本发明发明实施例的防御处理功能的具体步骤如下,如图4所示:
步骤3081、判断CPU使用率是否大于事先设定的第一阈值u1,比如50%,如果不大于50%则继续监控CPU使用率,如果超过50%则进行步骤3082;
步骤3082、判断CPU使用率是否大于事先设定的第二阈值u2(第二阈值大于第一阈值),比如80%,如果超过80%,则进行步骤3083,如果不超过则进行步骤3084;
步骤3083、阻止所有用户对动态页面的请求,包括新用户的请求;
步骤3084、判断用户请求可疑度是否超过事先设定的第三阈值x,比如0.6,如果没有超过0.6服务器将继续响应该用户的动态页面请求,否则进行步骤3085;
步骤3085、阻止该用户对动态页面的请求。
另一种防御处理功能的具体步骤如下:
判断CPU使用率是否大于事先设定的第一阈值,比如50%,如果不大于50%则继续监控CPU使用率,如果超过50%则继续判断CPU使用率是否大于事先设定的第二阈值(第二阈值大于第一阈值),比如80%,如果超过80%,则阻止所有用户对动态页面的请求,包括新用户的请求,如果不超过则判断用户请求可疑度是否超过事先设定的第三阈值x,比如0.6,如果没有超过0.6服务器将继续响应该用户的动态页面请求,否则阻止该用户对动态页面的请求。需要注意的是这里的第三阈值x可以随着CPU使用率的变化而变化,比如随着CPU使用率的提高,第三阈值可能降为0.5,此时则只需过滤用户可疑度超过0.5的用户了。
另一种防御处理功能的具体步骤如下:
判断CPU使用率是否大于事先设定的第一阈值,比如50%,如果不大于50%则继续监控CPU使用率,如果超过50%则继续判断CPU使用率是否大于事先设定的第二阈值(第二阈值大于第一阈值),比如80%,如果超过80%,则阻止所有用户对动态页面的请求,包括新用户的请求,如果不超过则过滤掉可疑数据表中用户请求可疑度值最大的用户请求,继续判断CPU使用率,如果使用率仍然在50%至80%之间,继续过滤掉可疑数据表中用户请求可疑度值最大的用户请求,直至CPU使用率小于50%。如下表所示:
用户请求可疑度 | CPU使用率 |
0.8 | 75% |
0.6 | 70% |
0.5 | 45% |
…… | …… |
用户请求可疑度最大值为0.8,过滤掉该用户后,CPU使用率为75%,仍然大于50%,此时用户请求可疑度最大值为0.6,将该用户过滤掉,同时监控到CPU使用率下降为70%,但仍然超过50%,继续将用户请求可疑度最大的用户,即用户请求可疑度值为0.5的用户过滤掉,此时监控CPU使用率下降为45%,低于50%,说明服务器已经恢复正常,可以满足所有用户的请求了。
本发明实施例通过实时监控CPU使用率,如果CPU使用率大于第二阈值,则拒绝所有用户的动态页面请求,包括新用户的请求,如果CPU使用率在第一阈值和第二阈值之间,则根据用户可疑度进行动态过滤,用户可疑度高的先过滤,可疑度低的后过滤,这样可以避免一味地阻止所有用户的请求,有利于资源的利用,提高CPU的利用率。
CC攻击发生及启动本方案所提防御措施后CPU利用率如图6所示:
从图中可以看到,攻击产生之后,CPU的使用程度陡然升高,使用率一直处于顶端,计算机处于瘫痪状态,采取防御措施以后,CPU使用率下降,利用率升高,计算机恢复到正常状态。
本发明实施例CC攻击防御装置如图5所示,包括第一判断模块501、第二判断模块502、存储模块503、用户可疑度计算模块504、第三判断模块505和防御处理模块506。
第一判断模块501,用于判断用户请求的WEB页面是否是动态页面,第一判断模块501之前还包括一个数据包捕获处理模块507,用于捕获流入和流出目标服务器的数据包。
第二判断模块502,用于判断该请求用户是否是新用户,根据数据包中用户的IP地址可以进行判断,如果该用户为新用户则在存储模块503里为其创建一个可疑数据表,否则利用用户请求可疑度计算模块504计算用户请求可疑度;
存储模块503,用于存储每个用户的源IP地址及其用户请求可疑度,用户请求可疑度的初始值是创建数据表时系统自动赋予的;
用户请求可疑度计算模块504,用于计算用户请求可疑度值;
第三判断模块505,用于判断是否需要启动防御功能。实时监控WEB服务器CPU使用率,将CPU使用率与事先设定的第一阈值和第二阈值(第一阈值小于第二阈值)进行比较,如果CPU使用率大于第一阈值并且小于第二阈值则根据所述存储模块中用户请求可疑度的不同进行过滤,如果CPU使用率小于第一阈值则不启动防御处理模块506,满足所有用户的动态页面请求,如果CPU使用率大于第二阈值则启动过滤模块5062过滤所有用户的动态页面请求,包括新用户的请求。
防御处理模块506,用于根据存储模块503中可疑数据表中的信息对用户请求进行过滤。
防御处理模块506包括第四判断模块5061和过滤模块5062。
第四判断模块5061用于判断用户请求可疑度是否大于事先设定的第三阈值,如果是则启动过滤模块5062阻止该用户对动态页面的请求。
同时,防御处理模块506也可以只包括过滤模块5062。
当CPU使用率大于第一阈值小于第二阈值时,启动过滤模块5062过滤掉用户可疑度值最大的用户的请求,然后继续启动第三判断模块505判断CPU使用率是否仍然大于第一阈值小于第二阈值,如果是则继续启动过滤模块5062过滤掉此时用户可疑度值最大的用户请求,直至CPU使用率小于第一阈值。
本发明实施例CC攻击防范装置位于WEB服务器或者网络的边界路由器上。
本发明实施例可以准确地识别CC攻击,并且利用防御处理模块506动态地采用相应的防御措施,从而实现对目标主机的有效保护。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分步骤是可以通过程序来指令相关的硬件来完成,所述程序可以存储于计算机可读取存储介质中,所述存储介质为ROM/RAM、磁碟、光盘等。
以上所述,仅为本发明较佳的具体实施方式,但本发明的保护范围并不局限于此,任何熟悉本技术领域的技术人员在本发明揭露的技术范围内,可轻易想到的变化或替换,都应涵盖在本发明的保护范围之内。因此,本发明的保护范围应该以权利要求的保护范围为准。