Linux中的Fork炸彈(Fork Bomb)是一種拒絕服務(wù)攻擊的形式,它利用了操作系統(tǒng)中的“fork()”系統(tǒng)調(diào)用。Fork()系統(tǒng)調(diào)用用于創(chuàng)建新進程,該進程是調(diào)用進程的副本。Fork炸彈利用此系統(tǒng)調(diào)用創(chuàng)建大量的子進程,以消耗系統(tǒng)資源,例如內(nèi)存和CPU時間,從而使系統(tǒng)不可用。
要實現(xiàn)Fork炸彈,可以使用以下代碼:
:(){:|:&};:
該代碼使用了一個稱為“鏡像遞歸”的技術(shù),其中一個進程通過創(chuàng)建另一個進程來反復(fù)復(fù)制自身,以迅速創(chuàng)建大量進程。管道符號(|)使進程從一個進程傳遞到另一個進程,以在更快的時間內(nèi)創(chuàng)建更多的進程。“:”和“;”字符分別定義了shell函數(shù)和結(jié)束該函數(shù)的語法。
一旦Fork炸彈被激活,它會快速生成許多進程,消耗系統(tǒng)資源,導(dǎo)致系統(tǒng)崩潰或變得不可用。為了避免這種攻擊,Linux系統(tǒng)管理員可以限制每個用戶創(chuàng)建進程的數(shù)量,或者禁用fork()系統(tǒng)調(diào)用。
Fork Bomb 基本上就是創(chuàng)建 fork 的過程,無限地創(chuàng)建 fork,直到您的系統(tǒng)沒有剩余的資源。
Fork炸彈命令解析
:() 定義了一個名稱為 : 的函數(shù),不接受任何參數(shù)。
{} 是函數(shù)開始和結(jié)束的地方。簡而言之,它包含最終會崩潰您的機器的命令。
:|: 是遞歸開始的地方(調(diào)用自身的函數(shù))。更準確地說,它會將一個 : 函數(shù)加載到內(nèi)存中,將其輸出管道 (|) 其自身的輸出到另一個已加載到系統(tǒng)內(nèi)存中的 : 函數(shù)。
& 將執(zhí)行整個函數(shù)后臺,以便不會殺死任何子進程。
; 將每個子函數(shù)從多個執(zhí)行的鏈中分離。
: 運行最近創(chuàng)建的函數(shù),因此鏈式反應(yīng)開始了!
如何預(yù)防
限制登錄用戶可以運行的最大進程數(shù)量,先查看當(dāng)前用戶可以使用的最大進程數(shù)量
ulimit-u
然后編輯 /etc/security/limits.conf 文件
vim/etc/security/limits.conf @wheelhardnproc5000 rumenzhardnproc5000
這樣,這些用戶的最大進程數(shù)量將被限制在 5000 個進程以內(nèi),這有助于防止 Fork Bomb 對系統(tǒng)造成太大的影響。
審核編輯:劉清
-
Linux系統(tǒng)
+關(guān)注
關(guān)注
4文章
596瀏覽量
27510 -
Shell
+關(guān)注
關(guān)注
1文章
366瀏覽量
23448
原文標題:Linux中可怕的fork炸彈
文章出處:【微信號:良許Linux,微信公眾號:良許Linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。
發(fā)布評論請先 登錄
相關(guān)推薦
評論