Linux
將程序安裝到 chroot / jail 中的最佳方法是什麼?
在基於 Debian 的系統上…
我使用類似於https://github.com/pmenhart/make_chroot_jail/blob/master/make_chroot_jail.sh的腳本創建了一個最小的 chroot/jail ,目的是創建一個除了執行之外基本上什麼都不做的監獄所需的程序(出於安全考慮)。我的問題是,一旦建立了監獄,將程序安裝到監獄中的最佳方法是什麼?由於監獄是最小的,沒有像 apt 這樣的包管理器,也沒有建構工具。
我是否必須將程序安裝到普通帳戶並將所有必需的文件複製到 chroot 目錄?如果是這樣,我將如何跟踪所做的所有更改以了解我需要做什麼?像 rkhunter 這樣的小程序我可以很容易地跟踪,但是像 MySQL 這樣的大程序我就無法跟踪,因為要複製的文件和要修改的配置文件太多。
或者,有沒有辦法將最小的包管理器(例如 apt)安裝到監獄中,安裝所需的程序,最後刪除包管理器?
有沒有更好的方法可以做到這一點,我不知道?
謝謝!
在有人提出其他建議之前:
- 我知道維護多個 chroot 安裝的額外負擔
- 我知道它不會像您希望的那樣增加安全性,因為可以打破配置不正確的 chroot。容器可能是更好的選擇。
- 我知道有些程序已經內置了類似 chroot 的功能,但我想知道安裝程序的通用方法。
- 有多種設置 chroot 監獄的方法。就我個人而言,我已經看到了超過 50 種不同的腳本。所有的監獄都是相似的,但有更小或更大的差異,因此沒有通用的方法可以在其中做任何事情。
- chroot jail 在安裝軟體方面最常見的用法是從原始碼安裝所有內容。有時 chroot 監獄特別用於從原始碼安裝軟體,避免從包(例如 zlib、libpng 或其他常用庫)安裝在本地電腦上的依賴項。
- 不幸的是,許多不同的 chroot jail 腳本之間的共同點是它們沒有任何“升級模式”,所以每次你想升級你的基本系統軟體包或監獄中的軟體時,你必須重新設置這個監獄。這當然可以編寫腳本,但這與正常的包升級不同。
- 搜尋 OpenVZ 或 LXC 半虛擬化技術。它們都用於創建“容器”(具有共享核心的獨立系統)。兩者都基於 chroot 概念,但在核心內部的許多其他層上增加了分離。
LXC 更新、更現代,但 OpenVZ 提供了更好的安全隔離。在這兩個系統中,您可以安裝幾乎完整的系統,包括包管理器、包中的庫等,因此您可以正常安裝和升級軟體,就像在您的基本系統中一樣。