在11月初,有人决定要破坏我们的公司。他们在两周内使我们遭受了多次恶意的,有针对性的DDoS(分布式拒绝服务)攻击。它们旨在破坏客户数据的完整性并使我们的服务脱机。这种攻击不是随机的,也不只是典型的垃圾邮件。这次攻击针对Fathom,旨在使我们破产。
最近几年充满了艰苦的工作。我们遇到了很多挑战,要处理大量的合规性法律,要扩展大量的分析数据等等,但是我们从未遭到过恶意攻击。
自从将Fathom Analytics纳入公司业务以来,我们一直处于一个幸运的位置,可以将大部分时间用于改进软件和为客户提供支持。除此之外,我们还将致力于营销,法律,会计以及发展业务所需的所有其他方面。
在早期,Fathom运行在数千个小型网站上。但是Fathom并不是一个业余爱好项目,我们两个人都已经全职投入了一段时间。我们不再是新手。我们一次又一次地证明了自己,并已成为领先的隐私优先分析解决方案。如今,Fathom已被世界上一些最大的公司所采用,并且我们已经在分析领域中建立起来。
Fathom非常成功。尽管我们一直努力工作,但旅途相对顺利。我们用自己的时间做自己喜欢的事情:为世界上最好的客户开发软件。当我们说“世界上最好的客户”时,我们并不是说这是a头。在撰写本文之前,我们通过电子邮件向所有客户发送了有关我们遭受的DDoS攻击的信息,每个回复都充满了支持和热爱。我们如此幸运的客户真是令人难以置信。
我们真的很顺利。我们刚刚迎来了我们的播客DuckDuckGo的第一个大客人,我们在Version 3上取得了一些巨大的进步。我们正在构建创新的新解决方案,并每天吸引那么多新客户上门。一切都感觉非常同步。
但是随后,一些客户开始发推文并向我们发送电子邮件,说他们的仪表板受到了巨大垃圾邮件攻击。
事实证明,我们的少数客户遭到了垃圾邮件攻击,使他们的仪表板无法读取。当时,我们并没有考虑太多。推荐垃圾邮件是所有分析公司都面临的问题,并且在过去几年中已经发生过几次。我们清除了数据,我们的客户再次感到高兴,我们可以自由地继续生活。还是我们想到了。
在11月5日,我们开始受到数千个并发连接的打击。一次可以建立3,000至10,000个并发连接。实际上,3,000个并发连接相当于每月约790亿的页面浏览量。
我们以为这很奇怪,并且我们知道这是垃圾邮件攻击,但是我们的系统能够接受它。垃圾邮件攻击的主要缺点是,它造成了大量积压,并将垃圾邮件放置在目标客户的仪表板上。目前,我们将所有传入的页面视图都放入SQS(无限扩展的队列系统)中,并使用数量有限的“队列工作器”对其进行处理,以确保我们不会使数据库超载。好吧,因为我们收到了成千上万的并发请求,所以我们的工作人员跟不上进度,开始积压工作。所以我不得不写一些代码来表达积压工作。
这次袭击发生在我观看Nan葬礼的视频链接的同一天。我只想和女儿在一起,但这次袭击意味着我必须从早到晚都在计算机上。这一天压力很大,我被感动了。
第二天我醒来,情况看起来不错。我们仍在积压中追赶,但只有1%的客户存在数据延迟。
但是,在上一次攻击结束后约13个小时,第二轮比赛开始了。这次攻击比上一次攻击要小。它进行了2个小时,然后中断了45分钟(计算机必须休息一下),然后转变为一种模式,使它们每小时发出约2次攻击,持续4个小时。
一旦完成,我们认为事情必须结束了。他们连续数天对我们发动攻击,对他们造成了一定的伤害,可以肯定的是,现在该转移到下一个目标了。
11月8日,袭击再次发生。它们与以前相同,但是它们发送了更多的流量,并且由于我们受到多达500,000个油门(流量拒绝)的冲击,将近4个小时,我们正在节流开/关,并且正在处理8,000个并发执行。
目前,我们仍在追赶积压的订单,因此这不是值得欢迎的贡献。
除了坐下来等着我们,我们无能为力。然后攻击停止了。 21个小时的沉默。结束了吗
11月9日,事情开始变得怪异。攻击者开始在每小时24x7的开始时向我们发送3200个并发垃圾邮件请求。
对我们来说幸运的是,攻击是令人难以置信的可预测的,并且我们已经部署了垃圾邮件防护系统的版本1。攻击者在每小时的某些时间向我们充斥垃圾邮件。因此,我们通过对算法进行了调整,使其在预期的攻击时间内更加敏感。在一些离群值之外,它运行得非常好。我们终于有了第一个胜利。
我们已经从“这糟透了”转变为“我们可以对此作斗争”。关于如何防范垃圾邮件,我们有很多想法,以至于我们决定不再为任何类型的DDoS防护服务而动弹,我们可以自己处理。但是我们错了。
那是11月15日,间歇性攻击仍每小时24x7的速度运行。我们度过了一个辛苦的一周,但我们对缓解技术感到满意。我们可以忍受这个。
我们已经决定仅将lambda并发限制提高到每秒8,000,000个请求(800,000个并发),并使用DynamoDB针对各种阻止技术来处理垃圾邮件攻击。向我们发送我们的算法认为是垃圾邮件的流量?您被禁止了。尽管我们知道这似乎是一个极端的解决方案,但我们将尝试一下。
我决定暂时休息一下。我被擦了。我们不仅整周都成为了DDoS垃圾邮件攻击的受害者,而且我还必须了解很多我不需要关心的领域。有太多信息要吸收。
我和妻子共进晚餐,我们坐下来一起看电影。在过去的10天里,父亲和丈夫不在后,我很高兴能与妻子在一起。然后我的电话响了。我们再次受到攻击。我告诉妻子我会马上回来的。
我跳到计算机上,可以看到攻击者已经加快了速度。他们对已经造成的损失不满意,因此在星期六晚上袭击我们,使我们的服务离线。
现在,我们再次收到数十万个并发请求。我们在指标中只能看到金字塔。这些金字塔显示出每分钟500,000个油门的多次波动。对于仍然不太确定“限制”的非书呆子:我们在没有管理服务器的情况下运行应用程序(无服务器)。因为这样做,我们可以选择一个明智的“最大并发”设置,以避免超支和其他各种事情。直到这次攻击之前,我们一直都被严重超额配置,无法靠近任何地方。并且请记住,我们已经配置了并发性,每月可以处理数十亿的页面浏览量。但是我们没想到会在一分钟内收到成千上万的请求。
想象我们的支持,贾斯汀·比伯(Justin Bieber)在Fathom网站上发了推文给他的113,000,000粉丝。想象一下,在10分钟之内,他的每个追随者都单击了该链接(因为,嘿,谁不喜欢隐私优先分析法)。这可能相当于18,833个并发连接(假设我们花了100毫秒来处理每个请求)。
在这次攻击中,有时我们每分钟被发送相当于26封贾斯汀·比伯推文(JBT / m)。
不用说,此攻击使Fathom断断续续地脱机,并且我们认为Fathom脱机了相当长的时间。
这次袭击持续了4个小时。这是迄今为止最大的攻击。大部分时间我都在与AWS Support通话。到尘埃落定时,已是晚上11点。我的妻子在床上,与她的夜晚消失了。
我很生气作为一家公司,我们已经达到了突破点。我们知道我们必须引进大手笔。我们为建立小型企业付出了巨大的努力,并且我们不会让这个攻击者摧毁我们。
我们已经被动接受了这些攻击。我们处于一个新世界,这些攻击只会变得更糟,因此我们必须尽可能积极地应对它们。幸运的是,我们是两个非常痴迷的人。每天都有新的想法出现,无数人伸出援手,提出了他们的想法和帮助。知道世界在我们这一边真是太棒了。
前几次攻击使我们感到非常沮丧。他们令人沮丧,我们一无所知。 15天后,我们拥有了如此多的信息,世界上最好的DDoS缓解小组之一,庞大的计划以及建立世界上最先进的垃圾邮件检测系统的雄心。
我们不会让孤独的书呆子攻击我们的业务并破坏客户的分析数据。这些攻击使我们充满了反击的动力,而这正是我们要做的。
在这些攻击的背后,这是Fathom发生的事情:
我们已经引入了垃圾邮件检测系统的版本2。当我们发布版本1时,它的触觉过于敏感,并引发了一些误报。但是版本2已经表现出色,并将为我们的系统增加弹性。
现在,我们可以24x7全天候访问AWS DDoS响应团队。我们可以访问其传呼机,并且可以聘请高度专业的工程师来帮助我们缓解DDoS攻击。唯一的缺点是我们需要将访问日志(IP和User-Agent,没有浏览历史记录)保留24小时,以在发生攻击时进行模式检测。
我们正在构建一个30点系统,以帮助我们衡量网页浏览为垃圾邮件的可能性,从而使其易于检测和删除。这是一种隐私优先的解决方案,其中包含一些14天前我们尚不了解的概念。
我们将深入研究PHP的机器学习,并将其作为上述30个要点之一进行介绍。我非常兴奋,因为我现在有理由使用它。这也将导致整个Fathom在其他领域的产品改进。
我很兴奋的领域之一是我们可以使用Laravel检测垃圾邮件,然后我们可以在“边缘”阻止攻击。很难相信这是14天前带来的压力。现在,这感觉像是一个有趣的挑战,而对于一个好的挑战,我们非常着迷。
自从他们开始阅读本文以来,这就是每个人都在思考的问题。因此,我将分享这次攻击造成的经济损失:
数据库升级:$ 560(这将仅持续约一周,因为我们将迁移到DynamoDB和Elastic Cloud)
尽管我们的业务付出了巨大成本,但此攻击的投资回报率仍为7个数字(以未来价值计)。没有这种攻击,我们就不会开始构建我们复杂的垃圾邮件检测系统,我们希望在几个月后推出该系统。此外,我们现在没有各种保护措施。因此,尽管经历很烦人,但我们很高兴它发生了。
我们来谈谈房间里的大象。为什么不向Cloudflare寻求DDoS攻击方面的帮助?毕竟,他们在这种事情上有很多经验。
坦率地说,即使它们是“免费”的,我们也不会对它们的使用感兴趣。他们是我们的竞争对手,这不是一个很好的选择。根据记录,Cloudflare拥有一支出色,才华横溢且友好的团队。我并不是说您不应该使用Cloudflare,而是在解释为什么我们不使用Cloudflare。
我不知道有人从AWS那里签署了这项每月3,000美元的服务的申请,该服务称为AWS Shield Advanced。这项服务对我们来说最大的价值在于,我们可以与世界上最好的DDoS缓解专家联系。如果发生攻击,我们可以对其进行寻呼,它们将帮助我们减轻攻击,创建防火墙规则,确定不良行为者并提供建议。因此,不仅仅是我们两个人对DDoS攻击做出响应,我们还有可以与之交谈的天才工程师,这感觉很好。
在我告诉您到目前为止是否值得之前,我将快速为那些好奇的人概述其功能:
DDoS成本保护-如果必须扩大我们受保护的服务以吸收攻击,AWS将向我们发放信用以应对攻击。我的理解是,在这种情况下,我们会因此获得$ 6,000的AWS信用额度(对此不作任何表述,我可能是错的)。
专业支持-DRT将帮助我们对事件进行分类,确定根本原因并代表我们采取缓解措施。
我不想将其变成AWS Shield Advanced的广告,但这只是对该服务的快速概述。
11月20日,星期五,我与DRT成员进行了交谈。这是一次令人难以置信的经历。小伙子的名字叫Fola。尽管我是通过错误地猜出他的口音来开始通话的(他是尼日利亚人,对不起Fola!),但他还是非常愉快,并且对我很有耐心。他花了很多时间来确保我了解所有内容,而请一位熟练地检查我们的基础架构的人是超现实的。
在电话中,我正在向Fola询问最佳行动方案。我们是否应该“禁止影子”,并让攻击者以为他们在没有通过时就通过了。我的前提是,如果我们阻止了攻击者,他们将生气,扩大规模并继续攻击我们。 Fola用一句话简短地回应了我的一切:
似乎很明显,但我需要从专业人士那里听到。然后,他向我解释了攻击者如何进行攻击,他们打算做什么以及最佳响应方式。他告诉我,我们必须在边缘阻止它们并保护我们的核心应用程序。对我来说,这是一个巨大的转变,因为现在感觉好像我们拥有如此强大的力量。攻击者没有无限的僵尸网络。即使他们控制着1,000,000台计算机,我们也可以阻止它们。如果他们带来1,000,000多,我们将再封锁1,000,000。这些攻击使他们付出了代价。他们正在寻找自己的钱。如果我们将403错误返回到他们的僵尸网络,那么他们浪费金钱是愚蠢的。
关于Fola的通话,我要强调的最后一件事是他对我的反应:我们无法保留详细的访问日志。我向他解释说我们是一家隐私优先的网站分析公司,我们不想继续按IP浏览活动,因为我们晚上无法入睡。我们已经设置了访问日志,以便删除查询字符串,引荐来源网址等信息,从而使这些日志对于编译浏览历史记录完全无效,但对于阻止垃圾邮件攻击却非常有用。我期望他推动更多数据,但他平静地说,安全和隐私是他们的第一要务,他们永远不会将我们推向我们不满意的领域。
在发布有关此攻击的推文后,Jeffrey Lyon(AWS Shield工程负责人)与我联系,很快我就与各种产品经理和部门负责人通了电子邮件。每个人都希望提供帮助并听到我们的反馈。我对AWS印象深刻。这不是他们第一次在Twitter上与我联系,并联系到各种产品的负责人。他们的社区参与令人难以置信。
在11月21日(星期六),我们遭受了又一次巨大的袭击。攻击者最喜欢的时间是UTC周六的午夜。但是这次不同了:
这次攻击是巨大的,但由于采用了新的速率限制配置,它的并发峰值仅为305,000个并发(比上周末减少了200k)。但是,我们仍然必须将其升级为DDoS响应团队(DRT)。
我给他们的工程部主管(碰巧是在线的)发了电子邮件,他将事情升级了,但是我还记得我们有一个Lambda函数,我们称之为“ DRT Bat-Signal”,它创建了支持票并为DRT团队页面只需按一下按钮,一切就开始生效。
我很快就与Michel和John(专门研究第7层DDoS攻击的DRT成员)进行了通话。他已经在解析我们的访问日志并寻找模式。看看这些对隐私友好的日志有多有用,这将是一个很好的测试。毕竟,出于隐私原因,我们从访问日志中删除了大量有用的信息。
约翰正忙着扫描数千万条日志。我正在说他的想法,他耐心地听了。我提出了一些想法,但没有一个可行。同时,John正在编译有问题的IP列表,并将它们发送给我以阻止在防火墙上,并且运行良好。但是攻击仍在继续。
然后,John在所有IP地址中确定了一种模式。我敢肯定,我可以在这里分享更多详细信息,但我不愿意,因此请让您自己想象。约翰从2个不同的团队招募了2名员工(Karan和另一个叫John的职员),并在电话中帮了另一个职员。
这次袭击与上周末相同。这位相同的攻击者已经追踪我们3个星期。但是这次,我们有6名来自AWS的人为我们而战。令人振奋。
梦之队经历了各种升级和批准,并能够阻止所有与此模式匹配的请求。这确实令人难以置信,我们得到的护理水平也非常高。在解决攻击和滥用方面,AWS的驱动力和组织性令人难以置信。如果我必须自己应对这种攻击,那么就不可能很快解决。这项AWS Shield Advanced服务提供了他们承诺的一切,但最大的价值在于DDoS响应团队为我们倡导的。他们处理了所有的升级,对他们来说没有什么太多了,让他们站在我们这边感觉真好。一旦将模式块放到位,攻击就会停止。就这样
进攻结束后,约翰完成了轮班,然后猜测是谁取代了他……是福拉!在上周日(他的时区)上午八时,他的喜悦跳入戏。他及时加入,以观察攻击的完成,然后花时间与我一起评估指标。他对我们拥有的数据进行了各种观察,并给了我一个不可思议的计划,该计划将使我们能够在将来自动阻止此类攻击。关于该计划,我不能说太多,因为我不想透露我们的任何保护技术,但是它将对我们有很大帮助。
袭击发生后不久,我与Paul进行了交谈,我们笑着说这是我们两个人中有史以来最大的经常性业务支出,但这很容易成为我们进行的最佳投资之一。
这不是对我们的最后攻击。有人会试图再次破坏我们的业务。