当前位置: 首页>>技术教程>>正文


沙盒应用程序如何?

,

问题描述

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

最佳解决方案

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

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

  • 因此,最安全的选择是从网络中物理删除单独的框。

  • 您可以通过将其添加到物理网络,但在不同的子网上给出一点:内部没有’real’连接

  • 虚拟机可能是一种选择,但可能不得不放弃一些性能

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

  • chroot环境。对于许多人来说,这是一个默认选项,对于non-specific威胁,它甚至可能起作用。但它不是一个安全选项,可以很容易地打破。我建议按预期使用它,即不是为了安全。

最后,您可能需要设置一个特定的沙盒模型,而不需要虚拟化或单独的框的麻烦,或者chroot的still-at-risk情况。我怀疑这是你的意思,但请看这个链接获取更多in-depth信息:https://stackoverflow.com/questions/4249063/how-can-i-run-an-untrusted-c-program-in-a-sandbox-in-linux

次佳解决方案

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

http://www.docker.io/

第三种解决方案

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

你可以简单地说:

sudo apt-get install firejail
firejail app

第四种方案

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

  • 安装虚拟框

  • 创建启用了网络的虚拟机

  • 安装Ubuntu或者更轻的桌面,如Lubuntu

  • 完全更新已安装的操作系统(在虚拟框内)

  • 在虚拟机上禁用网络连接

  • 拍一张快照

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

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

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

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

LXC是Linux Containers的用户空间控制包,Linux容器是一种轻量级虚拟系统机制,有时称为“chroot on steroids”。

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

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

第五种方案

MBOX

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

https://github.com/tsgates/mbox

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

第六种方案

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

参考资料

本文由Ubuntu问答整理, 博文地址: https://ubuntuqa.com/article/1369.html,未经允许,请勿转载。