受到攻击的 DigitalOcean Droplet 正在遭受 DDoS 攻击,调查原因的正确流程是什么?

受到攻击的 DigitalOcean Droplet 正在遭受 DDoS 攻击,调查原因的正确流程是什么?

今天 DigitalOcean 通知我,由于遭受 DDoS 攻击,我上面的 Droplet 已断开连接。

他们要求我进行调查并找出原因。

这是 Ubuntu 14,我上面有 6 个 Apache VirtualHosts。全部处于活动状态。

我的一个网站是安装了 WordPress 并带有几个插件的网站。

另一个网站包含一些 Google Maps API 代码。

其余的只有我的原始代码。

我还没有进入服务器。进入后,如何才能正确找到导致此问题的软件?

我怀疑发生这种情况是因为我没有使用带有密码的 SSH 密钥。

答案1

首先,我对不得不处理这样的事情表示歉意。但你可以解决这个问题。首先,我只需要解决这个问题:

我怀疑发生这种情况是因为我没有使用带有密码的 SSH 密钥。

99% 肯定不是这样。在我 20 多年的经验中,我亲自处理并清理过的几乎所有 Web 服务器入侵都来自应用程序级缺陷,并且不是任何与 SSH 或 SFTP 连接的东西。事实上,大多数 Web 开发人员/管理员永远不会处理 SSH/SFTP 级别的攻击;前端代码中的缺陷是许多恶意软件和对公共 Web 系统的不必要入侵的主要入口点。

就您的情况而言,您陈述了以下内容:

这是 Ubuntu 14,我上面有 6 个 Apache VirtualHosts。全部处于活动状态。

我的一个网站是安装了 WordPress 并带有几个插件的网站。

另一个网站包含一些 Google Maps API 代码。

我猜想,除非您及时更新 WordPress 更新/补丁,否则您的 WordPress 安装很容易受到攻击。而且不仅是 WordPress 核心,插件也同样如此。

备份现有的代码库、数据库和配置。

我要做的第一件事就是关闭 Apache 虚拟主机,可能的做法是index.php在这些站点的每个根索引中设置一个“停机维护”的标签。我还将通过 TAR/Gzip 存档复制每个虚拟主机安装,并下载以供将来取证。所有 Apache 虚拟服务器都应执行此操作,包括 MySQL 数据库的转储以及相关配置文件。

检查/tmp/目录是否有任何感染迹象;如果需要,请将其吹掉。

我建议你做的下一件事是转储并重新创建/tmp/服务器上的目录。原因是 Linux Web 服务器上的许多恶意软件感染都会将大量有效载荷放在/tmp/目录中。我会更深入地探讨在这个答案中但归根结底就是要做以下事情。

因此,首先查看/tmp/目录并确定其中是否存在不应该存在的内容。Linux 系统上 10 个恶意软件中有 9 个能够自行安装/tmp/

如果你不确定里面应该/不应该有什么,/tmp/你可以做一个简单但极端的方法来清除坏东西。只需在命令行中在线运行此命令:

rm -rf /tmp && mkdir /tmp && chown root:root /tmp && chmod 1777 /tmp

或者像这样单独运行每个命令:

sudo rm -rf /tmp 
sudo mkdir /tmp
sudo chown root:root /tmp
sudo chmod 1777 /tmp

然后重新启动服务器,看看是否能解决问题。如果能,恭喜你!但你还没有脱离险境,因为无论是什么原因导致的原始系统仍然可以渗透到你的系统中,它们再次感染你只是时间问题。这意味着,这可以清理由系统中的弱点造成的混乱,但你需要找出这个弱点可能是什么并加强它。

Bash“shellshock”漏洞检查。

在另一个答案中,我提供了有关如何检查bash“shellshock”漏洞的提示。该网站提供了很好的测试工具查看您的服务器是否容易受到bash“shellshock”攻击。说实话,自从发现以来,这是我必须修补的最常见的安全漏洞之一。因此,这很可能也是服务器上的一个弱点。至于如何修复发现的漏洞bash,请参阅下面有关如何升级/修补所有操作系统级组件的部分。这样做,也bash应该会升级/修补。

升级/修补所有操作系统级组件。

这听起来可能令人望而生畏,但事实是 Linux 系统的安全补丁一直在发布。如果您使用的是标准化的 Linux 安装,如 Ubuntu 或 CentOS,那么您可以像这样通过软件包安装程序运行更新/升级。在 Ubuntu 上,只需执行以下操作:

sudo apt-get update

sudo apt-get upgrade

现在,如果您有一段时间没有更新系统,您可能会看到大量需要处理的补丁和更新。不要惊慌!这是正常的。只需运行updateupgrade等待。之后可能需要重新启动,但完成后,您的核心操作系统应该已完全修补并保持最新状态。

评估您的 Apache 虚拟服务器代码系统的代码库;WordPress 和 Google API 的内容。

做好准备:这是最丑陋的部分。你应该下载并评估代码库潜在感染。希望只有一两个网站受到攻击。如何解决此问题因设置而异,但通常您应该做的是将每个网站加载到开发环境中,升级 WordPress 核心,升级插件,检查一切是否正常,然后认为代码干净/稳定。

现在我已经大大简化了这一步。但现实情况是,即使打了补丁并进行了升级,你的 WordPress 核心中仍然可能存在恶意软件代码。因此,你可以做的另一件事是从头开始重建每个 WordPress 网站。保留数据库、模板,然后从新的、干净的 WordPress 核心重建网站。

是的,这听起来工作量很大,但如果您拥有那么多带有不同代码库的虚拟服务器,就别无选择。

验尸建议。

这并不适用于所有人,但我要说的是:备份,甚至可能是干净代码库的 GitHub 存储库是清理混乱的方法,而不需要我上面提到的混乱的最后“评估”步骤。

我所做的是,在我工作的任何数据库驱动站点上运行常规 MySQL 转储,并确保 GitHub 中的核心代码库是干净的。然后,如果发生恶意软件感染,我可以挖掘 MySQL 备份,甚至从 GitHub 重新部署干净的代码,以确保代码库是干净的。如果服务器本身被彻底感染了呢?好吧,只需转储受感染的系统,重建一个新的 Linux 系统,部署代码,导入数据库,调整配置,然后就大功告成了。

请记住,99% 的网站都只是一个数据库、代码库和一组配置。如果您有某种干净的方法来“冻结”或备份未感染的代码和 MySQL 数据库的备份,那么您所要做的就是处理配置问题。与从头开始清理代码相比,这只是小菜一碟。

相关内容