据统计,在所有黑客攻击事件中,SYN 攻击是最常见又最容易被利用的一种攻击手法
相信很多人还记得2000 年YAHOO 网站遭受的攻击事例,当时黑客利用的就是简单而有效的SYN 攻击,有些网络蠕虫病毒配合SYN 攻击造成更大的破坏
本文介绍SYN 攻击的基本原理、工具及检测方法,并全面探讨 SYN 攻击防范技术
一、TCP 握手协议 在TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接
第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入SYN_SEND 状态,等待服务器确认; 第二次握手:服务器收到 syn 包,必须确认客户的SYN(ack=j+1),同时自己也发送一个 SYN 包(syn=k),即SYN+ACK 包,此时服务器进入 SYN_RECV状态; 第三次握手:客户端收到服务器的SYN+ACK 包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手
完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念: 未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的SYN 包(syn=j)开设 一个条 目 ,该条 目 表 明 服务器已 收到SYN 包,并向客户发出 确认,正 在等待客户的确认包
这 些条 目 所标 识 的连接在服务器处于 Syn_RECV 状态,当服务器收到客户的确认包时,删 除 该条 目 ,服务器进入ESTABLISHED 状态
Backlog 参 数:表 示 未连接队列的最大容纳 数目
SYN-ACK 重传次数 服务器发送完SYN- ACK 包,如 果 未收到客户确认包,服务器进行 首 次重传,等待一段 时间 仍 未收到客户确认包,进行 第二次重传,如果 重传次数超 过系 统规