一、攻击原理:
TCP 握手协议 在 TCP/IP 协议中,TCP 协议提供可靠的连接服务,采用三次握手建立一个连接。
1、第一次握手:建立连接时,客户端发送 syn 包(syn=j)到服务器,并进入 SYN_SEND 状 态,等待服务器确认;
2、第二次握手:服务器收到 syn 包,必须确认客户的 SYN(ack=j+1),同时自己也发送一 个 SYN 包(syn=k),即 SYN+ACK 包,此时服务器进入 SYN_RECV 状态;
3、第三次握手: 客户端收到服务器的 SYN+ACK 包, 向服务器发送确认包 ACK(ack=k+1), 此包发送完毕,客户端和服务器进入 ESTABLISHED 状态,完成三次握手。
完成三次握手,客户端与服务器开始传送数据,在上述过程中,还有一些重要的概念: 未连接队列:在三次握手协议中,服务器维护一个未连接队列,该队列为每个客户端的 SY N 包(syn=j)开设一个条目,该条目表明服务器已收到 SYN 包,并向客户发出确认,正在等 待客户的确认包。如果未收到客户确认包,服务器进行首次重传,等待一段时间仍未收到客户确认包,进行第二次重传,如果重传次数超过系统规定的最大重传次数, 系统将该连接信息从半连接队列中删除。
SYN 攻击原理 SYN 攻击属于 DOS 攻击的一种,它利用 TCP 协议缺陷,通过发送大量的半连接请求,耗 费 CPU 和内存资源。SYN 攻击除了能影响主机外,还可以危害路由器、防火墙等网络系统,事 实上 SYN 攻击并不管目标是什么系统, 只要这些系统打开 TCP 服务就可以实施。
二、防范:
检测 SYN 攻击 检测 SYN 攻击非常的方便,当你在服务器上看到大量的半连接状态时,特别是源 IP 地址 是随机的,基本上可以断定这是一次 SYN 攻击。
SYN 攻击防范技术主要有两大类,一类是通过防火 墙、路由器等过滤网关防护,另一类是通过加固 TCP/IP 协议栈防范.但必须清楚的是,SYN 攻 击不能完全被阻止,我们所做的是尽可能的减轻 SYN 攻击的危害,除非将 TCP 协议重新设计。
1、过滤网关防护
■网关超时设置:网关超时参数设置不宜过小也不宜过 大,超时参数设置过小会影响正常的通讯,设置太大,又会影响防范 SYN 攻击的效果,必须根 据所处的网络应用环境来设置此参数
■SYN 网关:SYN 网关收到客户端的 SYN 包时,直接转发给服务器;SYN 网关收到服务 器的 SYN/ACK 包后,将该包转发给客户端,同时以客户端的名义给服务器发 ACK 确认包。此 时服务器由半连接状态进入连接状态。当客户端确认包到达时,如果有数据则转发,否则丢弃。 事实上,服务器除了维持半连接队列外,还要有一个连接队列,如果发生 SYN 攻击时,将使连 接队列数目增加, 但一般服务器所能承受的连接数量比半连接数量大得多, 所以这种方法能有效 地减轻对服务器的攻击。
■SYN 代理:当客户端 SYN 包到达过滤网关时,SYN 代理并不转发 SYN 包,而是以服务 器的名义主动回复 SYN/ACK 包给客户,如果收到客户的 ACK 包,表明这是正常的访问,此时 防火墙向服务器发送 ACK 包并完成三次握手。 SYN 代理事实上代替了服务器去处理 SYN 攻击, 此时要求过滤网关自身具有很强的防范 SYN 攻击能力。
2、加固 tcp/ip 协议栈
防范 SYN 攻击的另一项主要技术是调整 tcp/ip 协议栈,修改 tcp 协议实现。主要方法有 S ynAttackProtect 保护机制、SYN cookies 技术、增加最大半连接和缩短超时时间等。tcp/ip 协议栈的调整可能会引起某些功能的受限, 管理员应该在进行充分了解和测试的前提下进行此项 工作。