我想知道是否存在在Linux下的沙箱下运行不受信任的C程序的方法.什么会阻止程序打开文件,网络连接,分叉,执行等?
它将是一个小程序,一个家庭作业,它被上传到服务器并在其上执行单元测试.所以该计划将是短暂的.
我想创建一个在本地运行其他人代码的Web服务...当然,我想限制他们对某些"sandbox"目录的代码访问,并且他们将无法连接到我的服务器的其他部分(DB,main网络服务器等)
什么是最好的方法呢?
运行VMware/Virtualbox:
(+)我猜它就像它得到的那样安全......即使有人设法"破解"......他们只会破解客人机器
(+)可以限制进程使用的cpu和内存
(+)易于设置..只需创建VM
( - )更难将沙箱目录从主机"连接"到guest虚拟机
( - )浪费额外的内存和CPU来管理VM
运行弱势用户:
(+)不会浪费额外的资源
(+)sandbox目录只是一个普通目录
(?)不能限制CPU和内存?
(?)不知道它是否足够安全......
还有其他方法吗?
运行Fedora Core 8的服务器,用Java和C++编写的"其他"代码
我知道让任何匿名用户上传任何类型的文件都是危险的,特别是如果它的代码.但是,我有一个想法让用户上传自定义AI脚本到我的网站.我将提供模板,以便用户可以在我用Python编写的在线网络游戏中与其他AI竞争.我要么需要一个解决方案来确保用户不会破坏任何其他文件或通过他们上传的脚本或客户端执行游戏的解决方案注入恶意代码.有什么建议?(我正在寻找一种适用于我的Python脚本的解决方案)
我正在尝试运行从未知来源的C代码编译的程序.我想确保程序不会损害我的系统.例如,system("rm -rf /")除非彻底检查代码,否则程序可能在源代码中有类似的内容,这是不可检测的.
我想到了以下两种方式
两者都不是非常优雅的解决方案,我不能自动化它们.而且,如果是1,它可能会损害VM.
任何帮助,将不胜感激.
我想在我们称之为"沙盒"的程序中运行该程序.
我正在考虑沙盒化Linux进程的几个选项.使用clone()具有CLONE_NEWNET(等)的选择之一.CLONE_NEWNET确保沙盒进程无法建立或接受真正的网络连接.但我想完全禁用该进程的套接字,甚至bind()是任何端口0.0.0.0,并绑定到Unix doman套接字(甚至匿名).我想这样做是为了防止进程通过绑定到数千个端口来使用过多的内核资源.我怎么做?
一般来说,我对许多沙盒方法感兴趣(即Linux内核提供的方法和强制执行的方法ptrace()),但在这个问题中,我只对沙盒方法的套接字创建方面感兴趣(所以如果你建议使用沙盒)方法,请解释如何防止使用它创建套接字),我对需要内核修补或涉及加载内核模块的方法不感兴趣,内核模块不是Ubuntu Lucid默认二进制内核包的一部分,或者会影响系统上的每个进程.
可能重复:
Python,安全,沙箱
我正在用Python构建一个企业Web系统,它允许上传脚本并运行服务器端.鉴于我已经开发了Python及其如此简单的语言,它似乎是编写脚本的好语言.但是,存在安全隐患,我想阻止除有限子集之外的所有函数调用.有没有一种机制可以用来做这个或其他技术?我还需要使用别的东西吗?我正在开发Pyramid/Pylons.
我有一个Web服务,用户上传在服务器上运行的python脚本.这些脚本处理在服务器上的文件,我希望他们能够看到仅在服务器的文件系统中某一层级(最好:关于这一点我复制我要处理的文件和脚本的临时文件夹).
服务器最终将是基于Linux的服务器,但如果在Windows上也可以使用解决方案,那么知道如何解决这个问题会很好.
我的目的是创建一个限制访问FS文件夹的用户 - 最终只包含脚本和文件的文件夹 - 并使用该用户启动python解释器.
有人可以给我一个更好的选择吗?因为只依靠这个让我觉得不安全,我想要一个真正的沙盒或虚拟FS功能,我可以安全地运行不受信任的代码.