透過限制Linux使用者程序來防止fork炸彈


fork炸彈是一種針對基於Linux的系統的拒絕服務(DoS)攻擊。它利用fork操作建立無限程序,也被稱為“兔子病毒”或“wabbit”。系統程序不斷自我複製,耗盡可用的系統資源,導致資源匱乏,使系統速度變慢或崩潰。本文深入探討了如何在Linux系統中防止fork炸彈攻擊。

Fork炸彈使用bash程式碼並反覆執行。Linux系統管理員經常使用bash函式來測試使用者程序限制,這個特定程序可以在/etc/security/limits.conf檔案中配置。一旦Fork炸彈在Linux系統中被啟用,可能無法恢復到正常系統狀態,直到重新啟動系統。

理解Bash程式碼

fork()可以在Bash程式碼中定義如下:

:(){
   :|:&
};:

:() – 這被稱為fork函式,此函式不接受任何引數。

:|:  – 這被稱為遞迴和管道。它用於呼叫自身並呼叫另一個函式。

  – 用於在後臺呼叫。

; – 用於終止函式定義。

: – 用於呼叫AKA函式來設定Fork炸彈。

理解Fork()炸彈

人類可讀的fork()炸彈程式碼應如下所示:

bomb() {
   bomb | bomb &
}; bomb

透過限制使用者程序來防止Fork炸彈

限制使用者程序對於執行穩定的系統非常重要,使用者程序在/etc/security/limits.conf檔案中配置。

理解/etc/security/limits.conf檔案

limits.conf中的結構應如下所示:

<domain><type> <item> <value>

示例輸出應如下所示:

#<domain>    <type>    <item>    <value>
#*          soft       core        0
#root       hard       core      100000
#*          hard       rss       10000
#@student   hard       nproc      20
#@faculty   soft       nproc      20
#@faculty   hard       nproc      50
#ftp        hard      nproc       0
#ftp        -         chroot     /ftp
#@student   -         maxlogins   4
......

配置limits.conf

為了防止“fork炸彈”攻擊,需要對limits.conf檔案進行一些更改。要開啟limits.conf檔案,請使用以下命令:

$ vi /etc/security/limits.conf

新增以下幾行以防止“fork炸彈”攻擊:

tp hard nproc 300
@student hard nproc 50
@faculty soft nproc 100
@pusers hard nproc 150

上述命令描述了tp使用者只有300個程序,student組有50個程序,類似地,faculty組有100個程序,pusers組有150個程序。如果超過限制,則Linux系統會自動終止多餘的程序。現在儲存並退出limits.conf檔案。

使用以下命令透過投放fork炸彈來測試新系統:

$ :(){ :|:& };:

恭喜!現在,您知道了“如何透過限制Linux使用者程序來防止fork炸彈”。我們將在下一篇文章中學習更多關於此類命令的內容。繼續關注!

更新於:2019年10月21日

瀏覽量:289

開啟你的職業生涯

完成課程獲得認證

開始學習
廣告