Docker 中的 Firefox,孤立失败

Docker 中的 Firefox,孤立失败

在尝试使用 docker 时,我意识到可以在容器中运行浏览器以提高安全性。我设法从干净的开始Docker 费多拉,我在其中安装了该openssh-daemon软件包。从那里我构建了一个新映像,在其中安装了firefox.

我最终能够使用以下命令行从主机启动图形化 Firefox:

ssh -p2222 localhost -X firefox   

到目前为止一切顺利,但是这里发生了两件非常相关的奇怪事情:

  • 如果我从我的真实的机,然后我从容器启动它,我得到了第二个窗口,其配置与我的真实机器中一样;

  • 恰恰相反,也就是说,如果我从容器启动 Firefox,然后从真机启动另一个 Firefox,则会出现容器中的第二个窗口。

至少可以说我很惊讶。容器应该完全隔离该过程,不是吗?

编辑: 我相信我找到了相关问题。该--no-remote选项解决了问题。我仍然不明白这是怎么发生的。我想这与 XWindow 协议有关,因为我没有看到两个实例之间有任何其他连接。

答案1

X 下运行的任何程序都不会与 X 下运行的其他程序隔离。

在 X 服务器上运行的程序,使用 X11 协议,可以检查哪些其他窗口打开。

X11 还存在其他几个安全问题。在配置 sshd 时,我只看到过关闭通过 X 进行访问的建议,从未见过打开的建议。 Wayland 应该是这方面的改进。

请注意,docker 是关于进程隔离的,但出于安全之外的其他原因。您可以获得本机速度、良好的隔离以及对容器中运行内容的控制,但不能保证进程将 100% 被包含,这与适当的沙箱(或在 docker 容器中运行 SELinux 之类的东西)不同。

说 docker 被击败有点像踢开一扇门。

相关内容