上个月,我们FastMail遭到DDoS攻击。在这一周中,我们学到了关于DDoS攻击的许多干货以及防范措施。
什么是DDoS攻击?
DDoS即“分布式拒绝服务”。从根本上说,所有的互联网服务需要对网络请求执行某些操作并返回结果。要做到这一点,服务将投入一定量资源实现每个请求,其中的资源包括网络容量,CPU周期,存储器,IO等等。DoS攻击的通常方法是从外部寻找一些方法来耗尽可用的资源,所以导致没有资源留给合法请求。
有很多方法可以DDoS,最简单的是攻击者破坏该服务接受请求的网络连接。这就是“分布式”部分,使世界各地受感染的计算机(通过恶意软件和病毒)被指示发出大量请求网络服务的同时,堵塞网络连接并阻止合法请求。
DDoS攻击背后的想法是为攻击者产生比接收站点可以处理的更多的流量。一台计算机不可能有足够的网络资源来攻击一个服务器,如果这个服务器是高容量连接到网络的一个节点。但是,如果你能使得世界各地的在不同网络中的电脑在同一时间发出请求,你可以把这些汇聚起来让服务器处理。
主要的方式是通过“僵尸网络(botnet)”。一个僵尸网络由许多个(通常为几百或几千个)已安装了恶意软件的家庭或工作计算机组成。恶意软件的来源是电子邮件(垃圾邮件/病毒),附加的软件安装程序(广告软件/恶意软件)等。一旦安装上,该软件将通知控制服务器并等待指令。攻击者会发出一个命令指示这些机器开始发送大量的网络请求到被攻击的网站。
DDoS的另一种方式被称为“扩增攻击”。一些互联网服务(特别是DNS和NTP)经常错误配置成通过一个小的请求来诱骗服务发送大量响应到别的地方。如果几个僵尸网络的计算机都发出这类请求,就会导致大量的流量击中目标。现在僵尸网络越来越容易让人访问。你可以在某些网站租用一个僵尸网络一段时间,用信用卡或比特币支付,并通过一个简单的Web表单选择你的目标。
DDoS防御准备
在我们的例子中,我们确定了DNS和内部数据中心的VPN连接是最关键的。DNS是至关重要的,因为即使我们处于脱机状态,正在工作的DNS让网站发送电子邮件队列,而DNS的损失可能会导致反弹出现。另一方面,我们的数据中心之间的VPN链路,让我们的内部基础设施保持正常运行,即使外部网络出现故障,在集中攻击的这段时间内我们也没有一大堆的内部服务(如跨数据中心复制)发生崩溃。
网络防御
防止洪水般的流量进入你的网络的最好方法是让它远离你的网络。 DDoS攻击试图汇聚来自世界各地的流量到你单一的网络连接中。如果你能得到去别处的流量,那么你的网络连接就能对合法请求作出响应。
Web和DNS缓解
对于典型的Web应用程序,要做到这一点最简单的方法就是把一些全球分布式网络/ DNS代理(又名CDN)在你的服务前。这些使用Anycast来强制发往你的网站,先通过代理服务器物理上接近机器发出请求。他们还实施了各种DDoS防护和过滤,所以只有合法得到的东西才会传递给你。
当然,这只是如果攻击者不知道如何直接找到你时阻止攻击的办法。如果你曾经在DNS中发布自己的网络范围,那么每个人都知道你在哪里,即使你挂了代理。在这种情况下,你需要弄一些从来没有公布的新的公网IP地址,并且只提供给代理供应商,那么攻击者才能难以找到你的网络。
对于FastMail,网络代理是不够的,因为我们有重要的非Web服务(IMAP,SMTP等)的负载。正如我前面所说的 DNS是关键部分,所以我们现在在公共DNS使用CloudFlare虚拟DNS服务。我们传统的DNS域名服务器 ns1.messagingengine.com和ns2.messagingengine.com现在通过CloudFlare的服务器遍布世界各地,它通过新的、未公布的IP地址连接回我们。如果没有返回,他们会继续服务于缓存响应,直到我们回来。
与数据中心供应商合作
我们不会在云基础架构上运行我们的业务。相反,我们在不同的地点有自己的服务器运行在管理数据中心。像我们这样,数据中心供应商将把所有直接链接到“支柱”,这是高容量网络把不同的ISP、网络供应商和大型企业连接在一起而形成的“互联网”。这是减轻DDoS攻击最好的地方,因为可以看到流量的绝对数量并对其进行处理。在我们的例子中,NYI安排他们的网络合作伙伴之一来宣传我们的网络,指导DDoS攻击防护服务,过滤掉垃圾并传递合法的数据包到我们的网络。
NYI还提供给我们一个小范围的未公开的IP地址。正如前面所提到的,我们在这里为CloudFlare增加了一个DNS服务器来代理DNS流量,而我们通过这个范围的地址路由了跨数据中心的VPN连接。从理论上讲,如果我们的主网络阻塞,这种辅助网络应保持可用,因此DNS和跨数据中心之间的流量可以继续畅通无阻。
显然,有的攻击我们永远不能阻止,比如直接针对数据中心提供商的攻击,但这些都是攻击者使用那些“出售的”僵尸网络很难实现的。就像网络安全中所有的问题一样,你防御不了一个资源丰富而且坚定针对同一目标的攻击,但你可以对随意攻击做很多防御。
想要进一步了解如何应用DDoS攻击的防御措施,请关注播报推出的后续文章!
还没有评论,来说两句吧...