攻击原理
connection flood攻击是非常有效的利用小流量冲击大带宽的攻击手段,这种攻击方式曾经风靡一时。
攻击的原理是利用真实IP向服务器发起大量的连接,并且建立连接之后很长时间不释放,占用服务器的资源,造成服务器服务器上WAIT连接状态过多,效率降低,消耗对方网络资源甚至耗尽,无法响应其他正常客户所发起的连接。
常用的一种攻击方法是每秒钟向服务器发起大量的连接请求,这类似于固定源IP的syn flood攻击,不同的是采用了真实的源IP地址。通常这可以在防火墙上限制每个源IP地址每秒钟的连接数来达到防护目的。
现在已有恶意攻击工具采用慢速连接的方式,也即几秒钟才和服务器建立一个连接,连接建立成功之后并不释放并定时发送垃圾数据包给服务器使连接得以长时间保持。这样一个IP地址就可以和服务器建立成百上千的连接,而服务器可以承受的连接数是有限的,这就达到了拒绝服务的效果。
另外,蠕虫大规模爆发的时候,由于蠕虫代码则比较简单,传播过程中会出现大量源IP地址相同的包,对于 TCP蠕虫则表现为大范围扫描行为。
防护原理
通常抗ddos设备针对旁路和串联情况下都是包触发的统计方式,所以统计的时候主要是根据统计周期和来的包的类型来进行统计。这里有三个原则需要注意:
1.并发连接数跟统计周期无关,属于累积的,前一个统计周期和后一个统计周期的连接,如果一直没有断开,会累积为并发。
2.并发连接的统计原则,syn包计数加1,fin/rst等断开连接的包减1。
3.在新建连接数统计周期内,syn包计数加1,断开连接的rst/fin等包,不变。
如下以在2个连接统计周期内,用户发起5个TCP连接,分别在不同的阶段发起和断开,新建连接数统计和并发连接数统计的变化如下:
第一个统计周期:
第二个统计周期:
针对5元组的连接耗尽规则:
参数 | 说明 |
并发连接数 | 统计某个源IP的并发连接数量,如果并发连接数超过设定的阈值,则判定为源IP异常,自动将该源IP加入黑名单。 |
新建连接统计周期 | 防护算法的检测周期,统计某个时段内新建连接数量,配合新建连接数一起使用。 |
新建连接数 | 在一个新建连接统计周期内,统计某个源IP的新建连接的数量,如果超过该阈值,则判定为源IP异常,自动将该源IP加入黑名单。 |
实例:
如上第二条规则,配置了6.6.6.6/24一个网段的源IP ,使用该规则时,系统会统计6.6.6.6/24这个段内每一个IP的连接耗尽攻击数量,即每个IP的连接耗尽攻击数量超过阈值,每个IP都会加黑。而不是6.6.6.6/24这个网段内所有IP的攻击包数量超过阈值再进行防护,只对单个IP进行统计。同理对于7.7.7.7/25这种类型的目标IP端,同样也是分单个IP进行统计。
优先级规则,例如有攻击同时匹配两条规则(源: 6.6.6.6, 目标: 7.7.7.7, 目标端口: 80),那么该规则会首先匹配上第一条规则,使用第一条规则的阈值进行防护,不会再匹配之后的规则。