自2019年10月起持续记录

事后分析:AMS-01,十一分钟,2020年10月14日

一次针对单个客户的 340 Gbit/s 攻击导致整个阿姆斯特丹站点离线十一分钟。我们自那以后一直在运行的过滤就是因此而来。

摘要

2020年10月14日,UTC时间02:41至02:52,AMS-01的每个实例均无法访问。针对单个客户地址的流量型攻击峰值达到340 Gbit/s,使该站点的上行链路饱和。我们通过请求上游丢弃至目标地址的所有流量解决了问题,这恢复了站点,但该单个客户又离线了五十分钟。没有数据丢失,也没有实例受损。该站点当时没有清洗能力,这是一个采购决策而非意外。

时间线

所有时间均为UTC,2020年10月14日。

时间事件
02:41:04指向单个客户地址的流量在不到二十秒内从约200 Mbit/s升至90 Gbit/s。
02:41:30两个站点上行链路均已饱和。站点所有前缀丢包彻底,而不仅限于目标。
02:42自动化告警因外部三个探测器的可达性而触发。
02:44值班工程师上线。攻击在端口图表上可见,其他任何地方都不见,因为我们的流量采集采样率跟不上。
02:46测量峰值达到340 Gbit/s。组成为反射UDP,主要来自数万个源的DNS和NTP。
02:47决定请求上游丢弃所有发往目标地址的流量。这是当时我们唯一可用的工具。
02:49丢弃规则在第一个上游传播。
02:51第二个上游应用该规则。上行链路利用率降至容量以下。
02:52:10站点完全可达。客户可见的总中断时长为十一分钟六秒。
03:20已联系受影响的客户并提供新地址。
03:42客户迁移至新地址;其服务恢复正常。

根本原因

直接原因是我们无法吸收的攻击。实际原因是我们在此类攻击频繁的城市销售主机,仅有200 Gbit上行链路且毫无过滤,还将上游丢弃协议当作计划。

这不是运气不好。这是2019年决定将资金用于硬件的决策,而且决定是错误的。

两个次要问题使情况更糟。我们的流量采集采样率导致在真实事件中无有效细节,因此前四分钟花费在阅读接口计数器上。而且丢弃操作是手动的,需要有人清醒、已认证且有信心,这在凌晨三点是三个过多要求。

这对客户造成的影响

直白地说:我们通过关掉客户服务解决了自己的问题。丢弃路由是决定让单个客户不可达,以便其他人可达。在我们拥有的工具下这是正确的举措,但这仍然是客户的而非我们自身的中断,他们也没有购买任何承诺避免此事的产品。

他们留了下来。我们没有收取他们十月份的费用。

我们做出的改变

  1. 边缘始终在线清洗,在三周内购买,起于1.2 Tbit/s容量。过滤永久置于路径中,因此没有检测延迟,也无需任何人在02:47按下按钮。这现在是所有站点的标准,最大站点可达12 Tbit/s。
  2. AMS-01上行链路提升,首先增加200 Gbit/s容量,后来提升至该站点今天运营的400 Gbit/s。
  3. 每个站点边缘均部署未采样的流量遥测,为运维目的保留七天。这是我们自己端口的流量元数据;不是实例流量,也不是任何内容。
  4. 丢弃路由变成自动化,具备明确的阈值、公布的政策,并在六十秒内向受影响客户发送邮件,而非三十九分钟。
  5. 攻击在[状态页](/zh/status)上公布,包含规模和持续时长,无论是否有人注意到。

我们未改变的内容及原因

我们没有对过滤额外收费。 基础清洗包含在每个站点所有计划中,且自从我们购买之日起一直如此。攻击不是受害者要求的服务。具有自定义规则的7层过滤作为附加服务存在,因为它需要我们这边的人来维护,这与流量型洪水是不同的。

我们没有移除丢弃路由。 每秒十二太比特是一个数字,而非无穷大,假装我们不会再次需要这个粗暴工具是不诚实的。改变的是,它现在记录为最后手段,而非唯一步骤。

我们没有强加每客户流量上限。 将每个客户限速至上行链路的安全比例虽能防止此事,但同样也会限制所有合法流量高峰。过滤应针对攻击位于边缘,而非针对客户。

我们没有将客户迁移至不同产品。 他们正按其支付的方案运行着他们购买的东西,且这不是他们的错——有人向您发了僵尸网络攻击。

随时恭候

选择城市,选择大小,用加密货币支付。

无需填写关于您的身份信息的表格,无需等待人工审批,无需电话验证。账单结清后,凭证将发送到您的邮箱。