Ich starte derzeit ein Projekt zur Bewertung nicht vertrauenswürdiger Programme (Aufgaben von Studenten) in einer sicheren Sandbox-Umgebung. Die Hauptidee besteht darin, eine Web-App für GlassFish und Java Wrapper um lxc-utils zu erstellen, um LXC-Container zu verwalten. Es wird eine Warteschlange mit wartenden Programmen haben und ein Java-Wrapper wird eine feste Anzahl (Pool) von LXC-Containern verwalten und jedem Programm einen (nicht verwendeten) 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 gegen die Kreativität der Schüler sein.
Für die Ausführung nicht vertrauenswürdiger Programme ist Linux Namespaces immer noch die beste Lösung. Es ist einfacher einzurichten als KVM und erfordert weniger Ressourcen. Sie können LXC ausprobieren, LXC wurde jedoch als allgemeinere Sandbox zum Ausführen vollständiger Linux-Distributionsimages erstellt. Zwei andere Linux-Namespaces-Sandboxen fallen mir ein:
quelle