LXC 容器作為沙箱環境

LXC 容器作為沙箱環境

我目前正在啟動一個項目,在安全的沙箱環境中評估不受信任的程序(學生作業)。主要想法是為 GlassFish 和圍繞 lxc-utils 的 Java 包裝器創建一個 Web 應用程式來管理 LXC 容器。它將有一個等待程式的佇列,並且 Java 包裝器將維護固定數量(池)的 LXC 容器,為每個程式分配一個(未使用的)容器。

每個容器都應使用 SELinux 進行保護,以保護主機系統。

我的問題是:為沙箱環境創建這樣的機制是個好主意,還是有更好的解決方案來解決這個問題?它應該是輕便且安全,不影響學生的創造力。

答案1

您沒有寫為什麼選擇 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 是一個好主意(在我看來,在這種情況下它是“必須的”)
  • 設定嚴格的 cgroup 規則,以便您的來賓不會使您的主機凍結或影響其他容器
  • 我寧願使用基於 LVM 的容器 - 它總是多一層“安全性”
  • 考慮網路解決方案和架構。這些容器必須相互通訊嗎?

從閱讀開始- 它很古老,但仍然 - 那裡有很多知識。還有——見面使用者命名空間

畢竟,再想一想 - 你真的有那麼多時間來玩 LXC 安全嗎? KVM 就簡單多了...

答案2

對於運行不受信任的程序,Linux 命名空間仍然是最佳解決方案。它比 KVM 更容易設置,並且需要更少的資源。您可以嘗試 LXC,但是 LXC 是作為一個更通用的沙箱構建的,用於運行完整的 Linux 發行版映像。我想到了另外兩個 Linux 命名空間沙箱:

  • 谷歌瀏覽器沙盒,目前隨 Google Chrome/Chromium 一起分發
  • 火獄,一個為運行 Mozilla Firerfox 和任何其他 GUI 程式而建造的安全沙箱。

相關內容