7 python ptrace chroot virtual-machine jail
我正在制作一款游戏,用户可以编写Python程序来控制互相攻击的机器人.每转一圈(在一个转弯的游戏中)他们的脚本将在我的服务器上运行,以确定机器人的下一步行动.如何防止这些用户对我的服务器有意义?
我想过/研究过以下内容:
eval在有限的环境中(即__builtins__禁用)他们的代码chroot/ptrace我有一个Python程序,它运行用户的脚本一千次.如何强制执行一分钟的最长总持续时间,限制其内存资源,阻止它们访问任何文件或网络连接等等?什么是理想的解决方案或解决方案组合?
我在PythonAnywhere上工作,这是一个Python平台即服务,这意味着我们代表我们的用户运行了许多不受信任的代码--Popthon.org首页上的新交互式控制台是我们的,并且它的限制可能与你的距离不太远.
我建议使用OS级虚拟化; 语言层面的任何东西都可能不那么安全.出于历史原因,我们使用chroot和cgroup,但如果我们今天从头开始,我认为我们将使用Linux容器(LXC)或Docker.LXC基本上是chroot和cgroups等一堆聪明的包装器,这使得它们更容易使用,因此你可以真正快速地启动一个短暂的虚拟机.Docker是一个更易于使用的LXC包装器.两者都超级快 - 您可以在不到一秒的时间内启动并运行新的VM.
cpython 中没有内置的方法来运行沙盒代码,但 pypy 中有。
http://pypy.org/features.html#sandboxing
python wiki 上描述了一些其他方法(例如使用 jailkit),但它们似乎有各种缺点。
https://wiki.python.org/moin/SandboxedPython
我会走pypy路线。
| 归档时间: |
|
| 查看次数: |
863 次 |
| 最近记录: |