我想运行不受信任的小型程序,但限制它们访问文件夹之外的任何文件、网络访问以及它们实际上不需要的所有其他内容。实现此目的的最简单方法是什么?
答案1
如果它们确实不受信任,而您想要确保万无一失,那么您可以设置一个单独的盒子。无论是真的,还是虚拟的。
此外,如果你够谨慎,你不会希望那个盒子和你的重要资料在同一个网络中。在所有解决方案中,你都会设置一个没有权限的单独用户,这样就不会向潜在的妥协者开放太多工具。
- 因此,最安全的选择是从您的网络物理移除一个单独的盒子。
- 你可以通过将其添加到物理网络,但在不同的子网上稍微让步:内部没有“真正的”连接
- 虚拟机是一种选择,但可能不得不放弃一些性能
如果你一定要在同一个盒子上运行它,那么你可以使用这个选项
chroot
。这是许多人执行此操作的默认选项,对于非特定威胁,它甚至可能有效。但它不是一个安全选项,而且很容易被破解。我建议按预期使用它,即不为了安全。
最后,你可能需要设置一个特定的沙盒模型,而不需要虚拟化或单独的盒子,也不需要仍然存在风险的情况chroot
。我怀疑这不是你的意思,但看看此链接以获取更多深入信息。
答案2
答案3
完全虚拟化/仿真(VirtualBox)
一种可能的解决方案是虚拟化软件,例如您可以在软件中心找到的 VirtualBox。
- 安装 Virtual Box
- 创建启用网络的虚拟机
- 安装 Ubuntu 或者更轻量的桌面,比如 Lubuntu
- 完全更新已安装的操作系统(在虚拟盒内)
- 在虚拟机上禁用网络
- 拍摄快照
现在,您可以安装您不信任的软件,看看它能做什么。它无法扰乱外界或您的主机操作系统,因为它无权访问。
它可能会破坏您的虚拟机,但如果真的如此,您可以从快照中恢复。
可能还有其他方法可以限制不受信任的软件的破坏力,但这是我能想到的最强大的方法。
基于容器的虚拟化(Docker/LXC)
LXC 是 Linux 容器的用户空间控制包,是一种轻量级虚拟系统机制,有时被描述为“增强版 chroot”。
LXC由chroot构建而成,实现完整的虚拟系统,在Linux现有的进程管理基础架构上添加了资源管理和隔离机制。
它在软件中心可用。但我没有使用过。