停止从Ruby访问文件

时间:2010-01-29 09:06:08

标签: ruby

我有一个允许用户执行自己的ruby脚本的服务器应用程序。运行脚本的服务器是Amazon EC2上的虚拟实例,因此不会造成永久性损坏。但是,我想采取一切可能的预防措施来阻止任何危​​险/恶意脚本,重启仍然是我想避免的。

目前我不允许任何包含“require”或“include”的脚本。我认为允许“包含”实际上是安全的吗?没有任何用户访问服务器的文件系统,所以如果我不允许任何字符串“文件”出现。会阻止用户访问服务器的文件系统吗?

2 个答案:

答案 0 :(得分:2)

听起来像是在猜猜游戏。作为具有极低权限的用户运行脚本会不会更容易? 或者你可以看看TryRuby如何解决类似的问题。

似乎sandboxing Ruby有几个选项,但我没有使用any,所以我无法发出recommendations

答案 1 :(得分:2)

不允许出现字符串“文件”对您没有任何帮助。他们仍然有eval,pack / unpack,Dir,以及其他很多东西。

YMMV,但这就是我要做的事情:

  • 以非特权用户身份运行ruby进程
  • 在被监禁的环境中(即chroot,freebsd监狱或同等学历)
  • 在剥离的环境中(没有suid,没有其他不必要的文件 - 最小的是最好的)
  • $SAFE> = 2
  • 并且没有对任何文件/文件夹的写访问权

可能仍然不安全,但这是一个开始。

编辑:使用ulimit或等效设置限制系统资源消耗也是一个好主意。