Linux 中可怕的 fork 炸彈

什麼是 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 對系統造成太大的影響。

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/CcKw9-fpM_T5lgSpBwLaTA