15.3 背景故事

由於系統管理是困難又繁瑣的工作,因此人們開發許多好用工具, 以讓管理工作更加簡單輕鬆。 這些改善通常是讓系統能夠以更簡單的方式安裝、 設定、維護,而有些改善目標則是系統安全的正確設定,使其能真正發揮原本用途, 而非陷入安全風險之中。

FreeBSD 系統所提供的一種用於強化安全的工具就是 jail 。 Jail 是由 Poul-Henning Kamp 於 FreeBSD 4.X 開始導入,而在 FreeBSD 5.X 受到許多重大改良而集大成,成為強大而靈活的子系統,目前仍在持續開發、 以提高其可用性、效能與安全。

15.3.1 何為 Jail

BSD-like 作業系統自 4.2BSD 起即提供 chroot(2)chroot(8) 可用來變更一組 process 的根目錄位置, 藉此建立與實體系統中相隔離的安全環境。 處於 chrooted 環境的 process 會無法不能存取世外的檔案或資源。 由於此因素, 故即使攻擊者攻破某個處於 chroot 環境的 service,也不能攻破整個系統。 chroot(8) 對於那些不太需要彈性或複雜又高級的簡單應用而言相當好用。 另外,在引入 chroot 概念的過程中,曾經發現許多可脫逃 chroot 環境的方式, 儘管這些問題在較新版本的 FreeBSD kernel 均已修正,但很明顯地 chroot(2) 絕非用於強化安全的理想解決方案。 因此, 勢必得實作新的子系統來解決這些問題。

這就是為何要開發 jail 的最主要原因。

Jail 在各種方式分進合擊,改進傳統 chroot(2) 環境的概念。 在傳統的 chroot(2) 環境中,只限制 process 對於檔案系統的存取部分, 而系統資源的其他部分(例如系統帳號、執行中的 process、網路子系統)則是由 chroot process 與 host 系統的其他 process 一起共享。 Jail 以『虛擬化』來擴展這模型,不單只有檔案系統的存取,還延伸到 系統帳號、FreeBSD kernel 的網路子系統及其他系統資源的虛擬化。 關於這些 jail 環境存取的細微調控,請參閱 Section 15.5

jail 具有下列四項特色:

除了上述之外,jail 也可擁有自己的帳號及 root 帳號。 當然,這裡的root 權力會受制於 jail 環境內。 並且從 host 系統的角度來看,jail 的 root 並非無所不能的帳號。 此外 jail 的 root 並不能執行其對於 jail(8) 環境以外的一些關鍵性操作。 關於 root 的能力與限制,將於稍後的 Section 15.5 介紹之。

本文及其他文件,可由此下載:ftp://ftp.FreeBSD.org/pub/FreeBSD/doc/

若有 FreeBSD 方面疑問,請先閱讀 FreeBSD 相關文件,如不能解決的話,再洽詢 <questions@FreeBSD.org>。
關於本文件的問題,請洽詢 <doc@FreeBSD.org>。