首页 > 系统相关 >Linux中可怕的fork炸弹

Linux中可怕的fork炸弹

时间:2024-08-08 10:20:39浏览次数:8  
标签:fork Fork 函数 创建 炸弹 Linux 进程

什么是Linux中的 Fork 炸弹

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

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

:(){ :|:& };:

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

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

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

Fork炸弹命令解析

:() 定义了一个名称为 : 的函数,不接受任何参数。
{} 是函数开始和结束的地方。简而言之,它包含最终会崩溃您的机器的命令。
:|: 是递归开始的地方(调用自身的函数)。更准确地说,它会将一个 : 函数加载到内存中,将其输出管道 (|) 其自身的输出到另一个已加载到系统内存中的 : 函数。
& 将执行整个函数后台,以便不会杀死任何子进程。
; 将每个子函数从多个执行的链中分离。
: 运行最近创建的函数,因此链式反应开始了!

如何预防

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

ulimit -u

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

vim /etc/security/limits.conf
@wheel           hard    nproc           5000
rumenz           hard    nproc           5000

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

原创 入门小站

标签:fork,Fork,函数,创建,炸弹,Linux,进程
From: https://www.cnblogs.com/o-O-oO/p/18348402

相关文章

  • windows平台中使用vscode远程连接linux进行c++开发配置教程(内容详细适合小白)-2021-3-3
    文章目录一、简要介绍二、软件安装步骤1.linux系统安装2.vscode安装3.ssh安装4.配置Remote-SSH5.安装远程插件6.简单小测试三、配置vscode开发环境1.默认设置、用户设置、远程设置和工作区设置2.c++开发设置a).c_cpp_properties.jsonb).tasks.jsonc).launc......
  • Linux shell脚本案例:使用正则表达式匹配目录并定时删除日期早于当前系统日期的所有目
    实现每周三和每周日执行清理/NFS目录的任务,你可以使用shell脚本结合cron定时任务。下面是一个示例脚本,它会删除/NFS目录下所有名称形如XBK_FULL_YYYYMMDDHHMMSS和XBK_INCR_YYYYMMDDHHMMSS的目录,其中日期早于当前系统日期。步骤1:创建Shell脚本创建脚本......
  • 离线win/mac下vscode客户端通过ssh连接linux服务器
    1、下载vscode,这个网上教程一大堆就不一一介绍了,自行百度建议安装蓝色的版本,最后图标是蓝色的。下载网址:VisualStudioCode-CodeEditing.Redefined2、win系统或mac系统安装openssh,这个也一大堆教程,可以自行百度3、安装vscode插件下载网址:ExtensionsforVisual......
  • Linux磁盘阵列RAID
    目录一、RAID磁盘阵列1.RAID概述二、磁盘列正详解1.RAID0磁盘介绍 2.RAID1磁盘阵列介绍 3.RAID5磁盘阵列介绍 4.RAID6磁盘阵列介绍 5.RAID10  5.1RAID1+0(先做镜像、再做条带) 5.2RAID0+1(先做条带、再做镜像) 二、实验RAID设备创建与删除......
  • 【c++】Linux MySQL连接池
    #ifndefMYSQLCONNECTION_H#defineMYSQLCONNECTION_H#include<iostream>#include<mysql.h>#include<vector>classMySQLConnection{public: ///<summary> ///初始化连接 ///</summary> MySQLConnection(); MySQLConnection(MySQ......
  • Linux下自动监控进程运行状态
    目录背景应用举例1、使用crontab+脚本监控服务2、使用shell脚本监控服务2.1编写自定义监控脚本2.2运行脚本背景假设有一个服务需要长期运行,但可能会由于某种原因导致服务意外停止,不能及时发现,某天来到公司后发现出问题了才意识到服务挂了。此时再去手动重启服务......
  • RK3588—安装Linux系统以及环境配置
    neardiRK3588—安装Linux系统一、安装linux系统由于买的是neardi的LPB3588开发板,直接找它的官方手册:http://wiki.neardi.com/wiki/LPB3588/zh_CN/ 二、其他问题(1)无法读取U盘sudochmod777/media/<username>/(这里是sudochmod777/media/neardi/)(2)pip3安装s......
  • Ubuntu Linux 搭建邮件服务器(postfix + dovecot)
    准备工作1.一台公网服务器(需要不被服务商限制发件收件的,也就是端口25、110、143、465、587、993、995不被限制),如有防火墙或安全组需要把这些端口开放2.一个域名,最好是comcnorg的一级域名3.域名备案(如果服务器是国外的则不需要备案)一、配置域名解析1.登录阿里云,找到云解......
  • linux的环境安装
    linux的环境安装文章目录linux的环境安装前言一、Linux是什么,以及能做些什么1.1linux发展史1.2为什么选择Linux二、云服务器环境安装1.有哪些安装方式2.安装过程三,免密码登录以及修改root@后面的名字1免密码登录2修改root@后面的名字总结前言本篇内容将会简单......
  • linux 软件编程学习第八天 线程
    进程1.waitpid   pid_twaitpid(pid_tpid,int*wstatus,intoptions);  功能:    回收指定的子进程空间  参数:    pid:要回收的子进程的pid    wstatus:回收状态的指针    options:回收选项      0阻......