首页 > 专利 > 上海斐讯数据通信技术有限公司 > 一种防止同步包攻击的方法和装置专利详情

一种防止同步包攻击的方法和装置   0    0

有效专利 查看PDF
专利申请流程有哪些步骤?
专利申请流程图
申请
申请号:指国家知识产权局受理一件专利申请时给予该专利申请的一个标示号码。唯一性原则。
申请日:提出专利申请之日。
2015-12-07
申请公布
申请公布指发明专利申请经初步审查合格后,自申请日(或优先权日)起18个月期满时的公布或根据申请人的请求提前进行的公布。
申请公布号:专利申请过程中,在尚未取得专利授权之前,国家专利局《专利公报》公开专利时的编号。
申请公布日:申请公开的日期,即在专利公报上予以公开的日期。
2016-03-09
授权
授权指对发明专利申请经实质审查没有发现驳回理由,授予发明专利权;或对实用新型或外观设计专利申请经初步审查没有发现驳回理由,授予实用新型专利权或外观设计专利权。
2018-07-31
预估到期
发明专利权的期限为二十年,实用新型专利权期限为十年,外观设计专利权期限为十五年,均自申请日起计算。专利届满后法律终止保护。
2035-12-07
基本信息
有效性 有效专利 专利类型 发明专利
申请号 CN201510894043.3 申请日 2015-12-07
公开/公告号 CN105323259B 公开/公告日 2018-07-31
授权日 2018-07-31 预估到期日 2035-12-07
申请年 2015年 公开/公告年 2018年
缴费截止日 2022-01-07
分类号 H04L29/06 主分类号 H04L29/06
是否联合申请 独立申请 文献类型号 B
独权数量 1 从权数量 15
权利要求数量 16 非专利引证数量 0
引用专利数量 8 被引证专利数量 0
非专利引证
引用专利 CN101175013A、CN101567812A、CN101707539A、CN103685294A、CN104219215A、US2008271146A1、US2002103916A1、CN101136917A 被引证专利
专利权维持 4 专利申请国编码 CN
专利事件 转让 事务标签 公开、实质审查、授权、权利转移
申请人信息
申请人 第一申请人
专利权人 上海斐讯数据通信技术有限公司 当前专利权人 台州市吉吉知识产权运营有限公司
发明人 张德黎 第一发明人 张德黎
地址 上海市松江区思贤路3666号 邮编 201616
申请人数量 1 发明人数量 1
申请人所在省 上海市 申请人所在市 上海市松江区
代理人信息
代理机构
专利代理机构是经省专利管理局审核,国家知识产权局批准设立,可以接受委托人的委托,在委托权限范围内以委托人的名义办理专利申请或其他专利事务的服务机构。
上海硕力知识产权代理事务所 代理人
专利代理师是代理他人进行专利申请和办理其他专利事务,取得一定资格的人。
郭桂峰
摘要
本发明提出一种防止同步包攻击的方法和装置,其中方法包括:预先在内核注册钩子函数、创建跟踪监测链表和黑名单链表,并设置同步包阀值和重检间隔时间;利用钩子函数解析客户端向服务器发送的TCP连接数据包,其中客户端和服务器第一次握手发的TCP连接数据包为同步数据包;当来自同一IP地址的同步数据包的数量达到同步包阀值时,将所述IP地址添加到跟踪监测链表中,对所述IP地址对应的客户端后续发送的TCP连接数据包进行跟踪;对跟踪的TCP连接数据包进行解析,如果确定所述TCP连接数据包是攻击数据包,则将所述TCP连接数据包对应的IP地址添加到黑名单链表中。本发明能够防止遭受SYN包攻击。
  • 摘要附图
    一种防止同步包攻击的方法和装置
  • 说明书附图:图1
    一种防止同步包攻击的方法和装置
  • 说明书附图:图2
    一种防止同步包攻击的方法和装置
