提到 DDoS 攻击,很多人不会陌生。上周,美国当地时间 12 月 29 日,专用虚拟服务器提供商 Linode 遭到 DDoS 攻击,直接影响其 Web 服务器的访问,其中 API 调用和管理功能受到严重影响,在被攻击的一周之内仍有部分功能不可用,严重影响其业务和成千上万使用 Linode 服务的用户。
什么是 DDoS 攻击?
DDoS,即分布式拒绝服务(Distributed Denial of Service)攻击,指借助于客户/服务器技术,将多个计算机联合起来作为攻击平台,对一个或多个目标发动攻击,从而成倍地提高拒绝服务攻击的威力。
DDoS 的攻击方式有很多种,最基本的 DDoS 攻击就是利用合理的服务请求来占用过多的服务资源,从而使合法用户无法得到服务的响应。单一的 DoS 攻击一般是采用一对一方式,当攻击目标 CPU 速度低、内存小或者网络带宽小等各项指标值不高时,它的效果是明显的。随着计算机与网络技术的发展,计算机的处理能力迅速增长,内存大大增加,同时也出现了千兆级别的网络,这使得 DoS 攻击的困难程度加大了——目标对恶意攻击包的消化能力加强了不少。这时候分布式的拒绝服务攻击手段(DDoS)就应运而生。DDoS 就是利用更多的傀儡机来发起进攻,以比从前更大的规模来进攻受害者。
据统计,2015 年针对企业的 DDoS 攻击持续增长,根据 Akamai 的调查报告,2015 年 DDoS 攻击增长了史无前例的 180% !对于本次事件的 Linode 来说,早在 2013 年,Linode 就曾受到过大规模的 DDoS 攻击。面对 DDoS 这样的周期性挑衅,我们应该找出被攻击的原因,建立有效的防御体系来抵御攻击。
防止 DDoS 攻击的方式
1.减少公开暴露
之前曝光的的 Booter 网站或者是臭名昭著的 LizardSquad 旗下站 LizardStresser,都提供付费 DDoS 攻击某一目标的服务,而且这些网站都会将攻击伪装成合法的载入测试来进行攻击。这个黑客组织在 2014 年的圣诞节期间利用 DDoS 攻击了微软的 Xbox Live 和索尼的 PSN 网络,令许多玩家很长时间无法正常娱乐。
对于企业来说,减少公开暴露是防御 DDoS 攻击的有效方式,对 PSN 网络设置安全群组和私有网络,及时关闭不必要的服务等方式,能够有效防御网络黑客对于系统的窥探和入侵。具体措施包括禁止对主机的非开放服务的访问,限制同时打开的 SYN 最大连接数,限制特定 IP 地址的访问,启用防火墙的防 DDoS 的属性等。
(图片来源:OneRASP)
2.利用扩展和冗余
DDoS 攻击针对不同协议层有不同的攻击方式,因此我们必须采取多重防护措施。利用扩展和冗余可以防患于未然,保证系统具有一定的弹性和可扩展性,确保在 DDoS 攻击期间可以按需使用,尤其是系统在多个地理区域同时运行的情况下。任何运行在云中的虚拟机实例都需要保证网络资源可用。
微软针对所有的 Azure 提供了域名系统(DNS)和网络负载均衡,Rackspace 提供了控制流量流的专属云负载均衡。结合 CDN 系统通过多个节点分散流量,避免流量过度集中,还能做到按需缓存,使系统不易遭受 DDoS 攻击。
3.充足的网络带宽保证
网络带宽直接决定了能抗受攻击的能力,假若仅仅有 10M 带宽的话,无论采取什么措施都很难对抗当今的 SYNFlood 攻击,至少要选择 100M 的共享带宽,最好的当然是挂在1000M 的主干上了。但需要注意的是,主机上的网卡是 1000M 的并不意味着它的网络带宽就是千兆的,若把它接在 100M 的交换机上,它的实际带宽不会超过 100M,再就是接在 100M 的带宽上也不等于就有了百兆的带宽,因为网络服务商很可能会在交换机上限制实际带宽为 10M,这点一定要搞清楚。
4.分布式服务拒绝 DDoS 攻击
所谓分布式资源共享服务器就是指数据和程序可以不位于一个服务器上,而是分散到多个服务器。分布式有利于任务在整个计算机系统上进行分配与优化,克服了传统集中式系统会导致中心主机资源紧张与响应瓶颈的缺陷,分布式数据中心规模越大,越有可能分散 DDoS 攻击的流量,防御攻击也更加容易。
5.实时监控系统性能
除了以上这些措施,对于系统性能的实时监控也是预防 DDoS 攻击的重要方式。不合理的 DNS 服务器配置也会导致系统易受 DDoS 攻击,系统监控能够实时监控系统可用性、API、CDN 以及 DNS 等第三方服务商性能,监控网络节点,清查可能存在的安全隐患,对新出现的漏洞及时进行清理。骨干节点的计算机因为具有较高的带宽,是黑客利用的最佳位置,因此对这些主机加强监控是非常重要的。
另外,通过缩短 SYN 半连接的 time out 时间也能有效防止 DDoS 攻击,系统监控能够通过自主设置的 Time out 阈值发送报警,对系统情况进行整体的把控。
(图片来源:Cloud Test)
Cloud Test 是基于云技术的实时监控系统,能够帮大家实时监控网站性能,监控CDN、DNS、API等第三方服务提供商的可用性,实现应用性能及时监测及时报警。想阅读更多技术文章,请访问 OneAPM 官方技术博客。