Bash fork()Bomb:(){:|:&} ;:代码

时间:2020-01-09 10:43:55  来源:igfitidea点击:

您能解释以下bash代码或者bash fork()炸弹代码吗? :(){:|:&}; ::分支炸弹是针对Linux或者基于Unix的系统的拒绝服务(DoS)攻击的一种形式。它利用了fork操作。 :(){:|:&} ;:只是一个bash函数。该函数以递归方式执行。 sysadmin通常使用它来测试服务器上的用户进程限制。可以通过/etc/security/limits.conf和PAM配置Linux进程限制,以避免bash fork()炸弹。一旦在系统中激活成功的前叉炸弹,就可能无法在不重新启动系统的情况下恢复正常操作,因为前叉炸弹的唯一解决方案是销毁它的所有实例。

数字128038表示您可以运行128038进程。
为了保护您的Linux系统免受炸弹袭击,您需要降低该数量。
要将会话限制为5000个进程,请使用以下命令

ulimit -S -u 5000

警告!请不要将ulimit数字设置得太低。
这将阻止您在系统上工作。

现在再次运行叉子炸弹:

:(){ :|:& };:

您将看到如下消息:

bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable
bash: fork: Resource temporarily unavailable

您只是避免在Linux上使用fork炸弹。
运行以下pgrep命令以查看当前线程限制:

pgrep -wcu $USER

输出示例:

5002