法律状态
序号 法律状态公告日 法律状态 法律状态信息
1 2020-11-17 专利权的转移 登记生效日: 2020.11.04 专利权人由上海斐讯数据通信技术有限公司变更为台州市吉吉知识产权运营有限公司 地址由201616 上海市松江区思贤路3666号变更为318015 浙江省台州市椒江区洪家街道东环大道2388号农港城A区2-3167号
2 2018-07-31 授权
3 2016-03-09 实质审查的生效 IPC(主分类): H04L 29/06 专利申请号: 201510894043.3 申请日: 2015.12.07
4 2016-02-10 公开
权利要求
权利要求书是申请文件最核心的部分,是申请人向国家申请保护他的发明创造及划定保护范围的文件。
1.一种防止同步包攻击的方法,其特征在于,包括:
预先在内核注册钩子函数、创建跟踪监测链表和黑名单链表,并设置SYN数据包阀值和重检间隔时间;
利用所述钩子函数解析客户端向服务器发送的TCP连接数据包,其中客户端和服务器第一次握手发送的所述TCP连接数据包为SYN数据包;
当来自同一IP地址的所述SYN数据包的数量达到SYN数据包阀值时,将所述IP地址添加到所述跟踪监测链表中,对所述IP地址对应的客户端后续发送的所述TCP连接数据包进行跟踪;
对跟踪的TCP连接数据包进行解析,如果确定所述TCP连接数据包是攻击数据包,则将所述TCP连接数据包对应的IP地址添加到所述黑名单链表中,经过所述重检间隔时间后,再次统计添加到所述黑名单链表中的所述IP地址对应的所述SYN数据包数量,如果所述SYN数据包数量达到所述SYN数据包阈值,则将所述IP地址永久保存在黑名单链表中;如果所述SYN数据包数量没有达到所述SYN数据包阈值,则将所述IP地址从所述黑名单链表中删除。

2.如权利要求1所述的防止同步包攻击的方法,其特征在于,所述跟踪监测链表包括IP地址字段和TCP连接数据包字段;所述跟踪监测链表的长度为要跟踪检测的IP地址的数目。

3.如权利要求1所述的防止同步包攻击的方法,其特征在于,所述黑名单链表包括IP地址字段和黑名单标识位字段;
所述黑名单标识位为第一值时,表示所述IP地址永久加入黑名单链表,所述IP地址对应的客户端发出的TCP连接数据包直接丢弃;所述黑名单标识位为第二值时,表示所述IP地址在加入黑名单链表的重检间隔时间内,所述IP地址对应的客户端发出的TCP连接数据包无法发送到服务器。

4.如权利要求1所述的防止同步包攻击的方法,其特征在于,所述同步包阀值表示每秒允许来自同一IP地址的同步数据包的最大数量;
所述重检间隔时间表示第一次将IP地址加入黑名单链表后,第二次检测到同步数据包达到同步包阀值的时间。

5.如权利要求1所述的防止同步包攻击的方法,其特征在于,所述方法还包括:
通过Jiffes变量差值统计每秒同步数据包的数量;
启动时将该Jiffies变量初始化为0,每次钩子函数对同步数据包进行解析中断处理程序时增加Jiffies变量的值。

6.如权利要求1所述的防止同步包攻击的方法,其特征在于,所述TCP连接数据包包括序列字段和确认字段;
所述对跟踪的TCP连接数据包进行解析的步骤包括:
根据序列字段和确认字段,对跟踪的TCP连接数据包进行解析。

7.如权利要求6所述的防止同步包攻击的方法,其特征在于,所述根据序列字段和确认字段,对跟踪的TCP连接数据包进行解析的步骤包括:
在客户端和服务器的第一次握手时,截获客户端向服务器发送的第一TCP连接数据包,获取第一TCP连接数据包的序列值,设为X,其中X为整数;将第一TCP连接数据包放行发送到服务器;
在客户端和服务器的第二次握手时,截获服务器向客户端返回作为应答的第二TCP连接数据包,获取第二TCP连接数据包的确认值,所述第二TCP连接数据包的确认值为X+1;获取第二TCP连接数据包的序列值,设为Y,其中Y为整数。

8.如权利要求7所述的防止同步包攻击的方法,其特征在于,所述方法还包括:
判断在预设时间内客户端和服务器是否进行第三次握手;
如果截获到客户端向服务器发送的第三TCP连接数据包,获取第三TCP连接数据包序列值,所述第三TCP连接数据包的序列值为Y+1,则确定客户端不是攻击客户端;
如果没有截获到客户端向服务器发送的第三TCP连接数据包,而截获到进行第一次握手的第一TCP连接数据包,则确定客户端是攻击客户端,所述攻击客户端发出的TCP连接数据包是攻击数据包。

9.如权利要求3所述的防止同步包攻击的方法,其特征在于,所述如果确定所述TCP连接数据包是攻击数据包,则将所述TCP连接数据包对应的IP地址添加到黑名单链表中之后,还包括:
将所述IP地址对应的黑名单标识位设置为第二值;
在所述间隔重检间隔时间内,如果截获到客户端向服务器发送的TCP连接数据包,判断所述客户端的IP地址是否在黑名单链表中;
如果所述IP地址在黑名单链表中,则将所述TCP连接数据包进行丢弃。

