1.5 DDoS简介及检测

DDoS(Distributed Denial of Service Attack,分布式拒绝服务攻击),是指处于不同位置的多个攻击者同时向一个或数个目标发动攻击,或者一个攻击者控制了位于不同位置的多台机器并利用这些机器对受害者同时实施攻击。由于攻击的发出点是分布在不同地方的,因此这类攻击为分布式的,其中的攻击者可以有多个。随着带宽的提高,DDoS的攻击规模也变得更加庞大,攻击带宽也逐渐增大,攻击方式逐渐增多,这是互联网安全工作中遇到的比较棘手的问题之一。下面介绍几种常见的DDoS。

1.SYN Flood攻击

SYN Flood攻击是最经典有效的DDoS方法,攻击者利用协议缺陷,通过伪造IP发送大量虚假的SYN握手包至被攻击服务器,导致被攻击服务器TCP堆栈资源耗尽,无法再提供正常服务。例如:

从代码中可以看到,大量虚假IP连接至被攻击者的80端口。

2.UDP Flood攻击

量变引起质变,UDP Flood极好地诠释了这句话的含义。UDP Flood是日渐猖獗的流量型DDoS攻击,原理也很简单,常见的情况是利用大量UDP小包冲击服务器,或是造成服务器因频繁解包而资源耗尽;或是直接聚少成多造成带宽阻塞,使服务器无法正常提供服务。正常应用情况下,UDP包双向流量会基本相等,而且大小和内容都是随机的,变化很大。出现UDP Flood攻击的情况下,针对同一目标IP的UDP包在一侧大量出现,并且内容和大小都比较固定,示例如下:

3.反射放大型攻击

反射放大型DDoS攻击是一种新的变种。攻击者并不直接攻击目标服务IP,而是利用互联网的某些特殊服务开放的服务器,通过伪造被攻击者的IP地址,向有开放服务的服务器发送构造的请求报文,该服务器会将数倍于请求报文的回复数据发送到被攻击IP,从而对后者间接形成DDoS攻击。在反射放大型攻击中,攻击者利用了网络协议的缺陷或者漏洞进行IP欺骗,主要是因为UDP对源IP不进行认证。同时,要达到更好的攻击效果,黑客一般会选择具有放大效果的协议服务进行攻击,例如DNS服务、NTP服务、Memcache服务等,总结一下就是利用IP欺骗进行反射和放大,从而达到四两拨千斤的效果,如图1-21所示。

该类攻击方法简单、影响较大、难以追查,因此也成为DDoS中的首要攻击手段。

图1-21 反射放大型攻击示意图

4.CC攻击

CC(Challenge CoHapsar,挑战黑洞)攻击是DDoS攻击的一种类型,使用代理服务器向受害服务器发送大量貌似合法的请求。CC攻击根据其工具命名,攻击者使用代理机制,利用众多代理服务器向受害服务器发起大量HTTP请求,主要请求动态页面,涉及数据库访问操作,造成数据库负载以及数据库连接池负载极高,无法响应正常请求。许多免费代理服务器支持匿名模式,这使追踪CC攻击变得非常困难。

1.5.1 DDoS基本防御手段

针对SYN Flood攻击,通过缩短从接收到SYN报文到确定这个报文无效并丢弃该连接的时间,可以临时缩短SYN Timeout时间,例如,设置为20秒以下(过低的SYN Timeout可能会影响客户的正常访问),可以成倍地降低服务器的负荷。也可以给服务器设置SYN Cookie,但SYN Cookie机制本身严重违背TCP,不允许使用TCP扩展,所以一般来说,可以使用Timestamp区域来存放这些数据,当SYN Cookie开启的时候,一般需要开启TCP Timestamp。

针对CC攻击,可以采取服务器临时扩容方案,或采用缓存机制减轻数据库压力,或采用临时生成静态化的HTML页面。也可以限制访问量明显异常的IP,毕竟相对其他攻击来说,CC攻击的IP地址均为真实地址。平时应注意优化SQL语句,减少甚至消除有慢SQL查询的业务功能。

针对反射放大型攻击,仅仅靠一个企业更难有所作为了,需要运营商级别均启用类似URPF(Unicast Reverse Path Forwarding)的技术防止基于源地址欺骗的网络攻击行为,并过滤所有RFC1918 IP地址,同时企业也尽可能在网络层限制类似NTP、Memcache等服务的访问IP,只有这样,才能缓解反射放大攻击。

总体来说,面对DDoS攻击,一般企业可以采取的应对措施并不是很多,毕竟DDoS是一种资源竞争攻击。因此,最佳的解决方案是寻找专业的公司购买流量清洗服务,例如国内的腾讯公司、国外的Cloudflare,都有着丰富的对抗各种DDoS的经验,防御效果比较明显。不过购买这种服务确实有点像买保险,可能购买了一年服务也没遇到一次攻击,所以如何取舍,还取决于如果业务被攻击,所造成的损失是多少,以此判断是否值得购买此项服务。

1.5.2 建立简单的DDoS检测系统

利用上面提到的流量镜像及抓包解包技术,便可以搭建一套简单的流量分析系统,用来检测DDoS攻击,架构如图1-22所示。

图1-22 DDoS检测系统架构图

通过流量镜像或采用分光器,将流量复制至分流器或交换机,再利用交换机的负载均衡功能将流量发送至流量服务器群进行处理。

流量服务器群有如下功能:

·流量还原重组:将数据包进行还原,并根据应用协议进行包重组。

·深度包检测:应用层数据的应用协议识别、数据包内容检测与深度解码。

·HTTP解析:针对HTTP进行解析,解析出常用字段以供后续分析。

·规则设定:根据规则检测数据包内容,例如是否收到连续长度统一的UDP数据包,SYN数量是否为正常值,SYN与ACK比例是否正常等,并可以在发现异常时进行告警。

·数据包保存:保存原始数据包,用于回放或取证。