我想创建一个在本地运行其他人代码的Web服务......当然,我想限制他们的代码访问某些“沙箱”目录,并且他们将无法连接到我的服务器的其他部分(DB,main网络服务器等)
最好的办法是做什么?
运行VMware / Virtualbox:
(+)我认为它是安全的,即使有人设法“黑客”..他们只是黑客客机
(+)会限制进程使用的cpu和内存
(+)易于安装..只需创建虚拟机
( - )很难将沙盒目录从主机“连接”到访客
( - )浪费了额外的内存和用于管理VM的CPU
运行低于特权的用户:
(+)不会浪费额外的资源
(+)沙箱目录只是一个普通的目录
(?)不能限制CPU和内存?
(?)不知道它是否足够安全...
任何其他方式?
运行Fedora Core 8的服务器,用Java和C ++编写的“其他”代码
发布于 2018-04-11 08:36:36
在我看来,从安全的角度来看,允许在系统上运行本机代码并不是一个好主意。也许你应该重新考虑允许他们运行本地代码,这肯定会降低风险。
发布于 2018-04-11 09:34:50
要限制CPU和内存,您需要为进程组设置限制(POSIX资源限制仅适用于单个进程)。你可以使用cgroups来做到这一点。
例如,要通过挂载内存cgroups文件系统来限制内存启动:
# mount cgroup -t cgroup -o memory /cgroups/memory
然后,为每个组创建一个新的子目录,例如
# mkdir /cgroups/memory/my-users
把你想要约束的进程(PID为“1234”的进程)放到这个组中:
# cd /cgroups/memory/my-users
# echo 1234 >> tasks
设置组的总内存限制:
# echo 1000000 > memory.limit_in_bytes
如果组中的进程fork子进程,它们也将在组中。
上面的组设置了驻留内存限制(即受限进程将开始交换,而不是使用更多的内存)。其他cgroup让你限制其他的东西,比如CPU时间。
你可以将你的服务器进程放到组中(这样整个系统的所有用户都会受到限制)或者让服务器把每个新的会话放到一个新的组中。
https://stackoverflow.com/questions/-100003847
复制相似问题