计算机科学

首页 > 计算机科学

SYN flood

用户(Alice)与服务器之间正常连线状况。三向交握正确的进行。
SYN Flood。攻击者(Mallory)发送许多数据包就是不送"ACK"回到服务器。该连线因此处于半开状态并吞食服务器资源。因为拒绝服务攻击的结果合法用户Alice与服务器尝试创建连线遭拒。

SYN flood或称SYN洪水SYN洪泛是一种拒绝服务攻击,起因于攻击者发送一系列的SYN请求到目标系统。[1][2]

当客户端试着与服务器间创建TCP连线时,正常情况下客户端与服务器端交换一系列的信息如下:

  1. 客户端透过发送SYN同步(synchronize)信息到服务器要求创建连线。
  2. 服务器透过响应客户端SYN-ACK以抄收(acknowledge)请求。
  3. 客户端答应ACK,连线随之建立。

这即是所谓TCP三次握手,并且这是每个使用TCP传输协议创建连线的基础。

SYN flood是一种广为人知的攻击,一般对现代网络不太有效。这种攻击只有在服务器在收到SYN后分配资源,但在收到ACK之前这个区块有效。

SYN flood攻击目前有两种方法,不过都与服务器端没收到ACK有关。恶意用户可以跳过发送最后的ACK信息;或者在SYN里透过欺骗来源IP地址,这让服务器送SYN-ACK到假造的IP地址,因此永不可能收到ACK。这两个案例服务器会花点时间等抄收通知,故一个简单的网络壅塞可能是由于没有ACK造成的。

如果这些半开通连线英语TCP half-open绑定服务器资源,透过海量SYN信息淹没服务器是有可能耗尽其资源。一旦所有资源都拨给半开通连线所保留,没有新的连线(不管合法不合法)可被创建,导致拒绝服务攻击。某些系统可能会故障得很糟糕,甚至宕机如果其他操作系统函数渴望这种形式的资源。

过去通常于1996年用来分配资源给半开通连线的技术牵涉到通常相当短的队列[3]。队列的每个空位可在连线完成、或者到期时[4]被清空。当队列满时,新进来的连线创建会失败。以上面的示例来说,所有新进来的连线在总共8个数据包被提交之前会被阻挡下来。也就是说,每3分钟正时算好的8个数据包将阻断所有新进的TCP连线完成。这让这种拒绝服务攻击只须占很小的传输量。

建议的反制方法包括SYN cookie或者限定某一段时间内来自同一来源请求新连线的数量,不过因为现代的TCP/IP堆栈没有上面所述的瓶颈,因此介于SYN flood与其它种基于通道容量类型的攻击应该会只有很小或几乎没有差别。

反射路由器亦可以被攻击者所利用,以取代客户端机器。SYN讲的是黑客利用TCP协议发送大量的半连接请求去攻击目标服务器或者主机,致使目标服务器发生拒绝服务,或者蓝屏。

目录

  • 1 对策
  • 2 相关概念
  • 3 参考资料
  • 4 外部链接

对策

在 RFC 4987 中有许多著名的对策,包括:

  1. 过滤
  2. 增加积压
  3. 减少SYN-RECEIVED定时
  4. 复用古老的半开通TCP英语TCP_half-open
  5. SYN缓存
  6. SYN Cookie
  7. 混合方法
  8. 防火墙和代理

相关概念

  • 拒绝服务攻击
  • 互联网控制消息协议
  • IP地址欺骗
  • Smurf attack英语Smurf attack
  • Ping flood英语Ping flood

参考资料

  1. ^ RFC4987 TCP SYN Flood攻击与一般对策
  2. ^ New York's Panix Service Is Crippled by Hacker Attack, New York Times, September 14, 1996
  3. ^ 例如:8个空位长
  4. ^ 例如:3分钟后

外部链接

  • CERT官方对SYN攻击的建议
  • Iptables protege contra SYN FLOOD? (巴西葡萄牙语). 

相关推荐