預防 Linux 中的 Bash 分支炸彈


簡介

Bash 分支炸彈是一種拒絕服務 (DoS) 攻擊,它可以透過壓垮系統資源來崩潰或凍結 Linux 系統。攻擊使用惡意指令碼建立大量子程序,導致系統耗盡可用資源,例如記憶體或 CPU 時間。這些子程序然後會產生更多子程序,迴圈持續下去,直到系統無法響應。

對於系統管理員來說,預防 Linux 中的 Bash 分支炸彈對於確保系統的穩定性和可用性至關重要。在本文中,我們將探討什麼是 Bash 分支炸彈,它的工作原理以及一些預防方法。

什麼是 Bash 分支炸彈?

Bash 分支炸彈是一種拒絕服務 (DoS) 攻擊,它利用 Linux 中的 fork() 系統呼叫。fork() 用於透過複製呼叫程序來建立一個新程序。Bash 分支炸彈是由一個惡意指令碼建立的,該指令碼遞迴地呼叫自身,建立大量子程序。子程序然後呼叫自身,迴圈持續下去,建立指數級增長的程序,直到系統崩潰或凍結。

這是一個 Bash 分支炸彈的示例:

:(){ :|:& };:

這是一個單行命令,它遞迴地呼叫一個名為 ":" 的函式。該函式將其輸出管道傳輸到同一函式的另一個呼叫,而與號 (&) 將程序傳送到後臺。這將建立一個子程序,然後複製該子程序並建立另一個子程序,迴圈持續下去,直到系統崩潰或凍結。

Bash 分支炸彈是如何工作的?

Bash 分支炸彈透過遞迴呼叫一個建立子程序的函式來工作。每個子程序都會建立更多子程序,迴圈持續下去,直到系統耗盡可用資源。當使用 fork() 建立一個新程序時,它會複製父程序,包括其記憶體和檔案描述符。然後,新程序獨立於父程序,可以執行自己的程式碼。這使得 Bash 分支炸彈能夠建立指數級增長的子程序,從而壓垮系統的資源。

預防 Linux 中的 Bash 分支炸彈

有幾種方法可以預防 Linux 中的 Bash 分支炸彈。這些方法包括限制程序數量、設定資源限制以及配置系統設定。

  • 限制程序數量 - 預防 Bash 分支炸彈的一種方法是限制可以建立的程序數量。這可以透過設定每個使用者或系統範圍內的最大程序數來完成。可以使用 ulimit 命令設定最大程序數。

要為使用者設定最大程序數,請使用以下命令:

ulimit -u <number_of_processes>

要為系統範圍設定最大程序數,請編輯 /etc/security/limits.conf 檔案並新增以下幾行:

* hard nproc <number_of_processes>
* soft nproc <number_of_processes>
  • 設定資源限制 - 預防 Bash 分支炸彈的另一種方法是為程序設定資源限制。資源限制定義了程序可以使用的最大資源量,例如 CPU 時間、記憶體和磁碟空間。可以使用 ulimit 命令或透過編輯 /etc/security/limits.conf 檔案來設定這些限制。

要為程序設定最大 CPU 時間,請使用以下命令:

ulimit -t <seconds>

要為程序設定最大記憶體量,請使用以下命令:

ulimit -m <megabytes>

要為程序設定最大磁碟空間,請使用以下命令:

ulimit -f <kilobytes>

要為系統範圍設定資源限制,請編輯 /etc/security/limits.conf 檔案並新增以下幾行:

* hard cpu <seconds>
* soft cpu <seconds>
* hard rss <megabytes>
* soft rss <megabytes>
* hard fsize <kilobytes>
* soft fsize <kilobytes>
  • 配置系統設定 - Linux 有幾個可以配置的系統設定,以預防 Bash 分支炸彈。這些設定包括設定最大程序數、最大記憶體量和所有程序可以使用最大 CPU 時間。

要為系統範圍設定最大程序數,請編輯 /etc/sysctl.conf 檔案並新增以下一行:

kernel.pid_max = <number_of_processes>

要為系統範圍設定最大記憶體量,請編輯 /etc/sysctl.conf 檔案並新增以下一行:

vm.max_map_count = <megabytes>

要為系統範圍設定最大 CPU 時間,請編輯 /etc/security/limits.conf 檔案並新增以下一行:

* hard cpu <seconds>

預防 Linux 中 Bash 分支炸彈的其他方法

  • 使用程序會計 - 程序會計是 Linux 的一個功能,它跟蹤每個程序使用的系統資源。透過使用程序會計,系統管理員可以監控和限制每個程序使用的資源,這有助於預防 Bash 分支炸彈。

要啟用程序會計,請使用以下命令:

sudo apt-get install acct

安裝後,可以透過將以下行新增到 /etc/default/acct 檔案來啟用程序會計:

ENABLE_ACCT=1
  • 使用 cgroups - 控制組 (cgroups) 是 Linux 的一個功能,它允許系統管理員限制程序使用的資源。與上面描述的方法相比,Cgroups 提供了一種更細粒度的資源管理方法。透過使用 cgroups,系統管理員可以對 CPU 使用率、記憶體使用率和其他系統資源設定限制。

要使用 cgroups,請使用以下命令安裝 cgroup-tools 包:

sudo apt-get install cgroup-tools

安裝後,可以透過在 /etc/cgconfig.d 目錄中建立一個配置檔案來配置 cgroups。例如,要將使用者組“webapps”中所有程序的 CPU 使用率限制為 50%,請建立一個名為“webapps.conf”的配置檔案,內容如下:

group webapps {
   cpu {
      cpu.shares = 512;
   }
}
  • 使用程序監控器 - 程序監控器是一個管理和監控其他程式執行的程式。透過使用程序監控器,系統管理員可以限制可以建立的程序數量並監控每個程序的資源使用情況。一些流行的 Linux 程序監控器包括 systemd、Upstart 和 supervisord。

結論

Bash 分支炸彈對 Linux 系統的穩定性和可用性構成嚴重威脅。對於系統管理員來說,預防 Linux 中的 Bash 分支炸彈對於確保系統的平穩執行至關重要。限制程序數量、設定資源限制和配置系統設定是預防 Bash 分支炸彈的一些方法。透過實施這些方法,系統管理員可以保護其系統免受這種型別的拒絕服務攻擊。

更新於:2023年3月24日

瀏覽量:527

開啟您的職業生涯

透過完成課程獲得認證

開始學習
廣告