10.如权利要求9所述的防止同步包攻击的方法,其特征在于,所述方法还包括:
经过所述间隔重检间隔时间后,再次统计所述IP地址对应的每秒同步数据包的数量;
如果同步数据包的数量达到同步包阈值,则将所述IP地址对应的黑名单标识位设置为第一值;
如果同步数据包的数量没有达到同步包阈值,则将所述IP地址从黑名单链表中删除。

11.一种防止同步包攻击的装置,其特征在于,所述装置包括:
设置模块,用于预先在内核注册钩子函数、创建跟踪监测链表和黑名单链表,并设置SYN数据包阀值和重检间隔时间;
第一处理模块,用于利用所述钩子函数解析客户端向服务器发送的TCP连接数据包,其中客户端和服务器第一次握手发送的所述TCP连接数据包为SYN数据包;
第二处理模块,用于当来自同一IP地址的所述SYN数据包的数量达到SYN数据包阀值时,将所述IP地址添加到所述跟踪监测链表中,对所述IP地址对应的客户端后续发送的所述TCP连接数据包进行跟踪;
第三处理模块,用于对跟踪的TCP连接数据包进行解析,如果确定所述TCP连接数据包是攻击数据包,则将所述TCP连接数据包对应的IP地址添加到所述黑名单链表中,经过所述重检间隔时间后,再次统计添加到所述黑名单链表中的所述IP地址对应的所述SYN数据包数量,如果所述SYN数据包数量达到所述SYN数据包阈值,则将所述IP地址永久保存在黑名单链表中;如果所述SYN数据包数量没有达到所述SYN数据包阈值,则将所述IP地址从所述黑名单链表中删除。

12.如权利要求11所述的防止同步包攻击的装置,其特征在于,所述跟踪监测链表包括IP地址字段和TCP连接数据包字段;所述跟踪监测链表的长度为要跟踪检测的IP地址的数目;
所述黑名单链表包括IP地址字段和黑名单标识位字段;所述黑名单标识位为第一值时,表示所述IP地址永久加入黑名单链表,所述IP地址对应的客户端发出的TCP连接数据包直接丢弃;所述黑名单标识位为第二值时,表示所述IP地址在加入黑名单链表的重检间隔时间内,所述IP地址对应的客户端发出的TCP连接数据包无法发送到服务器。

13.如权利要求11所述的防止同步包攻击的装置,其特征在于,所述同步包阀值表示每秒允许来自同一IP地址的同步数据包的最大数量;所述重检间隔时间表示第一次将IP地址加入黑名单链表后,第二次检测到同步数据包达到同步包阀值的时间。

14.如权利要求11所述的防止同步包攻击的装置,其特征在于,所述TCP连接数据包包括序列字段和确认字段;
所第二处理模块,具体用于:
在客户端和服务器的第一次握手时,截获客户端向服务器发送的第一TCP连接数据包,获取第一TCP连接数据包的序列值,设为X,其中X为整数;将第一TCP连接数据包放行发送到服务器;
在客户端和服务器的第二次握手时,截获服务器向客户端返回作为应答的第二TCP连接数据包,获取第二TCP连接数据包的确认值,所述第二TCP连接数据包的确认值为X+1;获取第二TCP连接数据包的序列值,设为Y,其中Y为整数;
判断在预设时间内客户端和服务器是否进行第三次握手;
如果截获到客户端向服务器发送的第三TCP连接数据包,获取第三TCP连接数据包序列值,所述第三TCP连接数据包的序列值为Y+1,则确定客户端不是攻击客户端;
如果没有截获到客户端向服务器发送的第三TCP连接数据包,而截获到进行第一次握手的第一TCP连接数据包,则确定客户端是攻击客户端,所述攻击客户端发出的TCP连接数据包是攻击数据包。

15.如权利要求12所述的防止同步包攻击的装置,其特征在于,所述第三处理模块,还用于:将所述IP地址对应的黑名单标识位设置为第二值;在所述间隔重检间隔时间内,如果截获到客户端向服务器发送的TCP连接数据包,判断所述客户端的IP地址是否在黑名单链表中;如果所述IP地址在黑名单链表中,则将所述TCP连接数据包进行丢弃。

