首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >在我的服务器上运行其他人代码(沙箱)的安全方式是什么?

在我的服务器上运行其他人代码(沙箱)的安全方式是什么?
EN

Stack Overflow用户
提问于 2018-04-10 23:59:01
回答 2查看 0关注 0票数 0

我想创建一个在本地运行其他人代码的Web服务......当然,我想限制他们的代码访问某些“沙箱”目录,并且他们将无法连接到我的服务器的其他部分(DB,main网络服务器等)

最好的办法是做什么?

运行VMware / Virtualbox:

(+)我认为它是安全的,即使有人设法“黑客”..他们只是黑客客机

(+)会限制进程使用的cpu和内存

(+)易于安装..只需创建虚拟机

( - )很难将沙盒目录从主机“连接”到访客

( - )浪费了额外的内存和用于管理VM的CPU

运行低于特权的用户:

(+)不会浪费额外的资源

(+)沙箱目录只是一个普通的目录

(?)不能限制CPU和内存?

(?)不知道它是否足够安全...

任何其他方式?

运行Fedora Core 8的服务器,用Java和C ++编写的“其他”代码

EN

回答 2

Stack Overflow用户

发布于 2018-04-11 08:36:36

  1. 在非特权用户下运行仍然允许本地攻击者利用漏洞提升特权
  2. 允许在VM中执行代码也可能不安全; 正如最近的VMWare漏洞报告所显示的那样,攻击者可以访问主机系统。

在我看来,从安全的角度来看,允许在系统上运行本机代码并不是一个好主意。也许你应该重新考虑允许他们运行本地代码,这肯定会降低风险。

票数 0
EN

Stack Overflow用户

发布于 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时间。

你可以将你的服务器进程放到组中(这样整个系统的所有用户都会受到限制)或者让服务器把每个新的会话放到一个新的组中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100003847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档