LXC 可以用来监禁已安装浏览器的实例吗?

LXC 可以用来监禁已安装浏览器的实例吗?

是否可以在桌面系统上使用 LXC 来限制浏览器和其他过去被证明容易受到某些类型攻击的软件。所以我想要实现的是,比如 Firefox,进入监狱后仍然能够查看其窗口等,但要确保它只能对“气泡内”的任何内容进行读写访问,但不能对主机系统进行读写访问。

LXC 中的示例lxc-sshd容器表明类似的事情应该是可能的(应用程序级容器),但我只在最多需要 TTY 的程序中看到过这种情况。

这也可以在 KDE、GNOME、Unity 下工作吗?

答案1

火狱是一个 Linux 命名空间沙箱程序,可以监禁 Firefox 或任何其他 GUI 软件。它应该可以在任何 Linux 计算机上运行。

答案2

不直接。凭借诸如LXC或者开放VZ它们里面的应用程序本质上是有自己的 Linux 盒子。因此,您需要使用诸如X2go或者虚拟网络控制器查看他们的远程桌面,或者使用 X 远程显示在其中运行的应用程序。

本教程讨论了如何使用 Debian/Ubuntu 执行此操作,但大部分步骤也应该可以转换到其他发行版。文章标题为:Debian 虚拟化:LXC 桌面虚拟化

答案3

您运行的是什么桌面管理器并不重要;重要的是您为容器提供了对 Xwindows 套接字、XAUTHORITY 环境变量及其指向的文件的访问权限。

答案4

lxc 容器没有自己的显示/音频,因此它必须以某种方式使用主机显示/音频。典型的 Linux 解决方案是

  1. 直接跨容器边界共享主机 X 资源
  2. 通过 ssh 反向管道使用 X 转发

这些解决方案的问题在于,容器上的恶意内容可能会通过 X 进行控制以查看窗口或捕获击键等。X 的设计并未考虑到这种安全性。

另一种解决方案是使用所谓的伪装 X 服务器,它并不是真正的 X 服务器,而是向容器上的客户端软件呈现伪 X 界面和伪 X 屏幕,同时将一些 X 工作传递给真实的 X 服务器。 X服务器在它后面。伪 X 屏幕在主机实际 X 桌面上显示为单个 X 窗口。

其中的一种伪装 X 服务器是软件 Xephyr,xserver-xephyr它实际上是为 X 开发人员调试而开发的。

我编写了一个简单的 javascript 程序来创建(从普通的 ubuntu lxc 图像)一个 lxd/lxc 容器,其中填充了 firefox、openvpn、Xephyr 和pulseaudio。目标主机也是Ubuntu。 VPN 将所有 ip 流量转发到 VPS。

https://github.com/craigphicks/browser-on-lxc-vpn-xephyr

https://www.npmjs.com/package/browser-on-lxc-vpn-xephyr

最终,在考虑 Spectre 等人的漏洞时。等,即使是容器也无法提供保证——需要单独的物理CPU才能实现理论上的完美防御。 (实际的威胁程度是有争议的——一年后还没有任何恶意利用的报道)。作为一种解决方案,将容器放在另一台机器上是很容易的。

这可能会保护主机(也可能不会 - 我不保证)。然而,浏览器通常用于输入大量敏感信息 - 密码和 OTP。 SIP 和社交距离是最好的安全措施,但这不是一种很好的生活方式。

相关内容