Docker Footgun导致了一个破坏的删除Newsblur的MongoDB数据库

2021-06-29 23:07:38

TL; DR:在迁移期间,一个破坏者被删除的Newsblur的MongoDB数据库。没有被盗或丢失的数据。

我正在将新闻策略中的一切移动到Depcker容器,以便在下周推出的大重新设计。这是维护的一年,我享受了Ansible + Docker的果实,用于Newsblur的5个数据库服务器(PostgreSQL,MongoDB,Redis,Elasticsearch和Soon ML Models)。这一天正在包装,当我在手机上收到一个奇怪的新闻博尔错误时,我会融入一本关于如何驯服机器的新书。

诚实的是,在我想再次看到的那些错误消息中没有一套单词。在那条错误消息中删除了什么?更好地找出答案。

登录MongoDB机器以查看DB所在的状态,我遇到以下内容......

nbset:primary> Show DBS Read_to_To_Recover_your_data 0.000 GB NewsBlur 0.718 GB NBset:Primary≫使用read__me_to_recover_your_data切换到db read_to_to_recover_your_data nbset:primary> D b 。自述。 find(){" _id" :ObjectID(" 60d3e112ac48d82047aab95d"),"内容" :"您的所有数据都是备份。您必须支付0.03 BTC到XXXXXXXXXX 48小时以进行恢复。在48小时后到期后,我们将泄露并暴露所有数据。在拒绝支付的情况下,我们将联系一般数据保护规则,GDPR并通知他们以打开的形式存储用户数据,并不安全。在法律规则下,您面临沉重或逮捕,您的基础转储将从我们的服务器中删除!您可以在此处购买比特币,不需要花费很多时间购买https://localbitoins.com或https://buy.moonpay.io/在用db ip的邮件中向我写信后:[email protected]和您将收到一个链接以下载数据库转储。 " }

发生在此之前三个半小时,我将MongoDB集群切换到新服务器。当我这样做时,我关闭了原始档次,以便在几天内删除它。并且谢天谢地,我确实如此,因为它在几个小时之后进入。知道这一点,我意识到黑客无法在这么少的时间内拿走所有这些数据。

考虑到这一点,我想回答一些关于这里发生的事情的问题。

让我们首先谈论最重要的问题,这是你的数据发生的事情。

我可以明确地写下,在黑客时没有泄露任何数据。我知道这一点是因为两组不同的日志,显示自动攻击者只发布删除命令,并且没有传输MongoDB服务器的任何数据。

您可以想象我在9:35的四十分钟内经历的压力,当黑客开始时,10:15p,当识别出新鲜备份快照并投入齿轮时。让我们击穿每一刻:

6:10P:新的DB-Mongo1服务器作为MongoDB主服务器进行旋转。这台机器是第一个新的,即将私下的云。

9:35P:三小时后,自动黑客尝试打开与DB-Mongo1服务器的连接,并立即丢弃数据库。停机时间。

10:15P:在前主服务器可以旋转之前,进行了一个服务器的快照,以确保备份在重新连接时不会删除。这花了几个小时的停机时间,但通过不强迫我进入日常备份档案的一天的数据占据了近18小时的数据。

3:00a:快照完成,从原始服务器到新DB-Mongo1的复制开始。您在下个小时内看到的是在带宽方面转移DB的转移。

4:30A:复制,该复制来自旧主服务器,完成,现在复制在新介绍时开始出站。 Newsblur现在备份了。

上图最重要的信息表明我们是在带宽方面的完整数据库传输的样子。从6p到9:30p,数据量是来自工作主服务器的预期金额,其中包含多个借调它。在3A时,您会看到转移大量数据。

这告诉我们,黑客是一种自动化的数字破坏,而不是一团一次的黑客尝试。如果我们要支付赎金,那就不会做任何事情,因为破坏者没有数据并没有任何可释放。

我们也可以推理因在码头容器中使用最近版本的MongoDB,因此无法访问MongoDB之外的服务器外的任何文件。除非攻击者可以访问MongoDB和Docker两天,否则它们非常不可能突破MongoDB服务器连接。

当服务器是快照时,我使用那个时间来弄清楚黑客如何进入。

拒绝UFW防火墙,我启用并努力保持严格的allowlist,只有我的内部服务器由于码头仪而在新服务器上没有工作。当我集装箱MongoDB时,Docker有助于将允许规则插入iptables,向世界开放MongoDB。所以,虽然我的防火墙是“活跃”的,但做一个sudo iptables -l | Grep 27017表明MongoDB开放了世界。自2014年以来,这是一个码头脚枪。

要诚实,我有点惊讶,当我翻转开关时,它超过了3个小时,当一个黑客/破坏者的MongoDB集合时,它会假装赎金约250GB的数据。这是自动黑客的工作,以及我准备的。一旦备份恢复,备用备用孔被修补了,新闻博尔在网上回来了。

Warning: Can only detect less than 5000 characters

第一次改变是一种讽刺意味的是,我们正在搬到的过程中。 VPC是虚拟私有云,可让关键服务器免受专用网络中的其他服务器可访问。但在移动到私人网络时,我需要迁移公开可访问的机器的所有数据。这是该过程的第一步。

第二个变化是在所有数据库上使用数据库用户身份验证。我们一直依靠防火墙来保护防止威胁,但是当防火墙默默地失败时,我们被揭露了。现在谁说,如果防火墙失败但是身份验证已经到位,这将被捕获。我怀疑密码需要长时间足以不被强制强制,因为最终知道一个打开但密码受到保护的数据库,它可能最终在列表上。

最后,需要进行更改,根据哪个数据库用户有权删除数据库。大多数数据库用户只需要读写权限。理想将是仅允许允许的唯一用户执行潜在的破坏性动作。如果rogue数据库用户开始删除故事,则会比立即丢弃的数据库速度更快地注意到这一点。

但这些中的每一个都只是一片防御战略。正如这良好的黑客新闻线路从黑客发布所清楚的那一天,一个适当的防御策略永远不会依赖一个良好的设置层。对于Newsblur,这层图层是一个只有允许的防火墙,直到它没有完美地运作。

像往常一样,真正的英雄是备份。常规,经过良好的备份是任何Web服务的必要组件。因此,我将准备在本周晚些时候推出大型新闻博尔重新设计。