16.如权利要求15所述的防止同步包攻击的装置,其特征在于,所述第三处理模块,还用于:经过所述间隔重检间隔时间后,再次统计所述IP地址对应的每秒同步数据包的数量;
如果同步数据包的数量达到同步包阈值,则将所述IP地址对应的黑名单标识位设置为第一值;如果同步数据包的数量没有达到同步包阈值,则将所述IP地址从黑名单链表中删除。
说明书

技术领域

[0001] 本发明涉及通信技术领域,尤其涉及一种防止同步(SYN,synchronous)包攻击的方法和装置。

背景技术

[0002] 在传输控制协议/因特网互联协议(TCP/IP,Transmission Control Protocol/Internet Protocol)协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接。
[0003] 假设一台客户端与有一台服务器进行通讯,三次握手的过程如下:
[0004] 第一次握手,建立连接时,客户端发送TCP包(标识位SYN=j)到服务器,并进入SYN_SEND状态,此时客户端等待服务器确认此TCP包;
[0005] 第二次握手,服务器收到TCP包,必须确认客户的SYN(ack=j+1),同时自己也发送一个TCP包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态;
[0006] 第三次握手,客户端收到服务器的TCP包含标识位SYN+ACK,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。
[0007] 上述三次握手完成后,客户端便可以与服务器进行数据通信,从三次握手步骤来看,如果客户端在第三次握手时不发送SYN+ACK包,那么服务器就收不到此包,这种情况下服务器端一般会重试再次发送SYN+ACK给客户端并等待一段时间后丢弃这个未完成的连接,这段时间的长度我们称为SYN Timeout,一般来说这个时间是分钟的数量级(大约为30秒-2分钟),此时等待过程中会占用一定的系统资源,如果来自多个端口的SYN+ACK包都无法收到,那么多个线程将处于等待连接,这样系统资源可能会最终被耗尽,出现死机或者系统重启情况,这种攻击即为SYN flood攻击,可见SYN包攻击就是利用了TCP/IP协议TCP建立连接的第三次握手漏洞来实施对服务器攻击。
[0008] 如果内网中某台机器作为服务器对外提供某些应用服务,在无防火墙的情况下,来自外部的大量SYN包攻击路由器下的主机,如果主机件性能不优,轻则导致正常业务不能工作,严重时可能导致主机宕机或网络瘫痪。
[0009] 现有技术中,在路由器上的解决方法是直接在用户空间通过iptables命令行执行一些限制SYN包数目的命令,但是,如果检测到达到阀值就将用户数据丢掉,且对用户误操作没有修正的余地。

发明内容

