沙盒应用程序如何?
我想运行小的不受信任的程序,但限制它们访问其文件夹之外的任何文件,网络访问以及其他并不真正需要的文件。 实现这一目标的最简单方法是什么?
如果它们真的不受信任,并且您想确定,则需要设置一个单独的框。 无论是真的,还是虚拟的。
此外,如果你足够偏执,你不希望那个盒子与你重要的东西在同一个网络中。 在所有解决方案中,您都设置了一个没有权限的单独用户,因此不要向潜在的妥协者开放太多工具。
- 因此,最安全的选择是从网络中物理删除单独的框。
- 您可以通过将其添加到物理网络,但在不同的子网上给出一点:内部没有“真正的”连接
- 虚拟机可能是一种选择,但可能不得不放弃一些性能
如果你必须在同一个盒子上运行它,你就有了这个选项
- chroot环境。 这是为许多人执行此操作的默认选项,对于非特定威胁,它甚至可能起作用。 但它不是一个安全选项,可以很容易地打破。 我建议按预期使用它,即不是为了安全。
最后,您可能需要设置一个特定的沙盒模型,而不需要虚拟化或单独的盒子,或者chroot仍处于危险中的情况。 我怀疑这是你的意思,但请查看此链接以获取更深入的信息: https : //stackoverflow.com/questions/4249063/how-can-i-run-an-untrusted-c-program-in -a沙箱function于Linux的
Docker将帮助您设置可以从当前内核运行的容器,但是要远离系统的其他部分。 它似乎相当前沿,但有一个Ubuntu焦点一个很好的文档。
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