0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Linux中可怕的fork炸弹介绍

dyquk4xk2p3d 来源:入门小站 2023-05-22 10:46 次阅读

什么是Linux中的 Fork 炸弹

Linux中的Fork炸弹(Fork Bomb)是一种拒绝服务攻击的形式,它利用了操作系统中的“fork()”系统调用。Fork()系统调用用于创建新进程,该进程是调用进程的副本。Fork炸弹利用此系统调用创建大量的子进程,以消耗系统资源,例如内存和CPU时间,从而使系统不可用。

要实现Fork炸弹,可以使用以下代码:

:(){:|:&};:

该代码使用了一个称为“镜像递归”的技术,其中一个进程通过创建另一个进程来反复复制自身,以迅速创建大量进程。管道符号(|)使进程从一个进程传递到另一个进程,以在更快的时间内创建更多的进程。“:”和“;”字符分别定义了shell函数和结束该函数的语法。

一旦Fork炸弹被激活,它会快速生成许多进程,消耗系统资源,导致系统崩溃或变得不可用。为了避免这种攻击,Linux系统管理员可以限制每个用户创建进程的数量,或者禁用fork()系统调用。

Fork Bomb 基本上就是创建 fork 的过程,无限地创建 fork,直到您的系统没有剩余的资源。

589a1898-f70c-11ed-90ce-dac502259ad0.png

Fork炸弹命令解析

:() 定义了一个名称为 : 的函数,不接受任何参数

{} 是函数开始和结束的地方。简而言之,它包含最终会崩溃您的机器的命令。

:|: 是递归开始的地方(调用自身的函数)。更准确地说,它会将一个 : 函数加载到内存中,将其输出管道 (|) 其自身的输出到另一个已加载到系统内存中的 : 函数。

& 将执行整个函数后台,以便不会杀死任何子进程。

; 将每个子函数从多个执行的链中分离。

: 运行最近创建的函数,因此链式反应开始了!

如何预防

限制登录用户可以运行的最大进程数量,先查看当前用户可以使用的最大进程数量

ulimit-u

然后编辑 /etc/security/limits.conf 文件

vim/etc/security/limits.conf
@wheelhardnproc5000
rumenzhardnproc5000

这样,这些用户的最大进程数量将被限制在 5000 个进程以内,这有助于防止 Fork Bomb 对系统造成太大的影响。






审核编辑:刘清

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • Linux系统
    +关注

    关注

    4

    文章

    590

    浏览量

    27344
  • Shell
    +关注

    关注

    1

    文章

    363

    浏览量

    23288

原文标题:Linux中可怕的fork炸弹

文章出处:【微信号:良许Linux,微信公众号:良许Linux】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    Linux下多进程编程之fork()函数语法

    到目标板上,运行结果如下: $ arm-linux-gcc fork.c –o fork (或者修改Makefile) $ ./fork The returned value is 7
    发表于 08-19 09:28

    Linux进程之fork()函数详解及经典笔试题

    也是所有进程的发起者和控制者。内核启动之后,便开始调用init进程来进行系统各项配置,该进程对于Linux系统正常工作是十分重要的。一个进程(父进程)可以通过调用fork()函数创建一个新的进程,这个
    发表于 11-13 15:31

    Linuxfork()函数详解

    的事。一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程,只有少数值与原来的进程的值不同。相当于克隆了一个自己。。。。。。有需要的请下载附件PDF。
    发表于 11-12 13:37

    最常见的fork用法是什么

    接口语法用来创造一个子进程在子进程,成功的fork调用会返回 0。在父进程fork返回子进程的 pid。如果出现错误,fork返回一个负
    发表于 12-15 07:38

    linux共享库下,调用共享库函数时,程序卡死在函数的pid=fork()这里的原因?

    linux共享库下,调用共享库函数时,程序卡死在函数的pid=fork()这里,来个大佬指导指导原因...
    发表于 06-20 06:55

    Linux系统的fork运行机制分析

    如果其中一个进程的输出结果是“pid1:1001, pid2:1002”,写出其他进程的输出结果(不考虑进程执行顺序)。 明显这道题的目的是考察linuxfork的执行机制。下面我们通过分析这个题目,谈谈Linux
    发表于 04-26 16:26 1151次阅读
    <b class='flag-5'>Linux</b>系统的<b class='flag-5'>fork</b>运行机制分析

    linuxfork()函数详解

    一个进程调用fork()函数后,系统先给新的进程分配资源,例如存储数据和代码的空间。然后把原来的进程的所有值都复制到新的新进程,只有少数值与原来的进程的值不同。相当于克隆了一个自己。
    发表于 04-28 17:34 1675次阅读

    Linuxfork()函数详解

    一个进程,包括代码、数据和分配给进程的资源。fork()函数通过系统调用创建一个与原来进程几乎完全相同的进程,也就是两个进程可以做完全相同的事,但如果初始参数或者传入的变量不同,两个进程也可以做不同的事。
    发表于 05-08 14:08 1575次阅读

    对“Fork”做一个技术方面的简介

    Linux/Unix 的进程,除了 init 进程本身之外,都是由 init 进程复刻fork出来的。关于服务器编程方面的复刻fork的使用,可以进一步参阅“搭个 Web 服务器(
    发表于 04-02 14:48 285次阅读

    fork函数的作用_fork函数创建进程

     在Linuxfork函数是非常重要的函数,它的作用是从已经存在的进程创建一个子进程,而原进程称为父进程。
    发表于 12-01 13:41 7839次阅读
    <b class='flag-5'>fork</b>函数的作用_<b class='flag-5'>fork</b>函数创建进程

    最为精简的一个Linux Fork炸弹解析

    () Fork***的本质无非就是靠创建进程来抢占系统资源,在Linux,我们可以通过ulimit命令来限制用户的某些行为,运行ulimit -a可以查看我们能做哪些限制
    的头像 发表于 09-07 16:12 1102次阅读

    SystemVerilogfork-join_any

    fork-join_any和fork-join有所不同,fork-join_any的父进程一直阻塞,直到任何一个并行的子进程结束。
    的头像 发表于 12-09 09:05 2080次阅读

    SystemVerilogfork-join

    fork-join语句块,每个语句都是并发进程。在这个语句块,父进程一直被阻塞,直到所有由“fork-join”产生的子进程都执行完。
    的头像 发表于 12-09 11:58 2169次阅读

    SystemVerilogfork-join_none

    fork-join_none和fork-join、fork-join_any的区别一样在于进程退出机制以及对于父进程的影响。
    的头像 发表于 12-12 10:00 2614次阅读

    炸弹炸弹革命开源硬件

    电子发烧友网站提供《炸弹炸弹革命开源硬件.zip》资料免费下载
    发表于 02-01 10:55 0次下载
    <b class='flag-5'>炸弹</b><b class='flag-5'>炸弹</b>革命开源硬件