dbl*_*ang 78 security command-line
我听到有人在谈论叉子炸弹,我做了一些研究,发现了一些可怕的信息,关于人们可以让你在命令行输入一些看起来很奇怪的字符,结果在计算机上做坏事。我当然不会发出我不明白的命令,但人们永远不知道会发生什么。
我听说有些操作系统允许管理员对用户进程设置一些限制以减轻 fork 炸弹的影响,默认情况下是 Ubuntu 中的这种保护还是具有 sudo 权限的人必须设置它?如果是这样,如何?
Mar*_*ppi 77
您可以通过修改来轻松限制可以在 Ubuntu 和大多数其他 Linux 发行版中生成的进程数量 /etc/security/limits.conf
sudoedit /etc/security/limits.conf
Run Code Online (Sandbox Code Playgroud)
然后将此行添加到该文件的底部:
* hard nproc nnn
Run Code Online (Sandbox Code Playgroud)
在哪里:
hard 在内核级别设置限制,以便在不重新启动的情况下无法更改它。nproc 是每个用户的最大进程数。nnn 是您应该通过以下方式为您的系统计算的数字:
ps aux -L | cut --delimiter=" " --fields=1 | sort | uniq --count | sort --numeric-sort | tail --lines=1
Run Code Online (Sandbox Code Playgroud)上面的命令将列出所有用户的所有进程,包括线程,汇总并列出进程数最多的用户名。为了安全起见,请在运行上述命令之前打开您通常需要的尽可能多的应用程序,然后为了安全起见将该数量加倍。
设置此限制后,您需要重新启动,但这会影响系统上的每个非 root用户。因此,如果任何非 root 用户执行 fork 炸弹,它将具有该硬限制。
默认情况下,组和通配符限制不适用于 root 用户。root如果要将规则应用于超级用户,请在规则中使用文字用户名。
此外,如果您不希望很快重新启动,您可以使用sudo ulimit -u 800which 将限制仅放在正在运行的会话上,但可以通过具有sudo特权的 fork 炸弹轻松规避!
重新启动后,/etc/security/limits.conf将使用其中的任何内容。
关于分叉炸弹的一些附加信息:它们不是恶意软件或任何可怕的东西。它们通常由一些基本的东西组成,比如一个两次调用自身的脚本——从而以指数方式增加它在机器上的存在。尽管由于速度快,它们占用的内存很小,但它们会迅速填满所有可用的 RAM,并且机器会冻结或重新启动。唯一的危险是丢失未保存的信息。我会将叉形炸弹归类为恶作剧而不是恶意软件。
当您不能 98% 确定其操作时,您应该很少在命令行中执行任何操作。如果您无法阅读正在执行的命令,请不要这样做。这适用于不可读的 hex/base64 字符块,这可以用来掩盖各种肮脏的东西。如果您不确定某个命令,您可以随时在Ubuntu 手册页中搜索它的操作,并且在使用时要格外小心,sudo因为它将以 root 用户身份执行。