声明:未经博主允许不得转载。
引言
SYN Flood攻击也称为拒绝服务攻击,它利用了TCP的3次握手,利用大量的TCP连接请求造成目标机的资源耗尽而不能提供正常的服务或者服务质量下降。从防御角度来说,目前主要的方法是系统通过设置SYN Cookies和缩短SYN Timeout时间实现。
SYN Flood攻击原理
TCP协议提供可靠的连接服务,采用三次握手建立一个连接。如果从IP层协议来看,客户端先发送SYN请求,服务器对客户端的SYN进行响应,而客户端对服务器的响应再次进行确认后才建立了一个TCP的连接。在服务器发送响应后,要等待一段时间才能获得客户端的确认,即第二次和第三次握手之间有一个超时时间,SYN攻击就利用了这个时机。
从防御角度来说,目前主要的方法是系统通过设置SYN Cookies和缩短SYN Timeout时间实现,都为被动调整方式。缩短SYN Timeout时间仅在对方攻击频度不高的情况下生效,SYN Cookie更依赖于对方使用真实的IP地址,如果攻击者以数万/秒的速度发送SYN报文,同时利用SOCK_RAW随机改写IP报文中的源地址,以上的方法将毫无用武之地。
SYN Flood攻击特征
IP源地址可能为伪装欺骗,SYN报文量大。
Flood攻击嗅探
通过对系统(或主机)嗅探抓包,抓取SYN报文。嗅探通过SOCK_ROW的socket(AF_INET, SOCK_PACKET, htons(ETH_P_ALL))方式,设置网卡模式为混杂模式,可以抓取发往本机和从本机发出的所有数据帧副本。再通过数据帧头、IP头、TCP头等对报文进行解析。可以识别出属于TCP的SYN和ACK_SYN报文。
SYN Flood攻击检测
通过检测策略匹配来认定是否SYN Flood攻击。
命令检测方法:一般来说,如果一个系统(或主机)负荷突然升高甚至失去响应,使用Netstat 命令能看到大量SYN_RECV的半连接(数量>500或占总连接数的10%以上),可以认定,这个系统(或主机)遭到了SYN Flood攻击。
制定检测策略:如单位时间内(1分钟内等)SYN报文数量 > ACK_SYN报文数量 * 10,并且ACK_SYN报文数量 > 500。策略可根据需要配置调整。
SYN Flood攻击分析
同时根据分析策略,记录并分析SYN报文的相关信息:源地址、IP首部中的标识、TCP首部中的序列号、TTL值等,这些信息虽然很可能是攻击者伪造的,但是用来分析攻击者的心理状态和攻击程序也不无帮助。特别是TTL值,如果大量的攻击包似乎来自不同的IP但是TTL值却相同,我们往往能推断出攻击者与我们之间的路由器距离,至少也可以通过过滤特定TTL值的报文降低被攻击系统的负荷。
分析策略因子:1)IP特征;2)TTL值等。
测试代码