保护 X 窗口显示

保护 X 窗口显示

我想在我负责的系统上安装 X。我计划仅使用本地连接运行它,例如startx -- -nolisten tcp(据我所知,这是目前的默认设置)。

一些相对较旧的安全注释,X Windows 安全速成课程,意味着显示器本质上是不安全的:

使用“xhost -”启用访问控制来运行显示器将防止您通过端口号 6000 进行 XOpenDisplay 尝试。但是窃听者可以通过一种方法绕过此保护。如果他可以登录到您的主机,他就可以连接到本地主机的显示。 ...当然,入侵者必须在您的系统上拥有一个帐户,并且能够登录到运行特定 X 服务器的主机。在具有大量 X 终端的站点上,这意味着没有 X 显示对于有权访问的人来说是安全的。如果您可以在主机上运行进程,则可以连接到(任何)其 X 显示。

这里的含义是,无法为本地 X 显示器提供哪怕是基本的安全性。

真的吗?如果不是,是否需要考虑可以防止这种情况发生的配置设置?

答案1

您正在阅读的文档是上个世纪的。我不记得本世纪我使用过的任何系统不使用 cookie(如文档第 8 节所述)。对于 cookie,应用程序在连接到 X 服务器时需要做的第一件事就是提供“cookie”,这是服务器启动时随机生成的密码,并存储在只有您可以读取的文件中。应用程序知道 cookie 文件的位置,因为它是环境变量的值XAUTHORITY,默认为~/.Xauthority.如果某个进程可以读取您的 cookie,则意味着它可以访问您帐户上的私人文件,因此 X 服务器的安全性是一个有争议的问题。

由于这是默认设置,因此您无需采取明确的步骤来保护 X 服务器。

你确实需要克制一些行为:

  • 显然,不要泄露cookie文件的内容。
  • 不要使用 TCP 连接到 X 服务器,除非它们位于您确定不会有任何窃听者的受信任网络上。 (环回接口很好。)如果有人窥探 TCP 连接,他们就会看到 cookie。相反,使用 SSH 并告诉它转发 X11 连接(ForwardX11 yes在配置文件中,ssh -X在命令行上)。
  • 当您从计算机 A(运行 X 服务器)到计算机 B 运行 SSH 时,如果激活了 X11 转发,则远程计算机上您的帐户上运行的应用程序将可以访问本地 X 服务器。 X 服务器不会根据运行应用程序的计算机执行任何隔离。请注意,这意味着您必须信任远程管理员。

如果应用程序可以访问 X 服务器,则认为它可以访问您的帐户。虽然某些应用程序禁用了最明显的击键监控和注入功能,但有些功能无法禁用; X 不区分屏幕截图应用程序、键盘宏应用程序和一些您不信任的随机应用程序。如果您想运行您不信任的 GUI 应用程序,请在虚拟机中运行它(在 VM 中显示),或者在单独的帐户上运行它并让它显示在单独的 X 服务器上,例如X巢

相关内容