[0010] 为了解决上述技术问题,本发明提供了一种防止同步包攻击的方法和装置,能够防止当前路由器的内网设备遭受SYN包攻击,有效的保证内网设备由于SYN包攻击造成设备资源耗尽而宕机和网络瘫痪。
[0011] 本发明提供了一种防止同步包攻击的方法,包括:预先在内核注册钩子函数、创建跟踪监测链表和黑名单链表,并设置同步包阀值和重检间隔时间;利用钩子函数解析客户端向服务器发送的TCP连接数据包,其中客户端和服务器第一次握手发的TCP连接数据包为同步数据包;当来自同一IP地址的同步数据包的数量达到同步包阀值时,将所述IP地址添加到跟踪监测链表中,对所述IP地址对应的客户端后续发送的TCP连接数据包进行跟踪;对跟踪的TCP连接数据包进行解析,如果确定所述TCP连接数据包是攻击数据包,则将所述TCP连接数据包对应的IP地址添加到黑名单链表中。
[0012] 进一步地,所述跟踪监测链表包括IP地址字段和TCP连接数据包字段;所述跟踪监测链表的长度为要跟踪检测的IP地址的数目。
[0013] 进一步地,所述黑名单链表包括IP地址字段和黑名单标识位字段;所述黑名单标识位为第一值时,表示所述IP地址永久加入黑名单链表,所述IP地址对应的客户端发出的TCP连接数据包直接丢弃;所述黑名单标识位为第二值时,表示所述IP地址重检间隔时间内在加入黑名单链表,所述IP地址对应的客户端发出的TCP连接数据包在重检间隔时间内无法发送到服务器。
[0014] 进一步地,所述同步包阀值表示每秒允许来自同一IP地址的同步数据包的最大数量;所述重检间隔时间表示第一次将IP地址加入黑名单链表后,第二次检测到同步数据包达到同步包阀值的时间。
[0015] 进一步地,所述方法还包括:通过Jiffes变量差值统计每秒同步数据包的数量;启动时将该Jiffies变量初始化为0,每次钩子函数对同步数据包进行解析中断处理程序时增加Jiffies变量的值。
[0016] 进一步地,所述TCP连接数据包包括序列字段和确认字段;所述对跟踪的TCP连接数据包进行解析的步骤包括:根据序列字段和确认字段,对跟踪的TCP连接数据包进行解析。
[0017] 进一步地,所述根据序列字段和确认字段,对跟踪的TCP连接数据包进行解析的步骤包括:在客户端和服务器的第一次握手时,截获客户端向服务器发送的第一TCP连接数据包,获取第一TCP连接数据包的序列值,设为X,其中X为整数;将第一TCP连接数据包放行发送到服务器;在客户端和服务器的第二次握手时,截获服务器向客户端返回作为应答的第二TCP连接数据包,获取第二TCP连接数据包的确认值,所述第二TCP连接数据包的确认值为X+1;获取第二TCP连接数据包的序列值,设为Y,其中Y为整数。
[0018] 进一步地,所述方法还包括:判断在预设时间内客户端和服务器是否进行第三次握手;如果截获到客户端向服务器发送的第三TCP连接数据包,获取第三TCP连接数据包序列值,所述第三TCP连接数据包的序列值为Y+1,则确定客户端不是攻击客户端;如果没有截获到客户端向服务器发送的第三TCP连接数据包,而截获到进行第一次握手的第一TCP连接数据包,则确定客户端是攻击客户端,所述攻击客户端发出的TCP连接数据包是攻击数据包。
[0019] 进一步地,所述如果确定所述TCP连接数据包是攻击数据包,则将所述TCP连接数据包对应的IP地址添加到黑名单链表中之后,还包括:将所述IP地址对应的黑名单标识位设置为第二值;在所述间隔重检间隔时间内,如果截获到客户端向服务器发送的TCP连接数据包,判断所述客户端的IP地址是否在黑名单链表中;如果所述IP地址在黑名单链表中,则将所述TCP连接数据包进行丢弃。
[0020] 进一步地,所述方法好包括:经过所述间隔重检间隔时间后,再次统计所述IP地址对应的每秒同步数据包的数量;如果同步数据包的数量达到同步包阈值,则将所述IP地址对应的黑名单标识位设置为第一值;如果同步数据包的数量没有达到同步包阈值,则将所述IP地址从黑名单链表中删除。
[0021] 本发明还提供了一种防止同步包攻击的装置,包括:设置模块,用于预先在内核注册钩子函数、创建跟踪监测链表和黑名单链表,并设置同步包阀值和重检间隔时间;第一处理模块,用于利用钩子函数解析客户端向服务器发送的TCP连接数据包,其中客户端和服务器第一次握手发的TCP连接数据包为同步数据包;第二处理模块,用于当来自同一IP地址的同步数据包的数量达到同步包阀值时,将所述IP地址添加到跟踪监测链表中,对所述IP地址对应的客户端后续发送的TCP连接数据包进行跟踪;第三处理模块,用于对跟踪的TCP连接数据包进行解析,如果确定所述TCP连接数据包是攻击数据包,则将所述TCP连接数据包对应的IP地址添加到黑名单链表中。
[0022] 进一步地,所述跟踪监测链表包括IP地址字段和TCP连接数据包字段;所述跟踪监测链表的长度为要跟踪检测的IP地址的数目;所述黑名单链表包括IP地址字段和黑名单标识位字段;所述黑名单标识位为第一值时,表示所述IP地址永久加入黑名单链表,所述IP地址对应的客户端发出的TCP连接数据包直接丢弃;所述黑名单标识位为第二值时,表示所述IP地址重检间隔时间内在加入黑名单链表,所述IP地址对应的客户端发出的TCP连接数据包在重检间隔时间内无法发送到服务器。
[0023] 进一步地,所述同步包阀值表示每秒允许来自同一IP地址的同步数据包的最大数量;所述重检间隔时间表示第一次将IP地址加入黑名单链表后,第二次检测到同步数据包达到同步包阀值的时间。
[0024] 进一步地,所述TCP连接数据包包括序列字段和确认字段;所第二处理模块,具体用于:在客户端和服务器的第一次握手时,截获客户端向服务器发送的第一TCP连接数据包,获取第一TCP连接数据包的序列值,设为X,其中X为整数;将第一TCP连接数据包放行发送到服务器;在客户端和服务器的第二次握手时,截获服务器向客户端返回作为应答的第二TCP连接数据包,获取第二TCP连接数据包的确认值,所述第二TCP连接数据包的确认值为X+1;获取第二TCP连接数据包的序列值,设为Y,其中Y为整数;判断在预设时间内客户端和服务器是否进行第三次握手;如果截获到客户端向服务器发送的第三TCP连接数据包,获取第三TCP连接数据包序列值,所述第三TCP连接数据包的序列值为Y+1,则确定客户端不是攻击客户端;如果没有截获到客户端向服务器发送的第三TCP连接数据包,而截获到进行第一次握手的第一TCP连接数据包,则确定客户端是攻击客户端,所述攻击客户端发出的TCP连接数据包是攻击数据包。
[0025] 进一步地,所述第三处理模块,还用于:将所述IP地址对应的黑名单标识位设置为第二值;在所述间隔重检间隔时间内,如果截获到客户端向服务器发送的TCP连接数据包,判断所述客户端的IP地址是否在黑名单链表中;如果所述IP地址在黑名单链表中,则将所述TCP连接数据包进行丢弃。
[0026] 进一步地,所述第三处理模块,还用于:经过所述间隔重检间隔时间后,再次统计所述IP地址对应的每秒同步数据包的数量;如果同步数据包的数量达到同步包阈值,则将所述IP地址对应的黑名单标识位设置为第一值;如果同步数据包的数量没有达到同步包阈值,则将所述IP地址从黑名单链表中删除。
[0027] 相比较于现有技术,本发明提供的在网桥模式下防SYN包攻击方案,在一定程度上能够防止当前路由器内网设备免遭SYN包攻击,有效的保证内网设备由于SYN包攻击造成设备资源耗尽而宕机和网络瘫痪。

