2009-05-20 7 views
2

Est-il possible de créer un environnement pour exécuter en toute sécurité des scripts Python arbitraires sous Linux? Ces scripts sont supposés être reçus de personnes non fiables et peuvent être trop volumineux pour les vérifier manuellement.Environnement Safe Python sous Linux

Une solution très brute consiste à créer une machine virtuelle et à restaurer son état initial après chaque lancement d'un script non fiable. (Trop cher.)

Je me demande s'il est possible d'empêcher Python d'accéder au système de fichiers et d'interagir avec d'autres programmes, etc.

+0

similaires Qs sur les processus sandboxing/de EMPRISONNEMENT sous Linux ou 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 –

Répondre

4

Pensez à utiliser une prison chroot. Non seulement cela est très sécurisé, bien supporté et testé, mais il s'applique également aux applications externes que vous exécutez à partir de python.

2

Vous pouvez exécuter jython et utiliser le mécanisme de sandbox de la JVM. Le bac à sable dans la JVM est très fort très bien compris et plus ou moins bien documenté. Il faudra un certain temps pour définir exactement ce que vous voulez autoriser et ce que vous ne voulez pas permettre, mais vous devriez pouvoir obtenir une sécurité très forte ...

De l'autre côté, jython n'est pas 100 % compatible avec CPython ...

4

Il y a 4 choses que vous pouvez essayer:

Comme vous l'avez mentionné
  • , en utilisant une machine virtuelle ou une autre forme de virtualisation (peut-être des zones solaris sont assez légers?). Si le script brise le système d'exploitation, alors cela ne vous dérange pas.
  • En utilisant chroot, qui place une session shell dans un répertoire racine virtuel, séparez-vous du répertoire racine du système d'exploitation principal.
  • Utilisation de systrace. Considérez ceci comme un pare-feu pour les appels système.
  • l'aide d'une « prison », qui se base sur systrace, donnant à chaque prison, il est propre table de processus, etc.

Systrace a été compromise récemment, donc être conscient de cela.

1

ne pourriez-vous pas simplement exécuter en tant qu'utilisateur qui n'a accès à rien d'autre que les scripts dans ce répertoire?