Connection Flood
Connection Flood。称为连接耗尽攻击,顾名思义就是将服务器上可用的连接数占满直至无法正常响应。与前面讲述的攻击方式不同的是,连接耗尽攻击使用真实的IP地址与服务器建立连接。攻击者操控了大量的傀儡主机或者使用代理服务器来发起大规模的连接。当连接数达到一定规模,超过了服务器的能力时,正常的连接请求将无法建立。通过不断地与服务器建立大量的连接,最终服务器的内存资源将被耗尽。应该说,连接耗尽攻击比以上的攻击更为复杂,手段和变化更为丰富多彩。判断连接耗尽攻击需要对netstat ?Can显示的连接状态进行分析,可能出现的情况有:
1) 若干个源IP与服务器建立了大量的连接;
2) 大量的连接处于TIME_WAIT, FIN_WAIT状态;
除了建立大量的连接之外,攻击程序在与服务器建立连接之后可能始终不放弃连接,并间隔地向服务器发送垃圾数据包使得连接状态始终保持,拖延服务器释放连接的时间,这种连接也可以称之为"空连接"。
显然,如果攻击者掌握的傀儡主机数量不够的话,就需要每个傀儡主机与服务器建立相当数量的连接才能使攻击效果比较明显。防火墙就可以通过限制每个源IP的连接数来将攻击的影响降到最低点。但是当傀儡主机数量足够多的时候,几乎是每个源IP只与服务器同时保持2到3个连接,如果限制源IP的连接数,就有可能使得正常的服务无法正常访问。大多数的网站内容丰富多彩,打开一个页面就可能需要向服务器发起数十个连接,限制连接就有可能使得页面上的内容无法正常打开。
连接耗尽攻击对防火墙带来的冲击也是很明显的,由于连接数量巨大,占用了大量的连接表项,防火墙的负载和内存使用率将会明显上升。如果在防火墙前面部署具有防护连接耗尽攻击能力的设备,在傀儡主机向服务器发起连接请求的时候,防护设备是无法简单的根据SYN包来判断是否是正常连接的,从而只能让连接通过,只有当连接建立之后才有可能判断是否恶意的连接,但此时已经对服务器和防火墙造成了一定的影响。所以防护设备在连接建立之后,如果一断时间内没有有效的数据包从客户端到达,则可以判定此连接为"空连接",同时应当尽快地主动清除已经建立的连接,使得防火墙和服务器释放连接表项。