据统计,在所有黑客攻击事件中,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 包,如 果 未收到客户确认包,服务器进行 首 次重传,等待一段 时间 仍 未收到客户确认包,进行 第二次重传,如果 重传次数超 过系 统规 定 的最大重传次数,系 统将 该连接信息 从 半 连接队列中删除 。注 意 ,每 次重传等待的时间 不 一定 相同。 半 连接存 活 时间 :是指 半 连接队列的条 目 存 活 的最长 时间 ,也即服务从 收到SYN 包到确认这 个报 文无 效的最长 时间 ,该时间 值 是所有重传请 求 包的最长 等待时间 总 和。有时我 们 也称 半 连接存 活 时间 为Timeout 时间 、SYN_RECV 存 活 时间 。 二、SYN 攻击原理 SYN 攻击属于DOS 攻击的一种,它利用TCP 协议缺陷,通过发送大量的半连接请求,耗费CPU 和内存资源。SYN 攻击除了能影响主机外,还可以危害路由器、...