根据网络层遭受攻击的不同情况, 我们可以把现有的DDoS攻击划分为以下4种类别:平稳背景流下的Net-DDoS攻击;平稳背景流下的App-DDoS攻击;突发流下的Net-DDoS攻击;突发流下的App-DDoS攻击。
平稳背景流下的Net-DDoS攻击检测是目前研究得最多、最成熟的一种,而且已经有许多有效的检测方案,这些方案主要通过TCP段或IP包的头信息实现攻击检测。例如:Cabrera等基于MIB(管理信息数据库)把ICMP、UDP和TCP的分组统计异常映射到特定的DDoS攻击,通过匹配分析实测分组属性与特定DDoS攻击的异常特征来实现检测;Jin等假定DDoS的攻击源是虚假IP地址,通过到达分组的IP地址与TTL(生存时间)来判断是否存在基于虚假IP地址的DDoS攻击。Kim等计算到达分组在给定的正常流模式下合法性的或然概率,通过或然概率检测DDoS攻击;Chen等通过检测到达分组流在频率域中特定频率点的异常实现脉冲式攻击的检测。
平稳背景流下的App-DDoS攻击检测/防御可以有以下的方法:
(1)请求速率/QoS控制
Ranjan等使用统计方法判断每个HTTP会话的异常性,然后通过控制HTTP速率抵御攻击。
(2)基于“Puzzle”的方法
Kandula等应用基于“Puzzle”的方法实现App-DDoS攻击的检测与防御,它的主要思路是:攻击常常是由程序执行,而程序只能按预先设计的方案进行,不具有人的智能性,因此,当怀疑服务器处于攻击威胁时,可以生成一些简单的问题要求用户回答,如果返回的结果正确说明是正常用户,否则就是攻击源。
(3)基于“进攻”的防御方法
Walfish等认为,通过触发所有的客户(包括正常用户与攻击者)提高其请求速率可以有效排挤攻击者。其依据是攻击发生时,攻击者通常已经耗尽自身的链路带宽,而正常用户的带宽有较大的冗余,因此提高正常用户的请求速率可以有效降低攻击者对服务器入口处的带宽占有率。
对于突发流下的Net-DDoS攻击检测可以利用正常流与异常流的特征差异实现。这是因为尽管突发流的流量很大,但是组成正常突发流的IP分组及相应的TCP连接都是正常,而用于Net-DDoS攻击的分组或连接通常都具有以下的特征:畸形结构的IP分组、不完整的TCP连接等。因此,这一特征也可以有效用于攻击的检测与过滤。
从现有的研究看,针对突发流环境下的App-DDoS攻击检测进行研究的文献并不多见。由于突发性与大流量是突发流与App-DDoS攻击的共同特征,因此,传统用于处理DDoS攻击的请求速率/QoS控制方法并不能有效区分正常突发流用户的请求与App-DDoS攻击请求。这是由于:首先,对汇聚流进行速率监控只能起到预警的作用,无法区分出攻击请求分组,如果采用随机丢弃客户请求分组的办法缓解服务器端的Web流量有可能把正常用户的请求丢弃从而影响合法用户的访问。其次,由于App-DDoS可以采用低速的攻击方式(例如:复杂的脚本程序与数据库查询),因此速率控制不一定能保证有效,而且速率控制一般只能适用于具有平稳特性的流的检测,无法应用于突发流和App-DDoS攻击流同时发生的场景。对每个Web用户分别进行HTTP请求速率监控也不足以有效检测App-DDoS攻击,因为攻击者可以利用现有的工具对攻击流进行成形,例如:采用间歇性脉冲方式的低速率攻击,在脉冲期间采用较高的速率攻击,脉冲结束后,攻击暂停等待下一个攻击脉冲的到来,这使每个攻击节点的平均请求速率非常低,不容易被检测。再次,对现代Web服务器及网络,随着用户端带宽和Web页面复杂性的不断增长,正常用户的每次点击浏览行为有可能产生每秒几十个HTTP请求,这种速率已经与“Mydoom”的攻击速率相当。
现有基于流特征的检测方法一般隐含假设条件:攻击流与正常流存在统计上的差异,但是这个假设并不适用于突发流环境下的App-DDoS攻击检测。由于App-DDoS攻击者可以利用HTTP仿真工具组织攻击流,使攻击流模仿正常用户的请求流特性(包括HTTP请求速率、TCP连接特性、IP分组流特性等),因此,上述基于流特性的检测方法也不适用于这一类攻击。
Jung等使用两个属性区分DoS攻击和正常突发流:DoS攻击是由少量攻击主机急剧增长的请求率产生,而正常突发流是由客户数量的增长造成的;DoS攻击者通常是新用户,而正常突发流下的用户通常在突发流产生前都访问过该网站。因此通过约束每个访问客户机可使用的资源(如:TCP连接数、占用CPU时间、占用缓存大小及用户响应时间)及比较新客户的比率来区分DoS攻击和正常突发流。但是,对于现代网络而言,这种方法的效果并不明显。首先,Web应用的客户数量很大,因此不可能逐一确定每个客户可使用的合法资源数量,而且假设攻击由少量节点产生只能适用于传统的DoS攻击,随着网络的普及化,这种假设不适用于现代高速网络下的DDoS攻击。近期的互联网调查发现,现代的DDoS攻击通常与“僵尸网络”结合在一起,因此攻击者本身就能形成一个庞大的网络。另外,仅通过IP地址区分攻击也是不可行,因为App-DDoS攻击请求通常由病毒程序产生,而病毒程序有可能驻留在合法的客户机上。
基于“Puzzle”的方法虽然具有检测与防御的功能,但是同样具有一些不足:需要得到客户端的支持;会干扰Web用户的正常浏览;没有办法解决攻击程序与正常用户同处于一个终端的情况;有可能导致互联网中的搜索引擎和缓存/代理等无法正常工作;由于基于“Puzzle”的方法需要耗费大量服务器的资源(CPU计算、内存等),在突发流环境下,难以实时处理海量的用户信息,而且其本身很容易成为DDoS攻击的目标。
基于“进攻”的方法同样需要客户端的支持,而且它的另外一个假设是服务器入口处具有足够的带宽,这在实际网络中是不可能实现的。
由此可见,单靠传统的分组特征、流特征、速率分析来检测与控制突发流环境下的App-DDoS攻击是不够的。