沙盒应用程序如何?

我想运行小的不受信任的程序,但限制它们访问其文件夹之外的任何文件,网络访问以及其他并不真正需要的文件。 实现这一目标的最简单方法是什么?

如果它们真的不受信任,并且您想确定,则需要设置一个单独的框。 无论是真的,还是虚拟的。

此外,如果你足够偏执,你不希望那个盒子与你重要的东西在同一个网络中。 在所有解决方案中,您都设置了一个没有权限的单独用户,因此不要向潜在的妥协者开放太多工具。

  • 因此,最安全的选择是从网络中物理删除单独的框。
  • 您可以通过将其添加到物理网络,但在不同的子网上给出一点:内部没有“真正的”连接
  • 虚拟机可能是一种选择,但可能不得不放弃一些性能

如果你必须在同一个盒子上运行它,你就有了这个选项

  • chroot环境。 这是为许多人执行此操作的默认选项,对于非特定威胁,它甚至可能起作用。 但它不是一个安全选项,可以很容易地打破。 我建议按预期使用它,即不是为了安全。

最后,您可能需要设置一个特定的沙盒模型,而不需要虚拟化或单独的盒子,或者chroot仍处于危险中的情况。 我怀疑这是你的意思,但请查看此链接以获取更深入的信息: https : //stackoverflow.com/questions/4249063/how-can-i-run-an-untrusted-c-program-in -a沙箱function于Linux的

Docker将帮助您设置可以从当前内核运行的容器,但是要远离系统的其他部分。 它似乎相当前沿,但有一个Ubuntu焦点一个很好的文档。

http://www.docker.io/

Firejail相当新,并且在不断发展。 使用方便。

你可以简单地说:

sudo apt-get install firejail firejail app 

一种可能的解决方案是虚拟化软件,例如虚拟盒,您可以在软件中心找到它。

  • 安装虚拟框
  • 创建启用了网络的虚拟机
  • 安装Ubuntu或者更轻的桌面,如Lubuntu
  • 完全更新已安装的操作系统(在虚拟框内)
  • 在虚拟机上禁用网络连接
  • 拍一张快照

您现在可以安装您不信任的软件以查看它的function。 它不能扰乱外部世界,也不能托管操作系统,因为它没有访问权限。

但它可能会丢弃您的虚拟机,但如果是,您可以从快照中恢复。

可能还有其他方法可以限制不受信任的软件的破坏力,但这是我能想到的最强大的方法。

另一种选择可能是LXC更多信息

LXC是Linux Containers的用户空间控制包,这是一种轻量级虚拟系统机制,有时被称为“类固醇上的chroot”。

LXC从chroot构建,以实现完整的虚拟系统,为Linux现有的流程管理基础架构添加资源管理和隔离机制。

它可以在软件中心使用。 但是我没有经验。

MBOX

“Mbox是一种轻量级的沙盒机制,任何用户都可以在商用操作系统中使用而无需特殊权限。” http://pdos.csail.mit.edu/mbox/

https://github.com/tsgates/mbox

我已经可靠地用它做了几件事。

您可以使用子用户使用Docker对应用程序进行沙箱处理。 这允许您执行沙盒GUI应用程序之类的操作,这对Docker来说并不容易。

我认为,一种可能的解决方案是创建一个单独的用户用于测试目的,并限制他的权限。 这样你就不会失去性能,在虚拟机中肯定会发生什么,但我认为这样安全性较低,如果设置不当,我就不知道如何做。

如果您只想沙箱用户的活动,您可以使用“dosh” https://github.com/grycap/dosh