我听到有人谈论叉子炸弹,我做了一些研究,发现了一些可怕的信息,关于一些奇怪的字符,人们可以让你在命令行输入这些字符,结果在电脑上做一些坏事。我当然不会发出我不理解的命令,但谁也不知道会发生什么。
我听说有些操作系统允许管理员对用户进程进行一些限制,以减轻 fork 炸弹的影响,Ubuntu 默认有这种保护吗?还是必须由具有 sudo 权限的人来设置?如果是,该如何设置?
答案1
你可以通过修改来轻松限制 Ubuntu 和大多数其他 Linux 发行版中可以生成的进程数量/etc/security/limits.conf
sudoedit /etc/security/limits.conf
然后将这一行添加到该文件的底部:
* hard nproc nnn
在哪里:
hard
在内核级别设置限制,因此如果不重新启动就无法更改它。nproc
是每个用户的最大进程数。nnn
是您应通过以下方式为您的系统计算的数字:ps aux -L | cut --delimiter=" " --fields=1 | sort | uniq --count | sort --numeric-sort | tail --lines=1
上述命令将列出所有用户的所有进程包括线程,将它们相加并列出进程数最多的用户名。为了安全起见,在运行上述命令之前,请打开通常需要的应用程序数量,然后为了安全起见将该数字翻倍。
实施此限制后,你需要重新启动,但这会影响每个非根系统上的用户。因此,如果任何非 root 用户执行 fork bomb,它都会受到该硬性限制。
默认情况下,组和通配符限制不适用于 root 用户root
。如果要将规则应用于超级用户,请在规则中使用文字用户名。
此外,如果你不打算很快重启,你可以使用sudo ulimit -u 800
只对正在运行的会话进行限制但可以通过具有权限的分叉炸弹轻松规避sudo
!
/etc/security/limits.conf
重新启动后,将使用其中的内容。
关于 fork 炸弹的一些附加信息:它们不是恶意软件或任何可怕的东西。它们通常由一些基本的东西组成,比如一个两次调用自身的脚本 - 从而成倍地增加它在机器上的存在。尽管它们的内存占用很小,但由于它们的速度很快,它们会很快填满所有可用的 RAM,机器会冻结或重新启动。唯一的危险是丢失未保存的信息。我认为 fork 炸弹更像是恶作剧,而不是恶意软件。
重要提醒:
如果您不能 98% 确定命令行的操作,则应很少执行命令行中的任何操作。如果您无法读取正在执行的命令,请不要执行。这适用于无法读取的十六进制/base64 字符块,这些字符可用于掩盖各种恶意内容。如果您不确定某个命令,您可以随时在Ubuntu 手册页使用时要格外小心,sudo
因为它将以 root 用户身份执行。
答案2
我喜欢的一个简单方法是创建一个别名,尽管别名并不总是适用,请检查上面的答案。
alias :="echo No."
现在
$ :(){ :|: & };:
bash: syntax error near unexpected token `('
答案3
每个系统都容易受到分叉炸弹的攻击,比如 Windows
:fork
start example.bat
或 Linux
:(){ :|: & };:
还有 Mac 版本,但我不知道。
您必须执行命令才能使其工作,第一个 fork 炸弹是在 1974 年,如果您不输入这些命令,您的 PC 就不会崩溃。