拒绝服务攻击
3月11号,星期二,GitHub由于分布式拒绝服务攻击(DDos)宕机两小时。我知道你希望GitHub一直是可访问的,我非常抱歉让你失望了。我想解释发生了什么,我们如何应对的,以及我们正在做未来减少这种攻击的影响的工作。
背景
从去年开始,我们已经注意到了大量的、形式多样的、针对GitHub基础设施各个部分的拒绝服务攻击。我们在建立减弱策略时要考虑的两种大概的攻击类型有:容量耗尽的攻击和复杂的攻击。
我们已经设计的DDos减弱策略可以响应这两种攻击。
容量耗尽攻击
容量耗尽攻击目的是通过陡增的攻击来消耗某些资源。随着基于使用DNS、SNMP或NTP之类的协议的放大攻击的、UDP的越来越快频率的延迟,这种攻击逐渐显现。抵御攻击的唯一办法是拥有比所有攻击节点总量还要多的可用网络容量,或者在它达到你的网络之前过滤掉攻击流量。
对付容量耗尽攻击是一个数量游戏。谁有更多的容量谁就获胜。在这个思路下,我们采取了一些步骤让我们防御这些种类的攻击。
我们以非常低效的方式操作外部网络连接。我们内部运输环路能够处理比正常每日峰值差不多更多的流量。我们也继续评估扩展网络容量的机会。这给我们更大流量的净空,尤其是,一段时间内它们倾向于加速增长到其最大峰值的吞吐量。
除了管理我们自己网络的容量,我们和一家领先的DDoS减弱服务提供商进行合作。一个简单的Hubot命令能够重新路由我们的流量到他们的网络,而他们的网络每秒处理T字节数据。他们能够吸收攻击,过滤恶意流量,把合法的流量引向我们做正常处理。
复杂的攻击
复杂的攻击也被设计为消耗资源,但通常是运行昂贵的操作,而不是大量占用网络连接。这些例子就像SSL协商攻击,请求web应用程序的计算密集部分,和”Slowloris”攻击。这些种类的攻击经常需要深入理解应用程序的架构,因此我们宁可自己处理它们。这允许我们在选择对策以及把它们对合法请求的影响最小化时,做出最好的决定。
首先,我们投入了巨大的工程师资源来加固计算基础设施的所有环节。比如调优Linux的网络缓冲区大小,配置载入平衡为合适的超时,在应用层做速率限制等等。在我们的基础设施建立恢复机制对于我们来说是一个核心工程,需要持续迭代和提高。
我们也购买、安装了一个软件和硬件平台,用来检测、减弱复杂DDoS攻击。这让我们执行详细的流量监控,便于能够应用流量过滤和访问控制规则来阻止攻击流量。拥有平台的操作控制使我们能够快速调整对付展开的攻击的对策。
我们的DDoS减弱伙伴也能够抵御这些种类的攻击,我们把他们作为最后一道防线。
发生了什么?
在21:25...