一种防止同步包攻击的方法和装置制造方法及图纸

技术编号:12862048 阅读:197 留言:0更新日期:2016-02-13 10:39
本发明专利技术提出一种防止同步包攻击的方法和装置,其中方法包括:预先在内核注册钩子函数、创建跟踪监测链表和黑名单链表,并设置同步包阀值和重检间隔时间;利用钩子函数解析客户端向服务器发送的TCP连接数据包,其中客户端和服务器第一次握手发的TCP连接数据包为同步数据包;当来自同一IP地址的同步数据包的数量达到同步包阀值时,将所述IP地址添加到跟踪监测链表中,对所述IP地址对应的客户端后续发送的TCP连接数据包进行跟踪;对跟踪的TCP连接数据包进行解析,如果确定所述TCP连接数据包是攻击数据包,则将所述TCP连接数据包对应的IP地址添加到黑名单链表中。本发明专利技术能够防止遭受SYN包攻击。

【技术实现步骤摘要】

本专利技术涉及通信
,尤其涉及一种防止同步(SYN,synchronous)包攻击的方法和装置。
技术介绍
在传输控制协议/ 因特网互联协议(TCP/IP,Transmiss1n Control Protocol/Internet Protocol)协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。假设一台客户端与有一台服务器进行通讯,三次握手的过程如下:第一次握手,建立连接时,客户端发送TCP包(标识位SYN = j)到服务器,并进入SYN_SEND状态,此时客户端等待服务器确认此TCP包;第二次握手,服务器收到TCP包,必须确认客户的SYN(ack = j+1),同时自己也发送一个TCP包(syn = k),即SYN+ACK包,此时服务器进入SYN_RECV状态;第三次握手,客户端收到服务器的TCP包含标识位SYN+ACK,向服务器发送确认包ACK(ack = k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。上述三次握手完成后,客户端便可以与服务器进行数据通信,从三次握手步骤来看,如果客户端在第三次握手时不发送SYN+ACK包,那么服务器就收不到此包,这种情况下服务器端一般会重试再次发送SYN+ACK给客户端并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟),此时等待过程中会占用一定的系统资源,如果来自多个端口的SYN+ACK包都无法收到,那么多个线程将处于等待连接,这样系统资源可能会最终被耗尽,出现死机或者系统重启情况,这种攻击即为SYN flood攻击,可见SYN包攻击就是利用了 TCP/IP协议TCP建立连接的第三次握手漏洞来实施对服务器攻击。如果内网中某台机器作为服务器对外提供某些应用服务,在无防火墙的情况下,来自外部的大量SYN包攻击路由器下的主机,如果主机件性能不优,轻则导致正常业务不能工作,严重时可能导致主机宕机或网络瘫痪。现有技术中,在路由器上的解决方法是直接在用户空间通过iptables命令行执行一些限制SYN包数目的命令,但是,如果检测到达到阀值就将用户数据丢掉,且对用户误操作没有修正的余地。
技术实现思路
为了解决上述技术问题,本专利技术提供了一种防止同步包攻击的方法和装置,能够防止当前路由器的内网设备遭受SYN包攻击,有效的保证内网设备由于SYN包攻击造成设备资源耗尽而宕机和网络瘫痪。本专利技术提供了一种防止同步包攻击的方法,包括:预先在内核注册钩子函数、创建跟踪监测链表和黑名单链表,并设置同步包阀值和重检间隔时间;利用钩子函数解析客户端向服务器发送的TCP连接数据包,其中客户端和服务器第一次握手发的TCP连接数据包为同步数据包;当来自同一 IP地址的同步数据包的数量达到同步包阀值时,将所述IP地址添加到跟踪监测链表中,对所述IP地址对应的客户端后续发送的TCP连接数据包进行跟踪;对跟踪的TCP连接数据包进行解析,如果确定所述TCP连接数据包是攻击数据包,则将所述TCP连接数据包对应的IP地址添加到黑名单链表中。进一步地,所述跟踪监测链表包括IP地址字段和TCP连接数据包字段;所述跟踪监测链表的长度为要跟踪检测的IP地址的数目。进一步地,所述黑名单链表包括IP地址字段和黑名单标识位字段;所述黑名单标识位为第一值时,表示所述IP地址永久加入黑名单链表,所述IP地址对应的客户端发出的TCP连接数据包直接丢弃;所述黑名单标识位为第二值时,表示所述IP地址重检间隔时间内在加入黑名单链表,所述IP地址对应的客户端发出的TCP连接数据包在重检间隔时间内无法发送到服务器。进一步地,所述同步包阀值表示每秒允许来自同一 IP地址的同步数据包的最大数量;所述重检间隔时间表示第一次将IP地址加入黑名单链表后,第二次检测到同步数据包达到同步包阀值的时间。进一步地,所述方法还包括:通过Jiffes变量差值统计每秒同步数据包的数量;启动时将该Jiffies变量初始化为0,每次钩子函数对同步数据包进行解析中断处理程序时增加Jiffies变量的值。进一步地,所述TCP连接数据包包括序列字段和确认字段;所述对跟踪的TCP连接数据包进行解析的步骤包括:根据序列字段和确认字段,对跟踪的TCP连接数据包进行解析。进一步地,所述根据序列字段和确认字段,对跟踪的TCP连接数据包进行解析的步骤包括:在客户端和服务器的第一次握手时,截获客户端向服务器发送的第一 TCP连接数据包,获取第一 TCP连接数据包的序列值,设为X,其中X为整数;将第一 TCP连接数据包放行发送到服务器;在客户端和服务器的第二次握手时,截获服务器向客户端返回作为应答的第二 TCP连接数据包,获取第二 TCP连接数据包的确认值,所述第二 TCP连接数据包的确认值为X+1 ;获取第二 TCP连接数据包的序列值,设为Y,其中Y为整数。进一步地,所述方法还包括:判断在预设时间内客户端和服务器是否进行第三次握手;如果截获到客户端向服务器发送的第三TCP连接数据包,获取第三TCP连接数据包序列值,所述第三TCP连接数据包的序列值为Y+1,则确定客户端不是攻击客户端;如果没有截获到客户端向服务器发送的第三TCP连接数据包,而截获到进行第一次握手的第一 TCP连接数据包,则确定客户端是攻击客户端,所述攻击客户端发出的TCP连接数据包是攻击数据包。进一步地,所述如果确定所述TCP连接数据包是攻击数据包,则将所述TCP连接数据包对应的IP地址添加到黑名单链表中之后,还包括:将所述IP地址对应的黑名单标识位设置为第二值;在所述间隔重检间隔时间内,如果截获到客户端向服务器发送的TCP连接数据包,判断所述客户端的IP地址是否在黑名单链表中;如果所述IP地址在黑名单链表中,则将所述TCP连接数据包进行丢弃。进一步地,所述方法好包括:经过所述间隔重检间隔时间后,再次统计所述IP地址对应的每秒同步数据包的数量;如果同步数据包的数量达到同步包阈值,则将所述IP地址对应的黑名单标识位设置为第一值;如果同步数据包的数量没有达到同步包阈值,则将所述IP地址从黑名单链表中删除。本专利技术还提供了一种防止同步包攻击的装置,包括:设置模块,用于预先在内核注册钩子函数、创建跟踪监测链表和黑名单链表,并设置同步包阀值和重检间隔时间;第一处理模块,用于利用钩子函数解析客户端向服务器发送的TCP连接数据包,其中客户端和服务器第一次握手发的TCP连接数据包为同步数据包;第二处理模块,用于当来自同一 IP地址的同步数据包的数量达到同步包阀值时,将所述IP地址添加到跟踪监测链表中,对所述IP地址对应的客户端后续发送的TCP连接数据包进行跟踪;第三处理模块,用于对跟踪的TCP连接数据包进行解析,如果确定所述TCP连接数据包是攻击数据包,则将所述TCP连接数据包对应的IP地址添加到黑名单链表中。进一步地,所述跟踪监测链表包括IP地址字段和TCP连接数据包字段;所述跟踪监测链表的长度为要跟踪检测的IP地址的数目;所述黑名单链表包括IP地址字段和黑名单标识位字段;所述黑名单标识位为第一值时,表示所述IP地址永久加入黑名单链表,所述IP地址对应的客户端发出的TCP连接本文档来自技高网
...

【技术保护点】
一种防止同步包攻击的方法,其特征在于,包括:预先在内核注册钩子函数、创建跟踪监测链表和黑名单链表,并设置同步包阀值和重检间隔时间;利用钩子函数解析客户端向服务器发送的TCP连接数据包,其中客户端和服务器第一次握手发的TCP连接数据包为同步数据包;当来自同一IP地址的同步数据包的数量达到同步包阀值时,将所述IP地址添加到跟踪监测链表中,对所述IP地址对应的客户端后续发送的TCP连接数据包进行跟踪;对跟踪的TCP连接数据包进行解析,如果确定所述TCP连接数据包是攻击数据包,则将所述TCP连接数据包对应的IP地址添加到黑名单链表中。

【技术特征摘要】

【专利技术属性】
技术研发人员:张德黎
申请(专利权)人:上海斐讯数据通信技术有限公司
类型:发明
国别省市:上海;31

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1