发明内容
本发明实施例提供一种防止服务器被攻击的方法、检测装置及监控设备,以防御来自于匿名代理或傀儡主机的攻击。
根据本发明的一方面,提供一种防止服务器被攻击的方法,包括:
确定发送至服务器的请求访问的数据包中的目的统一资源定位(Uniform Resource Locator,URL)为需要验证的URL;
将所述数据包中的URL进行归一化处理,并统计所述数据包到达时间相对应的时间段的所述归一化处理后的URL被访问的次数;所述归一化处理的目的在于将访问同一页面的不同URL的差异参数进行屏蔽;
判断所述时间段的所述归一化处理后的URL被访问的次数是否超过所述时间段的所述归一化处理后的URL被访问的门限值;
若超过,则阻断所述数据包的访问请求;
其中,根据所述时间段的平均被访问次数获取所述归一化处理后的URL在所述时间段的被访问的门限值,包括:
将所述时间段的最大允许被访问的次数与所述时间段的平均被访问次数的比值以获取阈值;
将所述时间段的平均被访问次数与所述阈值比值进行相乘以获取所述时间段的被访问的门限值。。
根据本发明的另一方面,还提供一种应用于防止服务器被攻击的检测装置,包括:
运算模块,用于当确定发送至服务器的请求访问的数据包中的目的统一资源定位(Uniform Resource Locator,URL)为需要验证的URL时,将所述数据包中的URL进行归一化处理,并统计所述数据包到达时间相对应的时间段的所述归一化处理后的URL被访问的次数;所述归一化处理的目的在于将访问同一页面的不同URL的差异参数进行屏蔽;
判断模块,用于判断所述时间段的所述归一化处理后的URL被访问的次数是否超过所述时间段的所述归一化处理后的URL被访问的门限值,当判断超过时,判断所述服务器被所述数据包攻击;
其中,根据所述时间段的平均被访问次数获取所述归一化处理后的URL在所述时间段的被访问的门限值,包括:
将所述时间段的最大允许被访问的次数与所述时间段的平均被访问次数的比值以获取阈值;
将所述时间段的平均被访问次数与所述阈值比值进行相乘以获取所述时间段的被访问的门限值。
根据本发明的另一方面,还提供一种应用于防止服务器被攻击的监控设备,终端通过接入设备与监控设备通信连接,所述监控设备与服务器通信连接,包括:
检测装置,用于检测所述服务器是否被所述终端发送至所述服务器的访问请求的数据包攻击;
发送装置,用于当检测所述服务器没有被所述终端发送至所述服务器的访问请求的数据包攻击时,转发所述数据包至所述服务器;
所述检测装置还用于当确定发送至服务器的请求访问的数据包中的目的统一资源定位(Uniform Resource Locator,URL)为需要验证的URL时,将所述数据包中的URL进行归一化处理,并统计所述数据包到达时间相对应的时间段的所述归一化处理后的URL被访问的次数,及判断所述时间段的所述归一化处理后的URL被访问的次数是否超过所述时间段的所述归一化处理后的URL被访问的门限值;所述归一化处理的目的在于将访问同一页面的不同URL的差异参数进行屏蔽;
其中,根据所述时间段的平均被访问次数获取所述归一化处理后的URL在所述时间段的被访问的门限值,包括:
将所述时间段的最大允许被访问的次数与所述时间段的平均被访问次数的比值以获取阈值;
将所述时间段的平均被访问次数与所述阈值比值进行相乘以获取所述时间段的被访问的门限值。
采用上述提供的防止服务器被攻击的方法、检测装置及监控设备,对被访问的URL的连接次数进行限制,无论对被访问的URL的连接是否来自于匿名代理或傀儡主机或正常的代理主机,当次数超过某一时段的门限值,认为服务器受到攻击,可达到防御来自于匿名代理或傀儡主机的攻击,并且不会阻断正常的代理主机的访问。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
图1为本发明实施例的防止服务器被攻击的方法。在本实施方式中,该检测方法对发送至服务器的请求访问的数据包进行检测,以防止服务器被攻击。
步骤S100,获取发送至服务器的请求访问的HTTP数据包,并获取该数据包的目的统一资源定位(Uniform Resource Locator,URL)。
步骤S102,判断该URL是否为需要验证的URL。在本实施方式中,通过预设或根据URL的负载情况的方式来指定需要验证的URL。在本实施方式中,通过根据URL的请求和响应之间的时间间隔长短来确定该URL的负载情况。在本实施方式中,若URL的请求和响应之间的时间间隔大于某一个门限值,则认为URL的请求和响应之间的时间间隔长,并确定该URL为超负载,若URL的请求和响应之间的时间间隔不大于该门限值,则认为URL的请求和响应之间的时间间隔短,并确定该URL不为超负载,其中,该门限值可以根据网络的实际情况进行设定。当该URL为超负载时,则需要对该URL进行验证,反之则不需要对该URL进行验证。
当判断该URL为需要验证的URL,则进入步骤S104。当判断该URL为不需要验证的URL,则进入步骤S110。
步骤S104,将该数据包对应的URL进行归一化处理,并统计该数据包到达时间相对应的时段的该归一化处理后的URL被访问的次数。在本实施方式中,时段可以但不限于以半小时为单位,也可以以一小时为单位。
步骤S106,判断该时段的该归一化处理后的URL被访问的次数是否超过该时段的归一化处理后的URL被访问的门限值。若判断超过该时段的归一化处理后的URL被访问的门限值,即相当于认为此时段对归一化处理后的URL进行恶意攻击,也就是此时归一化处理前的URL对应的数据包对服务器进行攻击,则进入步骤S108。若判断未超过该门限值,即相当于认为此时段对归一化处理后的URL不进行恶意攻击,也就是此时归一化处理前 的URL对应的数据包对服务器不进行攻击,则进入步骤S110。
步骤S108,阻断该数据包的访问请求。
步骤S110,转发该数据包至该服务器。
图2为本发明实施例的图1中的步骤S104的第一种实施方式。在本实施方式中,步骤S200,对获取的该URL进行归一化处理。在本实施方式中的归一化处理可以但不限于公知技术中的归一化处理。在本实施方式中,归一化处理的目的在于将访问同一页面的不同URL的差异参数进行屏蔽,即不同的URL可以为访问同一个页面,比如,访问同一页面的两个URL分别为:http://www.aaa.com/bbs/?uid=1&inde=10和http://www.aaa.com/bbs/?uid=2&inde=20,其差异参数为uid=1&inde=10和uid=2&inde=20,因此,经过归一化处理后,就将差异参数屏蔽掉,归一化处理后的URL为http://www.aaa.com/bbs。在本实施方式中,URL中的“?”后面的参数认为是差异参数。
步骤S202,根据当前URL被访问的时间确定该归一化处理后的URL被访问的时间段,并根据归一化处理后的URL及被访问的时间段获取该归一化处理后的URL在该时间段的当天被访问的次数。在本实施方式中,可以直接将归一化处理后的URL通过哈希算法获取该归一化处理后的URL在该时间段的当天被访问的次数,也可以先将归一化处理后的URL转换为一个唯一标识该归一化处理后的URL的标识,再将该标识通过哈希算法获取该归一化处理后的URL在该时间段的当天被访问的次数,其中,这个标识可以为URL指纹。
步骤S204,将该归一化处理后的URL在该时间段的当天被访问的次数加1。
图3为本发明实施例的图1中的步骤S104的第二种实施方式。
在本实施方式中,步骤S300与图2中的步骤S200相同,此处不重复描述。
步骤S302,根据归一化处理后的URL获取该归一化处理后的URL的被访问的次数。在本步骤中的被访问的次数可以包括但不限于当天的多个时间段的被访问的次数或多天的多个时间段的被访问的次数。在本实施方式中,可以直接将归一化处理后的URL通过哈希算法获取该归一化处理后的URL的被访问的次数,也可以先将归一化处理后的URL转换为一个唯一标识该归一化处理后的URL的标识,再将该标识通过哈希算法获取该归一化处理后的URL的被访问的次数,其中,这个标识可以为URL指纹。
步骤S304,根据当前URL被访问的时间确定该归一化处理后的URL被访问的时间段。在本实施方式中,当前URL被访问的时间为数据包到达时间。
步骤S306,判断该归一化处理后的URL前一次被访问的时间是否属于该归一化处理后的URL被访问的时间段。若该归一化处理后的URL前一次被访问的时间不属于该归一化处理后的URL被访问的时间段,即在当天的该归一化处理后的URL被访问的时间段中,该归一化处理后的URL还没有被访问,则进入步骤S308。若该归一化处理后的URL前一次被访问的时间属于该归一化处理后的URL被访问的时间段,即在当天的该归一化处理后的URL被访问的时间段中,该归一化处理后的URL已经被访问过,则执行步骤S310。
步骤S308,将该归一化处理后的URL在该被访问的时间段的次数清0。在本实施方式中,由于在步骤S302中,获取的该归一化处理后的URL的被访问的次数可能不是当天被访问的次数,因此,需要进行清0,以记录当天该时间段被访问的次数。
步骤S310,将该归一化处理后的URL在该时间段的当天被访问的次数加1。
步骤S312,更新该归一化处理后的URL当天的被访问的时间。
图4为本发明实施例的图1中的步骤S106的具体流程图。
在本实施方式中,步骤S400,判断该归一化处理后的URL在当天被访问前是否有7天的该归一化处理后的URL在该时段被访问的统计次数。在本实施方式中,7天的该归一化处理后的URL在该时段被访问的统计次数可以为7天的该归一化处理后的URL在工作日的该时段被访问的统计次数,也可以为7天的该归一化处理后的URL在非工作日的该时段被访问的统计次数,其中,工作日是指星期一至星期五,非工作日为星期六和星期日。在本实施方式中,7天的该归一化处理后的URL在该时段被访问的统计次数还可以为连续7天的该归一化处理后的URL在该时段被访问的统计次数,也可以为非连续7天的该归一化处理后的URL在该时段被访问的统计次数,其中,非连续7天的情况是指设备由于未工作或断电或死机造成的该天或多天没有数据纪录的情况,该非连续7天的统计次数为离当天最近的7天的统计次数。在本实施方式中,本周的星期一和上周的星期五为连续工作日。
若判断有7天的统计次数,则进入步骤S402;若判断没有7天的统计次数,则进入步骤S412。
步骤S402,累加该7天的该归一化处理后的URL在该时段的被访问统计次数。
步骤S404,减去该7天中的该归一化处理后的URL在该时段的被访问的最大统计次数。
步骤S406,获取该7天的该归一化处理后的URL在该时段的平均被访问次数。在本实施方式中,可以包括获取该7天的该归一化处理后的URL在工作日的该时段的平均被访问次数,也可以包括获取该7天的该归一化处理后的URL在非工作日的该时段的平均被访问次数。在本实施方式中,该归一化处理后的URL在该时段的平均被访问次数是不断的进行更新,即这7天的该归一化处理后的URL在该时段的被访问统计次数是不断更新,从而致使平均被访问次数也是不断的进行更新。
步骤S408,根据该时段的平均被访问次数获取该归一化处理后的URL在该时段的被访问的门限值。在本实施方式中,将该时段的平均被访问次数与阈值比值进行相乘以获取该时段的被访问的门限值,其中,将该时段的最大允许被访问的次数与该时段的平均被访问次数的比值以获取该阈值,该比值总是大于1。在本实施方式中,该时段的最大允许被访问的次数为预设值,也可以根据实际操作情况进行调整。由于该归一化处理后的URL在该时段的平均被访问次数是不断的进行更新,因此,该归一化处理后的URL在该时段的被访问的门限值也是不断的进行更新。
步骤S410,判断该时段的平均被访问次数是否超过该时段的被访问的门限值。
步骤S412,不获取该归一化处理后的URL在该时段的被访问的门限值。由于此时没有该归一化处理后的URL在该时段的被访问的门限值,因此,可以认为该归一化处理后的URL在该时段的被访问的次数没有超过该门限值,即可以转发归一化处理前的URL对应的数据包至服务器。
本发明实施例提供的防止服务器被攻击的方法,先获取发送至服务器的数据包的需要验证的URL并进行归一化处理,统计数据包到时刻相对应的时段的该归一化处理后的URL被访问的次数,并判断该次数是否超过该时段的门限值,从而判断该服务器是否被攻击,也就是无论对被访问的URL的连接是否来自于匿名代理或傀儡主机或正常的代理主机,本实施例对被访问的URL的连接次数进行限制,当次数超过某一时段的门限值,认为服务器受到攻击,与现有技术相比,可达到防御来自于匿名代理或傀儡主机的攻击,并且不会阻断正常的代理主机的访问,另一方面,由于门限值是不断的随时进行更新,可使在防御攻击时具有良好的自适应性,并且,将一天中的多个时段分别设定被访问的URL的连接次数的门限值,从而有较高的准确性。
图5为本发明实施例的监控设备的应用环境图。在本实施方式中,终 端5通过接入设备6与监控设备7通信连接,监控设备7与服务器8通信连接,用于检测发送至服务器8的请求访问的数据包是否对服务器8进行攻击。在本实施方式中,终端5可以为代理主机,也可以为代理主机的客户机,也可以为主机,通过接入设备6发送至请求访问的数据包至服务器8。
图6为本发明实施例的监控设备的结构图。在本实施方式中,监控设备7包括检测装置71和发送装置72。检测装置71用于获取发送至服务器8的请求访问的数据包,并检测发送至服务器8的请求访问的数据包是否对服务器8进行攻击。发送装置72用于当检测装置71检测发送至服务器8的请求访问的数据包不会对服务器8进行攻击时,则转发该数据包至服务器8。
检测装置71包括获取模块710、判断模块712、存储模块714、运算模块716及阻断模块718。
获取模块710用于获取发送至服务器8的请求访问的数据包,并获取该数据包的目的URL。在本实施方式中,该数据包为HTTP数据包。
判断模块712用于判断获取模块710获取的该URL是否为需要验证的URL。在本实施方式中,判断模块712通过查询存储模块714存储的需要验证的URL列表以判断该获取模块710获取的该URL是否为需要验证的URL。
发送装置72还用于当判断模块712判断获取模块710获取的该URL为不需要验证的URL时,转发该URL对应的数据包至服务器8。
运算模块716用于当判断模块712判断获取模块710获取的该URL为需要验证的URL时,将该数据包对应的URL进行归一化处理,并统计该数据包到达时间相对应的时段的该归一化处理后的URL被访问的次数。
运算模块716还用于根据数据包到达时间确定该归一化处理后的URL被访问的时间段,并根据归一化处理后的URL及被访问的时间段获取该归 一化处理后的URL在该时间段的当天被访问的次数,及将该归一化处理后的URL在该时间段的当天被访问的次数加1。
运算模块716还可用于先根据归一化处理后的URL获取该归一化处理后的URL的被访问的次数,再根据当前URL被访问的时间确定该归一化处理后的URL被访问的时间段,并经由判断模块712判断该归一化处理后的URL前一次被访问的时间是否属于该归一化处理后的URL被访问的时间段。在本实施方式中,在本步骤中的被访问的次数可以包括但不限于当天的多个时间段的被访问的次数或多天的多个时间段的被访问的次数。若该归一化处理后的URL前一次被访问的时间不属于该归一化处理后的URL被访问的时间段,即在当天的该归一化处理后的URL被访问的时间段中,该归一化处理后的URL还没有被访问;若该归一化处理后的URL前一次被访问的时间属于该归一化处理后的URL被访问的时间段,即在当天的该归一化处理后的URL被访问的时间段中,该归一化处理后的URL已经被访问过。在本实施方式中,判断模块710还用于通过查询存储装置714存储的该归一化处理后的URL被访问的时间来判断该归一化处理后的URL前一次被访问的时间是否属于该归一化处理后的URL被访问的时间段。
运算模块716还用于当判断该归一化处理后的URL前一次被访问的时间不属于该归一化处理后的URL被访问的时间段时,将该归一化处理后的URL在该被访问的时间段的次数清0以重新统计,并将该归一化处理后的URL在该时间段的当天被访问的次数加1。
判断模块712还用于当运算模块716统计该数据包到时间相对应的时段的该归一化处理后的URL被访问的次数后,判断该归一化处理后的URL在当天被访问前是否有7天的该归一化处理后的URL在该时段被访问的统计次数。
运算模块716还用于当判断模块712判断该归一化处理后的URL在当天被访问前有7天的该归一化处理后的URL在该时段被访问的统计次数 时,获取该7天的该归一化处理后的URL在该时段的平均被访问次数,及根据该时段的平均被访问次数获取该归一化处理后的URL在该时段的被访问的门限值。
判断模块712还用于判断该时段的该归一化处理后的URL被访问的次数是否超过该时段的归一化处理后的URL被访问的门限值。若判断超过该时段的归一化处理后的URL被访问的门限值,即相当于认为此时段对归一化处理后的URL进行恶意攻击,也就是此时对服务器进行攻击,此时,通知阻断模块718阻断此时的归一化处理前的URL对应的该数据包对服务器8的访问请求。阻断模块718用于阻断该数据包的对服务器8的访问请求。
发送装置72用于当判断未超过该门限值时,即相当于认为此时段对归一化处理后的URL不进行恶意攻击,也就是此时归一化处理前的URL对应的数据包对服务器8不进行攻击,转发该数据包至服务器8。
本发明实施例提供的监控设备和检测装置,先获取发送至服务器的数据包的需要验证的URL并进行归一化处理,统计数据包到时刻相对应的时段的该归一化处理后的URL被访问的次数,并判断该次数是否超过该时段的门限值,从而判断该服务器是否被攻击,也就是无论对被访问的URL的连接是否来自于匿名代理或傀儡主机或正常的代理主机,本实施例对被访问的URL的连接次数进行限制,当次数超过某一时段的门限值,认为服务器受到攻击,与现有技术相比,可达到防御来自于匿名代理或傀儡主机的攻击,并且不会阻断正常的代理主机的访问,另一方面,由于门限值是不断的随时进行更新,可使在防御攻击时具有良好的自适应性,并且,将一天中的多个时段分别设定访问的URL的连接次数的门限值,从而有较高的准确性。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法 的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
最后应说明的是:以上实施例仅用以说明本发明的技术方案而非对其进行限制,尽管参照较佳实施例对本发明进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对本发明的技术方案进行修改或者等同替换,而这些修改或者等同替换亦不能使修改后的技术方案脱离本发明技术方案的精神和范围。