我期待为ruby web应用程序提供一个免费的部署系统(基于rack而不是ruby on rails),所以基本上我会允许用户上传一个文件与他们的应用程序,应用程序将显示在http://user.domain。 COM
虽然我试图parsing什么是上传的应用程序唯一的方法,以确保这不会造成任何损害是孤立的。 我打算用FreeBSD jail来实现这个function。
第一个问题是我们会有一个IP。 我不确定这两种方法是否适用于所有需要在端口80上运行的多个应用程序:
b </s>
标准的ruby安装模板可以通过http://erdgeist.org/arts/software/ezjail/完成
问题是如果这个设置是合适的,或者我需要一个nginx反向代理设置?
在监狱中运行的ruby应用程序将保证不会对其他用户/服务器造成任何损害吗?
用FreeBSD + jail实现这个多宿主环境的推荐设置是什么?
如果你只有一个公共的IP,你需要将nginx作为一个反向代理,并且你想让应用程序被监禁。 然而,这样做的结果是,从监狱的angular度来看,所有的访问都是来自主机,所以用户应用程序可能会有任何不准确的信息。 您可以在Nginx中使用proxy_set_header来设置标准的代理标题,如X-Forwarded-For,并确保您的用户知道正确的信息位于那里。
Linux支持透明代理,它允许应用程序在数据包通过主机时欺骗源IP。 在FreeBSD上有这个基本的支持,但是它只对root有用,因为没有添加访问控制来允许用户控制它。 内核可以被修补以允许任何用户欺骗数据包,但是这是一个安全风险,所以你需要考虑什么最适合你的环境。
在监狱中运行的ruby应用程序将保证不会对其他用户/服务器造成任何损害?
Jail是一种相当安全的方式,可以降低运行在其上的服务对主机服务器的风险。 过去有“监狱rest”,但最近我不相信。 还有可能导致监狱中断的configuration错误。 但是,ezjail已经成熟,应该让你安装一个安全的环境。
考虑到在监狱里面有可能造成损害,你需要考虑到你能够发现一些违反使用条款的事情。