Linux

Debian 不穩定的 chroot 安全問題

  • July 24, 2011

本頁介紹如何使用該debootstrap實用程序在現有 Linux 機器上安裝基本 Debian 不穩定/sid 系統。新安裝可使用chroot.

這樣做時,應牢記哪些安全問題?例如,需要做什麼來阻止後台/啟動程序在新的 chroot 中啟動或以其他方式乾擾主系統?

單獨的 Chroot 並不能帶來任何安全性。換句話說,將 chroot 視為 chroot 程序可以訪問系統上的所有內容——因為它們經常這樣做。另請參閱chroot “jail” - 它是什麼以及如何使用它?——特別注意邁克爾·姆羅澤克的評論

“chroot 監獄”是一個真正應該消失的用詞不當

Chroot 是一種僅用於文件的包含方法,它比安全功能更方便。如果您有一個允許不受信任的使用者指定文件名的程序(例如 FTP 伺服器),則 chroot 是一種確保使用者無法直接引用 chroot 之外的文件的方法。您應該確保 chroot 不包含任何可能導致逃逸的文件;特別是:

  • 僅將最少的設備文件 ( /dev/*) 放在 chroot 中。不要 bind-mount /dev,例如你不希望有塊設備。只放 tty 設備和雜項數據設備 ( /dev/null, /dev/zero, /dev/urandom, …)。
  • 不要掛載/proc。這是一個很大的限制,但/proc通過設計暴露了很多資訊。例如,如果您有一個程序 1234 作為 chroot 之外的某個使用者執行,那麼任何程序(無論是否 chroot)都可以訪問根目錄作為/proc/1234/root.

chroot 程序仍然可以向非 chroot 程序發送信號、打開網路套接字、訪問共享記憶體(在 Linux 上,現在只有在/dev/shm可用的情況下)等。如果您使用 chroot 進行遏制,請不要在外部執行任何程序chroot 作為在 chroot 中執行程序的使用者。

Chroot 仍然是執行同一作業系統(使用相同核心)的不同版本的好方法¹。當存在安全問題時,現在有更好的工具,特別是FreeBSD jailsLinux cgroupsLXC。與過去相比,完全虛擬化(VirtualBox、KVM 等)甚至在商品硬體上也成為了一種更可行的選擇。

¹順便說一句,在我的回答中,我解釋瞭如何不在 Debian chroot 中啟動服務。這不是安全問題,並且假設服務是合作的並且正確編寫的。

引用自:https://unix.stackexchange.com/questions/17299