实施方案

[0031] 为了使本申请所解决的技术问题、技术方案及有益效果更加清楚明白,以下结合附图及实施例,对本申请进行进一步详细说明。应当理解,此处所描述的具体实施例仅仅用以解释本申请,并不用于限定本申请。
[0032] 本发明利用网桥模式下路由器嵌入式Linux系统转发特性,提出一种防止SYN包攻击方案。
[0033] 实施例一:
[0034] 图1是本发明提供的防止同步包攻击的方法的流程示意图。如图1所示,本发明的方法包括:
[0035] 步骤101,预先在内核注册钩子(HOOK)函数,创建跟踪监测链表和黑名单链表,以及设置SYN包阀值参数和重检间隔时间参数。
[0036] 在本发明基于netfilter架构进行。netfilter是Linux内核防火墙框架,该框架既简洁又灵活,可实现安全策略应用中的许多功能,如数据包过滤、数据包处理、地址伪装、透明代理、动态网络地址转换(NAT,Network Address Translation),以及基于用户及媒体访问控制(MAC,Media Access Control)地址的过滤和基于状态的过滤、包速率限制等。
[0037] 具体地,netfilter是在Linux内核整个网络流程的若干位置放置了一些检测点,而在每个检测点上注册了HOOK函数进行处理,例如包过滤等,或者用户自定义的功能。
[0038] IP层的HOOK函数包括下面几种:
[0039] NF_IP_PRE_ROUTING,刚刚进入网络层的数据包通过此点,目的地址转换在此检查点进行;
[0040] NF_IP_LOCAL_IN:经路由查找后,送往本机的通过此检查点,INPUT包过滤在此检查点进行;
[0041] NF_IP_FORWARD:转发包通过此检测点,转发包过滤在此检查点进行;
[0042] NF_IP_POST_ROUTING:所有要通过网络设备出去的包通过此检测点,内置的源地址转换功能在此检查点进行;
[0043] NF_IP_LOCAL_OUT:本机进程的发出包通过此检测点,发出包过滤在此检查点进行。
[0044] 在本发明的具体实施例中,跟踪监测链表包括IP地址字段和TCP连接数据包字段,跟踪监测链表的长度为要跟踪检测的IP地址的数目。通常根据服务器硬件性能,性能较优的服务器可以设置较长的链表长度。
[0045] 黑名单链表包括IP地址字段和黑名单标识位字段,黑名单标识位可以采用数值表示,例如0表示此IP地址永久加入黑名单,不能移除;1表示此IP地址发出的数据包在一段时间内被禁止转发到服务器。
[0046] 在本发明的具体实施例中,SYN包阀值表示每秒允许来自同一IP地址的同步数据包的最大数量。重检间隔时间表示第一次将IP地址加入黑名单链表后,第二次检测到同步数据包达到同步包阀值的时间。
[0047] 步骤102,利用HOOK函数解析客户端向服务器发送的TCP连接数据包,其中客户端和服务器第一次握手发的TCP连接数据包为SYN数据包。
[0048] 在本发明的具体实施例中,TCP三次握手中第一次握手发的TCP连接数据包为带有SYN标识位的SYN数据包,路由器截获客户端向服务器发送的TCP连接数据包,并利用HOOK函数对TCP连接数据包进行解析。
[0049] 步骤103,当来自同一IP地址的SYN数据包的数量达到SYN包阀值时,将该IP地址对应的客户端后续发送的TCP连接数据包添加到跟踪监测链表中。
[0050] 在本发明的具体实施例中,内核拦截通过路由器转发的TCP连接数据包,并且针对该IP地址的TCP连接数据包进行计数统计,统计来自同一IP地址的带有标识位SYN的SYN数据包的数量,统计后对数据包直接放行。
[0051] 通过Jiffes变量差值统计每秒SYN数据包的数量。该Jiffies变量是用来记录自系统启动以来产生的节拍的总数,启动时,内核将该Jiffies变量初始化为0,此后每次时钟中断处理程序都会增加该Jiffies变量的值。
[0052] 如果来自同一IP地址的SYN数据包的数量超过SYN包阀值,则暂时视为该IP地址的客户端发送的TCP连接数据包为非法数据包,因此,当来自同一IP地址的SYN数据包数量达到SYN包阀值时,将该IP地址对应的客户端后续发送的TCP连接数据包添加到跟踪监测链表中进行跟踪。
[0053] 步骤104,对跟踪监测链表中的TCP连接数据包进行解析,如果确定该TCP连接数据包是攻击数据包,则将该TCP连接数据包对应的IP地址添加到黑名单链表中。
[0054] 在本发明的具体实施例中,TCP连接数据包包括序列(SEQ)字段和确认(ACK)字段,根据跟踪监测链表中TCP连接数据包的SEQ和ACK对该TCP连接数据包进行解析。
[0055] 具体地,在客户端和服务器的第一次握手时,路由器截获第一TCP连接数据包,获取SEQ值,假设为X;将第一TCP连接数据包放行发送到服务器;在客户端和服务器的第二次握手时,服务器向客户端返回作为应答的第二TCP连接数据包,路由器截获第二TCP连接数据包,获取ACK值并判断ACK值是否为X+1;获取应答的TCP连接数据包中的SEQ值,假设为Y;如果客户端不是攻击客户端,则会向服务器发送第三TCP连接数据包进行第三次握手,第三TCP连接数据包中的SEQ值应该为Y+1;如果在设定的时间内没有收到客户端发送的TCP连接数据包,即客户端不会发送第三次握手的数据包,让服务器始终处于半连接状态消耗资源,反而不断发送第一次握手的数据包,则确定该TCP连接数据包是攻击数据包,则将该TCP连接数据包对应的IP地址添加到黑名单链表中,将IP地址对应的黑名单标识位设置为1,此后该IP的数据包直接丢弃。
[0056] 步骤105,经过间隔重检间隔时间后,再次统计该IP地址对应的SYN数据包数量,如果SYN数据包数量达到SYN包阈值,则将该IP地址永久保存在黑名单链表中;如果SYN数据包数量没有达到SYN包阈值,则将该IP地址从黑名单链表中删除。
[0057] 在本发明的具体实施例中,在第一次将IP地址加入黑名单链表后的间隔重检间隔时间期限,客户端的TCP连接数据包进入HOOK函数时,查询黑名单链表,如果存在该客户端的IP地址,则直接丢弃此TCP连接数据包。
[0058] 经过间隔重检间隔时间后,客户端的TCP连接数据包进入HOOK函数时,不再查询黑名单链表,再次统计该IP地址对应的SYN数据包数量,并从0开始重新计数此IP地址的TCP连接SYN包数目,如此,给用户一次纠正的机会,可以防止客户端的用户误操作(例如死机,断电导致不发送第三次握手数据包)导致攻击而被永久加入黑名单链表影响正常业务数据。如果网客户端的SYN数据包再次达到阀值,则说明是真正的SYN数据包攻击,将此IP地址的标记为改为0,表示永久丢弃来自该客户端的任何数据包。
[0059] 实施例二:
[0060] 本发明还提供了一种防止同步包攻击的装置,如图2所示,包括:设置模块201、第一处理模块202、第二处理模块203和第三处理模块204,其中,
[0061] 设置模块201,用于预先在内核注册钩子函数、创建跟踪监测链表和黑名单链表,并设置同步包阀值和重检间隔时间;
[0062] 具体地,跟踪监测链表包括IP地址字段和TCP连接数据包字段;跟踪监测链表的长度为要跟踪检测的IP地址的数目。
[0063] 黑名单链表包括IP地址字段和黑名单标识位字段;黑名单标识位为第一值时,表示所述IP地址永久加入黑名单链表,所述IP地址对应的客户端发出的TCP连接数据包直接丢弃;黑名单标识位为第二值时,表示所述IP地址重检间隔时间内在加入黑名单链表,所述IP地址对应的客户端发出的TCP连接数据包在重检间隔时间内无法发送到服务器。
[0064] 同步包阀值表示每秒允许来自同一IP地址的同步数据包的最大数量;重检间隔时间表示第一次将IP地址加入黑名单链表后,第二次检测到同步数据包达到同步包阀值的时间。
[0065] 第一处理模块202,用于利用钩子函数解析客户端向服务器发送的TCP连接数据包,其中客户端和服务器第一次握手发的TCP连接数据包为同步数据包;
[0066] 第二处理模块203,用于当来自同一IP地址的同步数据包的数量达到同步包阀值时,将所述IP地址添加到跟踪监测链表中,对所述IP地址对应的客户端后续发送的TCP连接数据包进行跟踪;
[0067] 具体地,TCP连接数据包包括序列字段和确认字段;第二处理模块在客户端和服务器的第一次握手时,截获客户端向服务器发送的第一TCP连接数据包,获取第一TCP连接数据包的序列值,设为X,其中X为整数;将第一TCP连接数据包放行发送到服务器;在客户端和服务器的第二次握手时,截获服务器向客户端返回作为应答的第二TCP连接数据包,获取第二TCP连接数据包的确认值,所述第二TCP连接数据包的确认值为X+1;获取第二TCP连接数据包的序列值,设为Y,其中Y为整数;判断在预设时间内客户端和服务器是否进行第三次握手;如果截获到客户端向服务器发送的第三TCP连接数据包,获取第三TCP连接数据包序列值,所述第三TCP连接数据包的序列值为Y+1,则确定客户端不是攻击客户端;如果没有截获到客户端向服务器发送的第三TCP连接数据包,而截获到进行第一次握手的第一TCP连接数据包,则确定客户端是攻击客户端,所述攻击客户端发出的TCP连接数据包是攻击数据包。
[0068] 第三处理模块204,用于对跟踪的TCP连接数据包进行解析,如果确定所述TCP连接数据包是攻击数据包,则将所述TCP连接数据包对应的IP地址添加到黑名单链表中。
[0069] 具体地,第三处理模块将所述IP地址对应的黑名单标识位设置为第二值;在所述间隔重检间隔时间内,如果截获到客户端向服务器发送的TCP连接数据包,判断所述客户端的IP地址是否在黑名单链表中;如果所述IP地址在黑名单链表中,则将所述TCP连接数据包进行丢弃。
[0070] 第三处理模块经过所述间隔重检间隔时间后,再次统计所述IP地址对应的每秒同步数据包的数量;如果同步数据包的数量达到同步包阈值,则将所述IP地址对应的黑名单标识位设置为第一值;如果同步数据包的数量没有达到同步包阈值,则将所述IP地址从黑名单链表中删除。
[0071] 所属技术领域的技术人员可以理解:实现上述方法实施例的全部或部分步骤可以通过程序指令相关的硬件来完成,前述的程序可以存储于计算机可读取存储介质中,并被通讯设备内部的处理器执行,前述的程序在被执行时处理器可以执行包括上述方法实施例的全部或者部分步骤。其中,所述处理器可以作为一个或多个处理器芯片实施,或者可以为一个或多个专用集成电路(Application Specific Integrated Circuit,ASIC)的一部分;而前述的存储介质可以包括但不限于以下类型的存储介质:闪存(Flash Memory)、只读存储器(Read-Only Memory,ROM)、随机存取存储器(Random Access Memory,RAM)、移动硬盘、磁碟或者光盘等各种可以存储程序代码的介质。
[0072] 最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员应当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不使相应技术方案的本质脱离本申请各实施例技术方案的范围。

附图说明

[0028] 为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其它的附图,其中:
[0029] 图1是本发明提供的防止同步包攻击的方法的流程示意图。
[0030] 图2是本发明提供的防止同步包攻击的装置的结构示意图。
版权所有:盲专网 ©2023 zlpt.xyz  蜀ICP备2023003576号