发明内容
本发明所述的网络防SYN洪流攻击检测方法,其目的在于解决上述问题和不足,提供一种根据超时记录时间和数量自动确认报警的方法。通过该方法可以根据网络环境灵活设定检测参数并可定制需要监控端口的范围,从而提高网络入侵检测系统的效率并有效降低对syn扫描的误报率。
一次正常的TCP连接包含一个三次握手的过程,首先是客户端向服务器发送一个syn连接请求,服务器收到后向客户端回应一个syn+ack数据包,然后客户端再向服务器发送一个ack回应。至此一个TCP连接建立起来。
针对上述TCP连接特点,现有的SYN洪流攻击控制并不向服务器回应最后一个ack数据包。服务器则会一直等待这个ack确认直至超时,这样服务器就形成了一个半打开的连接。这既是SYN洪流攻击的关键所在,也是本发明所述网络防SYN洪流攻击检测方法的设计要点。
针对上述SYN洪流攻击的特点,本发明所述的网络防SYN洪流攻击检测方法,是在现有的网络入侵检测系统中加入SYN洪流攻击检测模块以确认是否受到攻击并转报警模块处理。
所述的SYN洪流攻击检测模块,对于向服务器递交的syn连接请求包建立是否有回应包的ID跟踪链表。所述该链表的数据组结构是:
其中,
id(unsigned short id),是IP数据包的id值。所述的SYN洪流攻击检测模块可以检测此id号,以区分SYN连接包和SYN+ACK回应包。因为一次正常的TCP三次握手,其SYN+ACK回应包的id值是对应SYN连接包的id值+1。通过匹配记录的id号,检测模块可以区分出正常和异常的SYN连接;
time_t(time_t intime),是记录SYN连接请求包到达的时刻,检测模块以此来判断该连接请求是否已超时;
*next(struct_IN_TIME *next),是指向下一个SYN连接节点的指针。
针对上述ID跟踪链表的操作采用通用方式,即保留链表的头部和尾部指针,增加新的数据组时可以直接连接到尾部,删除时则由所述的检测模块根据ID值判断删除。
所述的SYN洪流攻击检测模块,对于syn连接请求包的目标端口实施动态监控并建立所述的异常端口跟踪链表,所述该链表的数据组结构是:
Port | long count | *timeptr | *next |
其中,port(unsigned short port),是syn连接请求包所连接的端口值,检测模块根据此类目的端口值对SYN请求包进行分类;
long count(unsigned long count),表示到达上述端口的异常SYN连接数据包的值,检测模块根据此值来判断是否达到报警门限值并转报警模块进行后续处理;
*timeptr(IN_TIME *timeptr),是该端口下的SYN连接节点链的头指针;
*next(struct_SYNINFO *next),是指向下一个端口节点的指针。
针对上述异常端口跟踪链表的操作采用通用方式,即保留链表的头部和尾部指针,增加新的数据组时可以直接连接到尾部,删除时则由所述的检测模块全部清零删除。
应用上述SYN洪流攻击检测模块,所述的网络防SYN洪流攻击检测方法控制流程是:
第一步,分析过滤出目标网络中的SYN连接数据包和ACK回应包;
第二步,如果是SYN连接数据包,跳到第四步执行。如果是ACK回应包,跳到第三步执行;
第三步,遍历所有节点中的SYN连接数据包,匹配相关信息,判断该ACK确认包是否是对此SYN连接数据包的回应,如果是就将该SYN连接数据包从此节点中清除,返回第一步。如果没有匹配的SYN连接数据包,则直接返回第一步;
第四步,根据设定的端口范围过滤出需要监控的SYN连接数据包;
第五步,按照不同的目的端口将过滤所得的SYN连接数据包归入不同节点,同时记录该SYN连接数据包的到达时间;
第六步,遍历所有节点,根据设定的超时时间检查节点中存储的SYN连接数据包是否超时。
如果超时,就对该节点的计数器加1,并判断该节点的计数器是否达到所设定的门限值,如果达到门限值就向控制台告警,同时所有节点清空,计数器清零,返回第一步;否则往下执行;
第七步,根据设定的保护时间,判断保护时间是否超时,如果超时就将所有节点清空,计数器清零,然后返回第一步。否则直接返回第一步。
以上即是本发明所述网络防SYN洪流攻击检测方法的主要内容。
所述的网络防SYN洪流攻击检测方法,具有以下优点和有益效果:
1、由于将目标网络中的SYN连接数据包按目标端口进行了分类统计,这样就能严格区分出了synflood和syn扫描,大大地降低了入侵检测系统的误报。
2、由于可以让用户自定义所需监控的端口,明显减轻了入侵检测系统的负荷。
3、由于可以让用户自定义连接超时时间和告警门限,这样就可以灵活地适应被监控网络的环境。
由于提供了保护时间的设置,使得入侵检测系统在检测synflood攻
4、击时具有更强的抗击打能力,同时也消除了目标网络在正常情况下累积的异常SYN连接,进一步降低了入侵检测系统的误报率。
具体实施方式
如图1所示,所述的网络防SYN洪流攻击检测方法,是在现有的网络入侵检测系统中加入SYN洪流攻击检测模块以确认是否受到攻击并转报警模块处理。
在网络接口获取SYN连接数据包后,由SYN洪流攻击检测模块建立动态SYN+ACK回应包和异常端口跟踪,并判断是否某一节点的超时SYN连接数据包是否达到门限值、以及超时时间是否达到设定的保护时间。
若是,则转报警模块并将所有节点清空,计数器清零。
如图2所示,所述的网络防SYN洪流攻击检测方法控制流程是:
第一步,分析过滤出目标网络中的SYN连接数据包和ACK回应包;
第二步,如果是SYN连接数据包,跳到第四步执行。如果是ACK回应包,跳到第三步执行;
第三步,遍历所有节点中的SYN连接数据包,匹配相关信息,判断该ACK确认包是否是对此SYN连接数据包的回应,如果是就将该SYN连接数据包从此节点中清除,返回第一步。
如果没有匹配的SYN连接数据包,则直接返回第一步;
第四步,根据设定的端口范围过滤出需要监控的SYN连接数据包;
第五步,按照不同的目的端口将过滤所得的SYN连接数据包归入不同节点,同时记录该SYN连接数据包的到达时间;
第六步,遍历所有节点,根据设定的超时时间检查节点中存储的SYN连接数据包是否超时。
如果超时,就对该节点的计数器加1,并判断该节点的计数器是否达到所设定的门限值,如果达到门限值就向控制台告警,同时所有节点清空,计数器清零,返回第一步;否则往下执行;
第七步,根据设定的保护时间,判断保护时间是否超时,如果超时就将所有节点清空,计数器清零,然后返回第一步。否则直接返回第一步。