保护(perl)用于Web服务提供的遗留程序(apache)

时间:2014-02-03 18:03:15

标签: apache perl security

我在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'
  • 我们的遗留程序可以想象地被改变以在早期读取所有必要的输入文件,然后只能在stdin / stdout上运行。如果一个操作系统有一个我们可以调用的内核调用来断开所有后续进程和子进程对所有磁盘文件系统的访问,那么这个遗留程序就会变得安全,即使有人最初在某个地方插入了恶意代码,或者称为系统执行程序。我不认为这在linux,bsd或其他类似操作系统的unix中是可行的。 (PS:这种保护程序的简单方法不存在多么令人难过。:-(。)

这可能是一个常见问题。什么是处理它的好方法?

/ IAW

1 个答案:

答案 0 :(得分:1)

这个问题没有好的解决方案。安全很难。

在完整虚拟机中运行它的另一种方法是使用Linux容器。

Docker是管理容器的一种非常简单的方法,在这种情况下我会简单地说 为每次运行脚本启动一个新容器,并在容器运行后将其吹走。

https://www.docker.io/