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 @wheelhardnproc5000 rumenzhardnproc5000
這樣,這些用戶的最大進程數量將被限制在 5000 個進程以內,這有助于防止 Fork Bomb 對系統造成太大的影響。
審核編輯:劉清
-
Linux系統
+關注
關注
4文章
594瀏覽量
27441 -
Shell
+關注
關注
1文章
366瀏覽量
23412
原文標題:Linux中可怕的fork炸彈
文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論