Security
LXC 容器作為沙盒環境
我目前正在啟動一個項目,在安全的沙盒環境中評估不受信任的程序(學生作業)。主要思想是圍繞 lxc-utils 為 GlassFish 和 Java 包裝器創建一個 Web 應用程序來管理 LXC 容器。它將有一個等待程序隊列,Java 包裝器將維護一個固定數量(池)的 LXC 容器,為每個程序分配一個(未使用的)容器。
每個容器都應該使用 SELinux 保護主機系統。
我的問題是:為沙盒環境創建這樣的機制是個好主意,還是有更好的解決方案來解決這個問題?它應該輕巧且安全,不利於學生的創造力。
您沒有寫出為什麼選擇 LXC,因為它不是最安全的虛擬化解決方案。我是 KVM/XEN 和 LXC 的重度使用者,我可以說在安全方面我從不使用 Linux 容器(無論是 LXC/OpenVZ/VServer)。使用 KVM/XEN 更容易(也更可靠)。
如果是關於性能或硬體要求,那麼可以 - 您可以嘗試使用 LXC,但您應該遵循一些規則:
- libvirt 確保在使用 SELinux 時嚴格限制容器(感謝 LXC_driver) - 不確定是否只是 RHEL/Centos/Fedora 案例(我不太使用 Ubuntu/Debian)https://www.redhat.com/archives /libvir-list/2012-January/msg01006.html - 所以使用 SELinux 是個好主意(在我看來,在這種情況下它是“必須的”)
- 設置嚴格的 cgroups 規則,這樣您的客人不會讓您的主機凍結或影響其他容器
- 我寧願使用基於 LVM 的容器——它總是多一層“安全性”
- 考慮網路解決方案和架構。這些容器是否必須相互通信?
從閱讀這篇文章開始——它已經很老了,但仍然——那裡有很多知識。還有 - 滿足使用者命名空間
再想一想——你真的有那麼多時間來玩 LXC 安全嗎?KVM 就是這麼簡單…