如何让 Linux 崩溃
执行许多危险命令可能会导致 Linux 系统崩溃。您可能会发现一个邪恶的用户在您管理的系统上执行这些命令,或者有人可能会向您发送看似无害的命令,希望您运行它并使您的计算机崩溃。
对于系统管理员来说,了解这些命令并在自己的系统上运行它们以确保他们已采取适当的措施来防止这些攻击非常重要。话又说回来,也许您只是一个好奇的用户,并且想要让虚拟机崩溃以获取乐趣。那也很好。
在生产系统和不属于您的计算机上执行这些命令时请务必小心。使别人的系统崩溃可能会给您带来麻烦,因此在运行下面介绍的命令时要小心。在本教程中,我们展示了几种可用于使 Linux 系统崩溃的不同方法。
在本教程中您将学习:
如何让 Linux 崩溃
如何防止Linux崩溃
如何使 Linux 系统崩溃
警告
请务必仅在测试机或虚拟机上测试此代码。在另一个系统上使用它,即使是出于测试目的,也会让您看起来像一个试图破坏系统的攻击者。而且,在某些情况下,您可能会成功。
下面的代码行是 Bash shell 的一个简短而甜蜜的 fork 炸弹。分叉炸弹之所以有效,是因为它能够产生无限数量的进程。最终,您的系统无法处理所有这些,并且会崩溃。 fork 炸弹的一大优点是您不需要 root 权限即可执行它并获得所需的效果。
$ :(){ :|:& };:
查看我们的 Linux fork 炸弹指南,了解它们的工作原理以及如何防止它们使您的系统崩溃。
这是另一个 fork 炸弹,但这次是用 Perl 编写的。这与 Bash 叉子炸弹一样有效。尝试运行两者以查看测试系统如何响应(或不响应)。
$ perl -e "fork while fork" &
您可以使用简单的 rm 命令删除整个根目录。这将很难恢复,并且简单的重新启动无法修复它,因此请谨慎运行。
$ sudo rm -rf / --no-preserve-root rm: it is dangerous to operate recursively on '/' rm: use --no-preserve-root to override this failsafe
正如您所看到的,我们的系统足够智能,可以就该命令向我们发出警告。让我们忽略这个警告并与我们的虚拟机吻别。
$ sudo rm -rf / --no-preserve-root
我们还可以使用简单的 dd 命令将零写入整个硬盘。这个尤其令人讨厌,因为它可以覆盖 Linux 环境之外其他分区上的数据。而且,更糟糕的是,我们没有收到任何有关该命令危险的警告或确认提示。
$ sudo dd if=/dev/zero of=/dev/sda5
将
/dev/sda5
替换为您要删除的设备或分区。执行此命令后,我们的测试系统只花了几秒钟就关闭并且无法恢复。
如何防止Linux崩溃
叉子炸弹通过产生无尽的进程来工作。因此,我们可以通过限制一个用户或一组用户可以同时打开的进程数量来防止 fork 炸弹崩溃。查看我们的 Linux fork 炸弹指南,了解它们的工作原理以及如何防止它们使您的系统崩溃。
对于其他命令,例如删除大量系统文件或覆盖硬盘分区的命令,除了将 root 访问权限限制为仅受信任的用户之外,没有简单的方法可以阻止所有这些操作。最重要的是,您的用户需要拥有安全的密码,并且您应该对重要文件设置适当的文件权限。
尽管如此,人们总是容易受到网络钓鱼和社会工程的影响。如果有人获得了 root 帐户的访问权限,您将无法阻止他们破坏系统。在这种情况下,你最好有一个备份。
结束语
在本教程中,我们看到了几种导致 Linux 系统崩溃的不同方法,以及一些关于如何首先防止这些漏洞的建议。每个系统管理员都应该熟悉这些命令,因为他们的工作就是防御它们。除此之外,在测试系统和虚拟机上执行其中一些操作非常有趣。