对安全专家Brian Krebs来说,去年9月的第三个星期可以算是一段暗无天日的时光,大量持续不断的DoS攻击波涌向其个人网站KrebsOnSecurity,峰值攻击曾流量超过每秒 620Gbps,最终,CDN服务商Akamai也无防护之计可施,选择将Krebs网站下线。然而,仅在三天之后,KrebsOnSecurity就在谷歌Project Shield(护盾项目)的保护下,正常上线“重生”了。今天就让我们随着FreeBuf来一起了解下谷歌Project Shield的这桩“壮举”。
Project Shield是谷歌最早在2013年推出的,保护第三方网站的免费抗D服务,它利用谷歌基础设施技术来重定向和缓解DDoS攻击流量,以抵御各类DDoS攻击。Project Shield保护网站主要为那些没专业能力部署安全防护的体量较小网站,并优先为记者、媒体、选举和人权相关网站提供保护。
据谷歌安全工程师Damian Menscher在最近的Enigma安全会议上透露,在Krebs向Project Shield提出网站保护请求之后,谷歌安全团队经过一番风险权衡后同意了这项服务。Menscher回忆了当时团队的讨论情景:
“如果这些僵尸网络对google.com发起攻击后果将会怎样?会让我们的努力白费吗?这种可能不能完全排除。但如果类似的攻击可以击溃我们,那么任何时候它对我们来说都是一种潜在风险,所以,从这个角度上来说,我们不存在任何损失,应该积极去应对。”
经过一个小时的讨论后,Menscher的团队迅速达成了帮助Krebs的决定。然而,前期却经历了冗长的流程。首先一点就是,网站所有人必须证明其对网站的控制权,而此时Krebs网站正处于下线状态,而且域名管理系统为防止域名劫持攻击,把其域名(krebsonsecurity.com)又设置为锁定状态。
最终,当Project Shield为KrebsOnSecurity提供上线保护之后的14分钟,新一轮DDoS攻击开始了。第一波攻击是足可以瘫痪大量网站的每秒1亿3000万的SYN洪水包,但面对谷歌的基础设施,这算是九牛一毛;一分钟后,攻击强度增加,来自145,000个不同IP发起了每秒250,000次HTTP请求,毫无疑问,这是Mirai僵尸网络的特征;随后,攻击者以多种方式发起了攻击,包括140Gbps的DNS放大攻击和每秒400万syn-ack包的syn-acka洪水攻击。
在攻击开始后的第四个小时,KrebsOnSecurity经历了更强的攻击流量,175,000个不同IP发起了每秒450,000次HTTP请求,好在有Project Shield的保护,这也没能对KrebsOnSecurity造成直接影响。
攻击在开始的两个星期最为强烈,随后,攻击者加入了一系列新型攻击技术,包括一种名为WordPress pingback的攻击,该攻击会发起对目标网站的大量内容请求,导致网站瘫痪。由于该攻击方式的每个内容请求包内,包含了一个带有“WordPress pingback”的用户代理广播字段,所以,Google有效地对这些请求作出了阻止。另外的Cache-Busting攻击也同样被Project Shield成功阻挡。
WordPress的Pingback功能中文解释是“引用”,当你的文章有引用别人的内容时(通常内容里有加上对方的超链接),一旦文章发表后,就会自动启动Pingback功能,这功能会发送一个Ping给对方,会以评论的方式呈现。WordPress的pingback服务可被DDoS攻击利用,这个漏洞早有披露,但至今仍有大量网站存在此问题。由于这种DDoS攻击中流量来自数千个不同IP,基于网络的防火墙也无法识别和拦截,只能限制每个IP地址的访问频率。
即使在今天,对KrebsOnSecurity网站的DDoS攻击也依然存在,最坏的结果只是引起一些短暂的中断,并没有导致长时间的宕机下线。Menscher同时也把此次事件的经验向会议观众作了分享:
由于我在谷歌的多年一直是致力于保护大型网站系统的安全运行,成千上万次的查询请求或攻击对谷歌来说影响非常微小,然而,突然面对一个小型网站的保护,我显得有点措手不及。由于Krebs的网站原先最多只能承受每秒20次的请求,但这次攻击峰值却达到了每秒450,000次请求。面对这种情况,作为安全工程师的你会怎么处理?这确实有点棘手。但首先你可以识别和限制攻击流量,然后通过缓存分散正常流量,这样一方面可以给服务器减负,另外在服务器出现故障时,还能为浏览用户正常提供缓存内容,形成一个暂时的“在线”状态。
当问道在DDoS防护商Akamai宣布停止为KrebsOnSecurity提供无偿保护之后,为什么Google愿意免费提供这项网站保护服务?Menscher给出了解释:
“我们暂且不提规模经济方面的考虑。因为谷歌具备很多方面的技术实力,通过这些技术基础设施的共同发挥,完全有能力构建一个有效DDoS后备防御体系。我想Akamai也希望具备这样的能力,但在同一时间两次强大的DoS攻击面前,攻击者发起的各种类型的攻击占了上风,转而慢慢蚕食了他们的防御能力。”
对Menscher来说,最终的体会是,像Google这样运行着至关重要的业务,一年离线状态不会超过5分钟的公司,有必要作出一些冒险和挑战的尝试。
他进一步解释,“我是一个唯物论者,在现实中我们总尝试去分辨世界是如何运转的,但基于此,我们必须有正确的问题导向,必须去做一些调查研究,也必须主动去质疑一些假设。这种道理与DDoS防御是相似的,我们不能总看到眼前的攻击,还需更加积极、更加冒险地去应对或挑战一些未知的攻击。”