了解你的流量
你的应用程序可能只对一种或两种类型的流量感兴趣,例如443端口上的TLS流量。你可能并不关心自己的网络设备或主机的防火墙。问题是,这种流量已经在你的网络上,与其他合法流量竞争带宽。如果你了解你的流量,那么你可以跟你的上游网络提供商谈谈让他们中断那些你不需要的东西。
在我们的例子中,第一个“warning shot”攻击由一些NTP请求和80端口上的随机UDP数据包组成。这些都不是我们感兴趣的所以早就被挡在了主机防火墙之外。攻击中,90%传入的包都是这种,而只有10%是合法的用户流量。我们被中断了这些,而其余的服务正常,但只有10%的数据包通过,那么你的TCP连接不会开心。因此,我们要求NYI在它们进来之前阻塞这些流量。这样做意味着一个潜在的攻击者有可能生成看起来很像你的合法流量。这通常不难实现,但至少它不是常见的攻击方式。
应用防御
正如我一开始所说的,拒绝服务攻击将耗尽合法的服务网络请求所需要的资源。在DDoS中,网络被锁定的资源,但是考虑其他类型的攻击也很重要。在我们的例子中,我们不知道攻击者的能力和真实动机,我们不知道会发生什么,如果他们改变为另一种形式的攻击,我们就会被打败。因此,我们开始寻找方法来在应用程序级别添加防护以对抗更为复杂的攻击。
关于这一类的攻击最主要的是,他们都针对你的服务器,这样你就可以对应用程序使用所有你知道的方法来帮助抵御它。在我们的例子中,我们设置了的一段时间内“好”与“坏”请求的配置文件。当我们遭到攻击,我们就可以运行一个命令,这将导致“坏”的请求在防火墙外被丢弃,把他们拦在应用程序代码之前。一个“坏”的请求未必是我们不希望的服务,而是一次产生太多请求(即在攻击的情况下)会严重影响服务器对“好”的请求的处理能力。“好”与“坏”是依赖于应用程序判断的。我故意不提供我们如何配置文件“好”与“坏”请求的细节,因为我不想透露究竟是如何“放置”系统受到攻击前的信号给潜在的攻击者。这也是将继续随时间而改变的策略。
和用户谈谈
技术防御是伟大的,但没有办法阻止一切攻击,这意味着当攻击发生时你的用户会注意到。所以,请在那发生之前让他们知道会发生什么。
在我们的例子中,我们传达给用户的是早期的“warning shot”攻击,通过状态页和Twitter帐户。我们对“分布式拒绝服务”解释的很明确,因为有很多用户有足够的娴熟的技术能理解这意味着什么,并做出相应的反应。我们非常小心不透露太多的细节,直到我们建立起防线,因为我们不想让自己的通知信号变成攻击者的指引。我们发布这个博客让用户收到尽可能多的警告,这可能意味着他们有时间做准备来应对。他们的反应是非常积极的 —— 我们收到数以百计的邮件希望我们加油,很多新注册的用户只为支持我们,其中有些人很让人感动,他不打算实际使用我们的服务,但是买了认购,只因为他们想给我们一些实实在在的支持。
留意后续攻击
现在全世界都知道这已经发生了。也许只有一小部分的世界,这取决于服务器的规模,因为你所有的用户之间的通信是相连的。因此,保持清醒应对可能发生的后续攻击。最初的攻击者可能会终止,但模仿者也很常见,特别是他们怀疑你不再警惕。
收集有关攻击者的数据
可以对攻击收集尽可能多的信息。源IP地址是主要的一个,volume也非常有用。如果可以匹配其它应用程序的数据就会方便太多。如果你正在使用某种类型的防护服务,询问他们这方面的资料,及您可以使用此设置添加黑名单。
与计算机安全组织谈谈
许多司法管辖区有某种组织致力于电脑和基于互联网的威胁,往往对这些类型的攻击感兴趣。在澳大利亚有CERT Australia;在美国有US CERT;有可能你的国家也有类似的组织。他们可以使用源IP等有关攻击的信息,可以帮助找到责任方等相关联的信息。
查看您的安全配置
无论如何你都应该定期这样做。如果攻击者知道你在一个地方有足够的防御,他会尝试不同的方式,你需要做好准备。