FreeBSD 使用手冊
Prev | Chapter 15 Jails | Next

# 15.3 背景故事

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

FreeBSD 系統所提供的一種用於強化安全的工具就是 jail 。 Jail 是由 Poul-Henning Kamp `<phk@FreeBSD.org>` 於 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 具有下列四項特色：

- 目錄子樹(directory subtree) —— 也就是進入 jail 的起點。 一旦進入 jail 之後，process 就不再被允許跳到 subtree 以外。 &傳統會影響到 man.chroot.2; 最初設計的安全問題，就不會再影響 FreeBSD jail。

- 主機名稱(hostname) —— 用於 jail 的 hostname。 由於 jail 主要用於網路服務，因此若各 jail 皆有名稱， 對於系統管理工作的簡化會相當有效。

- IP address —— 是用來給 jail 使用， 並且在 jail 生命週期內都無法變更。 通常 jail 的 IP address 是現有網卡的 alias address，但這並不是必須的。

- 指令(Command) —— 準備在 jail 內執行的完整路徑。 這指令是相對於 jail 環境的根目錄，視 jail 環境的類型不同，而有所差異。

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

Prev | Home | Next
Jail 相關術語 | Up | 建立和控制 Jail

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

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