2009-05-20 11 views
2

Ist es möglich, eine Umgebung zu erstellen, um beliebige Python-Skripte unter Linux sicher auszuführen? Diese Skripts sollen von nicht vertrauenswürdigen Personen stammen und möglicherweise zu groß sein, um sie manuell zu überprüfen.Sichere Python-Umgebung in Linux

Eine sehr brutale Lösung besteht darin, eine virtuelle Maschine zu erstellen und ihren Anfangszustand nach jedem Start eines nicht vertrauenswürdigen Skripts wiederherzustellen. (Zu teuer.)

Ich frage mich, ob es möglich ist, Python den Zugriff auf das Dateisystem und die Interaktion mit anderen Programmen und so weiter einzuschränken.

+0

ähnlicher Qs auf Sandbox/jailing Prozesse in Linux oder Unix: * http://unix.stackexchange.com/q/6433/4319 * http://stackoverflow.com/q/3859710/94687 * http://stackoverflow.com/q/4410447/94687 * http://stackoverflow.com/q/4249063/94687 * http://stackoverflow.com/q/1019707/94687 –

Antwort

4

Betrachten wir ein chroot-Gefängnis verwenden. Dies ist nicht nur sehr sicher, gut unterstützt und getestet, sondern gilt auch für externe Anwendungen, die Sie von Python ausführen.

2

Sie könnten jython ausführen und den Sandboxing-Mechanismus der JVM verwenden. Das Sandboxing in der JVM ist sehr stark, sehr gut verstanden und mehr oder weniger gut dokumentiert. Es dauert einige Zeit, um genau zu definieren, was Sie erlauben wollen und was Sie nicht erlauben wollen, aber Sie sollten in der Lage sein, eine sehr starke Sicherheit davon zu bekommen ...

Auf der anderen Seite ist jython nicht 100 kompatibel% mit CPython ...

4

Es gibt 4 Dinge, die Sie versuchen können:

  • Wie Sie bereits erwähnt, eine virtuelle Maschine oder eine andere Form der Virtualisierung (vielleicht solaris Zonen sind leicht genug?) verwenden. Wenn das Skript dort das Betriebssystem durchbricht, ist es dir egal.
  • Verwenden von Chroot, das eine Shell-Sitzung in ein virtuelles Stammverzeichnis versetzt, das vom Hauptstammverzeichnis des Betriebssystems getrennt ist.
  • Verwenden von Systrace. Stellen Sie sich dies als Firewall für Systemaufrufe vor.
  • Mit einem „Gefängnis“, das auf systrace baut, so dass jedes Gefängnis einen eigenen Prozesstabelle ist usw.

Systrace kürzlich kompromittiert wurde, so sich bewusst sein, dass.

1

könnten Sie nicht einfach als Benutzer ausgeführt werden, der nur auf die Skripts in diesem Verzeichnis zugreifen kann?