LXC-Container als Sandbox-Umgebung

LXC-Container als Sandbox-Umgebung

Ich beginne gerade mit einem Projekt zur Evaluierung nicht vertrauenswürdiger Programme (Studentenaufgaben) in einer sicheren Sandbox-Umgebung. Die Hauptidee besteht darin, eine Web-App für GlassFish und einen Java-Wrapper um lxc-utils zu erstellen, um LXC-Container zu verwalten. Es wird eine Warteschlange wartender Programme geben und ein Java-Wrapper wird eine feste Anzahl (Pool) von LXC-Containern verwalten und jedem Programm einen (unbenutzten) Container zuweisen.

Jeder Container sollte mit SELinux gesichert werden, um das Hostsystem zu schützen.

Meine Frage ist: Ist es eine gute Idee, einen solchen Mechanismus für eine Sandbox-Umgebung zu erstellen, oder gibt es eine bessere Lösung für dieses Problem? Es sollte leicht und sicher vor der Kreativität der Schüler sein.

Antwort1

Sie haben nicht geschrieben, warum Sie sich für LXC entschieden haben, da es nicht die sicherste Virtualisierungslösung ist. Ich bin ein intensiver Nutzer von KVM/XEN und auch LXC und ich kann eines sagen: Wenn es um Sicherheit geht, wähle ich nie Linux-Container (egal ob LXC / OpenVZ / VServer). Mit KVM/XEN ist es einfach einfacher (und zuverlässiger).

Wenn es um Leistung oder Hardwareanforderungen geht, dann ok – Sie können es mit LXC versuchen, aber es gibt einige Regeln, die Sie befolgen sollten:

  • libvirt stellt bei der Verwendung von SELinux eine strikte Beschränkung der Container sicher (dank LXC_driver) – bin mir jedoch nicht sicher, ob dies nur bei RHEL/Centos/Fedora der Fall ist (ich verwende Ubuntu/Debian nicht so häufig)https://www.redhat.com/archives/libvir-list/2012-January/msg01006.html- daher ist die Verwendung von SELinux eine gute Idee (meiner Meinung nach ist es in solchen Fällen ein „Muss“)
  • Legen Sie strenge Cgroups-Regeln fest, damit Ihre Gäste Ihren Host nicht einfrieren oder andere Container beeinträchtigen.
  • Ich würde lieber LVM-basierte Container verwenden - das ist immer eine weitere Ebene der "Sicherheit"
  • Denken Sie über Netzwerklösungen und -architektur nach. Müssen diese Container miteinander kommunizieren?

Beginnen Sie mit dem LesenDas- es ist ziemlich alt, aber trotzdem - es gibt dort viel Wissen. Und auch - treffenBenutzer-Namespaces

Und denken Sie nach all dem noch einmal darüber nach – haben Sie wirklich so viel Zeit, sich mit der LXC-Sicherheit zu beschäftigen? KVM ist einfach so viel einfacher …

Antwort2

Zum Ausführen nicht vertrauenswürdiger Programme sind Linux-Namespaces immer noch die beste Lösung. Sie sind einfacher einzurichten als KVM und erfordern weniger Ressourcen. Sie können LXC ausprobieren. LXC wurde jedoch als allgemeinere Sandbox zum Ausführen vollständiger Linux-Distributionsabbilder entwickelt. Zwei weitere Linux-Namespace-Sandboxen fallen mir ein:

  • Google ChromeSandbox, derzeit mit Google Chrome/Chromium verteilt
  • Feuergefängnis, eine Sicherheits-Sandbox zum Ausführen von Mozilla Firefox und anderen GUI-Programmen.

verwandte Informationen