ami*_*kaz 20 linux security virtualization sandbox
我想创建一个在本地运行其他人代码的Web服务...当然,我想限制他们对某些"sandbox"目录的代码访问,并且他们将无法连接到我的服务器的其他部分(DB,main网络服务器等)
什么是最好的方法呢?
运行VMware/Virtualbox:
(+)我猜它就像它得到的那样安全......即使有人设法"破解"......他们只会破解客人机器
(+)可以限制进程使用的cpu和内存
(+)易于设置..只需创建VM
( - )更难将沙箱目录从主机"连接"到guest虚拟机
( - )浪费额外的内存和CPU来管理VM
运行弱势用户:
(+)不会浪费额外的资源
(+)sandbox目录只是一个普通目录
(?)不能限制CPU和内存?
(?)不知道它是否足够安全......
还有其他方法吗?
运行Fedora Core 8的服务器,用Java和C++编写的"其他"代码
Tho*_*ard 14
要限制CPU和内存,您需要为进程组设置限制(POSIX资源限制仅适用于单个进程).您可以使用cgroups执行此操作.
例如,通过挂载内存cgroups文件系统来限制内存启动:
# mount cgroup -t cgroup -o memory /cgroups/memory
然后,为每个组创建一个新的子目录,例如
# mkdir /cgroups/memory/my-users
Run Code Online (Sandbox Code Playgroud)
将您想要约束的进程(此处使用PID"1234"处理)放入此组:
# cd /cgroups/memory/my-users
# echo 1234 >> tasks
Run Code Online (Sandbox Code Playgroud)
设置组的总内存限制:
# echo 1000000 > memory.limit_in_bytes
如果组fork子进程中的进程,它们也将在组中.
上面的组设置驻留内存限制(即约束进程将开始交换而不是使用更多内存).其他cgroup允许您限制其他内容,例如CPU时间.
您可以将服务器进程放入组中(以便整个系统及其所有用户都处于限制范围内)或让服务器将每个新会话放入新组中.
在我看来,从安全角度来看,首先允许在系统上运行本机代码并不是一个好主意。也许你应该重新考虑允许他们运行本机代码,这肯定会降低风险。
| 归档时间: |
|
| 查看次数: |
9583 次 |
| 最近记录: |