通过限制Linux用户进程来防止fork炸弹


fork炸弹是一种针对基于Linux的系统的拒绝服务(DoS)攻击。它利用fork操作创建无限进程,也被称为“兔子病毒”或“wabbit”。系统进程不断自我复制,耗尽可用的系统资源,导致资源匮乏,使系统速度变慢或崩溃。本文深入探讨了如何在Linux系统中防止fork炸弹攻击。

Fork炸弹使用bash代码并反复执行。Linux系统管理员经常使用bash函数来测试用户进程限制,这个特定进程可以在/etc/security/limits.conf文件中配置。一旦Fork炸弹在Linux系统中被激活,可能无法恢复到正常系统状态,直到重新启动系统。

理解Bash代码

fork()可以在Bash代码中定义如下:

:(){
   :|:&
};:

:() – 这被称为fork函数,此函数不接受任何参数。

:|:  – 这被称为递归和管道。它用于调用自身并调用另一个函数。

  – 用于在后台调用。

; – 用于终止函数定义。

: – 用于调用AKA函数来设置Fork炸弹。

理解Fork()炸弹

人类可读的fork()炸弹代码应如下所示:

bomb() {
   bomb | bomb &
}; bomb

通过限制用户进程来防止Fork炸弹

限制用户进程对于运行稳定的系统非常重要,用户进程在/etc/security/limits.conf文件中配置。

理解/etc/security/limits.conf文件

limits.conf中的结构应如下所示:

<domain><type> <item> <value>

示例输出应如下所示:

#<domain>    <type>    <item>    <value>
#*          soft       core        0
#root       hard       core      100000
#*          hard       rss       10000
#@student   hard       nproc      20
#@faculty   soft       nproc      20
#@faculty   hard       nproc      50
#ftp        hard      nproc       0
#ftp        -         chroot     /ftp
#@student   -         maxlogins   4
......

配置limits.conf

为了防止“fork炸弹”攻击,需要对limits.conf文件进行一些更改。要打开limits.conf文件,请使用以下命令:

$ vi /etc/security/limits.conf

添加以下几行以防止“fork炸弹”攻击:

tp hard nproc 300
@student hard nproc 50
@faculty soft nproc 100
@pusers hard nproc 150

上述命令描述了tp用户只有300个进程,student组有50个进程,类似地,faculty组有100个进程,pusers组有150个进程。如果超过限制,则Linux系统会自动终止多余的进程。现在保存并退出limits.conf文件。

使用以下命令通过投放fork炸弹来测试新系统:

$ :(){ :|:& };:

恭喜!现在,您知道了“如何通过限制Linux用户进程来防止fork炸弹”。我们将在下一篇文章中学习更多关于此类命令的内容。继续关注!

更新于:2019年10月21日

浏览量:289

开启你的职业生涯

完成课程获得认证

开始学习
广告