我在linux上有一个很久的遗留perl程序,在过去为一组受信任的本地用户编写。它没有考虑到安全性。
我们想要复活它以获取输入并通过网络提供输出作为服务。它需要读取cgi,将其传递给这个旧的遗留程序,并将答案返回给客户端浏览器。唉,我们没有人力来审计人工月的旧perl程序。 (Perl有一些沙盒功能可以缠绕在eval上,但这看起来很脆弱。)
这里有什么好的选择?
运行一个运行分发的虚拟机,该分发在root上设置为只读,并且在/ var / only上保持所有内容非常独立。 (哪一个?ubuntu风味?)
运行我们定期擦除的虚拟机。
这一切都在linux上---我知道如何为我的Windows VM运行vmware,但这似乎不是最好的工具。我在2年前尝试过kvm,但它的学习曲线却很陡峭。看起来我几乎想要跑
$ make-iso / > my.iso
$ exec.vm my.iso --mount '/var = my.vdisk' --run '/var/my.program'
这可能是一个常见问题。什么是处理它的好方法?
/ IAW
答案 0 :(得分:1)
这个问题没有好的解决方案。安全很难。
在完整虚拟机中运行它的另一种方法是使用Linux容器。
Docker是管理容器的一种非常简单的方法,在这种情况下我会简单地说 为每次运行脚本启动一个新容器,并在容器运行后将其吹走。