SYN 洪水(半开连接攻击)通过重复发送初始化连接请求(SYN)数据包,攻击者将占用服务器上的所有可用端口,导致服务器无法创建新的连接。工作方式如下:
- 攻击者通常使用伪造的 IP 地址向目标服务器发送大量 SYN 数据包。
- 服务器分别对每一项连接请求做出响应,并打开一个可用端口,做好接收响应的准备。
- 在服务器等待最后一个 ACK 数据包(永远不会到达)的过程中,攻击者将继续发送更多 SYN 数据包。每当有新的 SYN 数据包到达,服务器都会临时打开一个新的端口并在一段特定时间内保持连接;用遍所有可用端口后,服务器将无法正常运行。
在网络中,如果服务器连接处于打开状态但另一端的机器连接未打开,则视为半开连接。因此,SYN 洪水攻击也叫做「半开连接攻击」。
恶意用户通常采取分布式攻击(DDoS)的方式发起 SYN 洪水攻击。
DDoS,distributed denial-of-service:分布式拒绝服务攻击,攻击者通过控制被恶意软件感染的网络设备来发动攻击。被恶意软件感染的网络设备称为机器人(或僵尸),一组机器人称为僵尸网络。
我相信很多朋友在浏览网站时都会遇到过检验是否是机器人的页面,这里的机器人就是指被恶意控制的计算机了。
攻击者远程控制每一个机器人,发送请求到目标服务器,导致服务器不堪重负,从而造成对正常流量的拒绝服务。因为每个机器人都是正常的互联网设备,因此很难区分攻击流量和正常流量。
如何缓解 SYN 洪水攻击?
- 回收最先创建的半开连接:当半开连接队列填满后,新的连接覆盖掉最先创建的连接。缺点:这有可能导致用户无法正常连接到服务器,并且当攻击量小于半开连接队列的容量时,这种方法会失效。
- SYN Cookie:服务器不再维持半开连接状态,发送了 SYN+ACK 数据包后,保存这个初始连接序号到 Cookie 中,然后从半开队列中删除客户端的 SYN 请求,当客户端发送 ACK 报文后,检查是否合法,合法再重建一个 TCP 连接。缺点:服务器丧失了重发 SYN+ACK 数据包的能力,可能导致用户无法连接到服务器。
参考资料:
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。