如何沙盒应用程序?

mic*_*hel 77 security

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

Nan*_*nne 29

如果他们真的不受信任,并且您想确定,则可以设置一个单独的框。要么是真的,要么是虚拟的。

此外,如果您足够偏执,您不希望该框与您的重要内容位于同一网络中。在所有解决方案中,您都会设置一个没有权限的单独用户,因此不要向潜在的妥协者开放太多工具。

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

如果您必须在同一个盒子上运行它,例如,您可以使用此选项

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

最后,您可能需要设置一个特定的沙盒模型,而无需虚拟化或单独的盒子的麻烦,或者chroot. 我怀疑这就是您的意思,但请查看此链接以获取更深入的信息。


小智 23

Firejail是相当新的并且在不断发展。便于使用。

您可以简单地:

sudo apt-get install firejail
firejail app
Run Code Online (Sandbox Code Playgroud)

  • 我今天尝试使用 firejail,结果发现它默认允许所有文件访问,并且它的开发人员认为这是一个“设计选择”,尽管我们其他人会认为这是一个安全问题。我会谨慎对待这个选项。 (3认同)

War*_*ill 13

完全虚拟化/仿真 (VirtualBox)

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

  • 安装虚拟盒子
  • 创建启用网络的虚拟机
  • 安装 Ubuntu 或者更轻的桌面,比如 Lubuntu
  • 完全更新已安装的操作系统(在 Virtual box 内)
  • 在虚拟机上禁用网络
  • 拍摄快照

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

但是,它可能会破坏您的虚拟机,但如果确实如此,您只需从快照中恢复即可。

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

基于容器的虚拟化(Docker/LXC)

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

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

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

它可以在软件中心获得。然而,我没有经验。


小智 13

Docker将帮助您设置可以在当前内核之外运行的容器,同时远离系统的其余部分。它看起来很前沿,但有一个 Ubuntu 重点是一个很好的文档。

  • 我认为在大多数情况下这是一个不错的选择。但是,原始问题的“不受信任”部分会让我有点担心。有一些可用的演示黑客可以允许应用程序“脱离”它的容器。考虑到 docker 容器以 root 访问权限运行,如果您的目标是将应用程序相互沙箱化,这可能是危险的。 (5认同)

小智 9

盒子

Mbox 是一种轻量级沙盒机制,任何用户都可以在商用操作系统中使用,无需特殊权限。

我已经可靠地将它用于几件事。


小智 5

子用户

您可以使用子用户通过 Docker 将应用程序沙箱化。这允许您执行诸如沙箱 GUI 应用程序之类的操作,而直接使用 Docker 并不容易做到这一点。

sudo apt install subuser
Run Code Online (Sandbox Code Playgroud)