Ubuntu 的社区文档解释了为什么不建议在生产服务器系统上运行 GUI的真正原因:
大多数 Ubuntu Server 开发人员不建议在服务器上安装 X。不安装 GUI 有多种原因。
不安装 GUI 的一些原因包括:
- 您将拥有更多受安全漏洞影响的代码、更多需要更新的包以及更多的服务器停机时间。
- LTS 服务器版本的完整 5 年生命周期不支持 X11 和桌面包。
- 性能可能会受到影响,因为 GUI 会消耗资源(内存、硬盘空间、CPU 等)。
- 最佳做法是仅在生产服务器上安装所需的软件。
- GUI 可能包括不适合服务器的其他网络服务。
- Ubuntu 桌面版的目标之一是让用户更容易使用 Linux。在安装某些桌面环境时,将安装您可能并不特别想要的服务。例如,用于帮助配置网络的avahi-daemon添加了另一个开放端口,并且可能会引入与 .local 域的不必要的 DNS 冲突。
所以对于最安全的服务器最好不要安装 GUI。
“Ubuntu 文档维基的贡献者”的“ServerGUI”,在 CC-BY-SA 3.0 允许的情况下在此处复制。
与一些常见的误解相反,X11 作为服务器实际上与为什么从安全角度来看在生产服务器上运行 GUI 被认为是不理想的无关。默认情况下,X11几乎从未配置为可在任何操作系统上通过网络访问。没有任何版本的 Ubuntu 曾让 X11 在默认配置下运行网络可访问服务器。(要通过 TCP 访问 Ubuntu 上的 X11,您必须通过 SSH 转发它或手动重新配置服务器。)
此外,即使 X11 确实运行了网络可访问服务器,这也不是不将其安装在生产服务器系统上的理由。任何运行生产服务器的人都可能根据自己的需要对其进行配置,并对其进行审核以确保没有运行不需要的服务。(如果他们做不到,那将对他们的安全构成比安装 GUI 时更大的威胁。)即使 X11必须有一个端口侦听物理网络接口(事实并非如此),端口可以很容易地通过重新配置内置netfilter
using iptables
(或更高级别的前端,如ufw
)来阻止。
相比之下,上面列出的问题并不那么容易通过重新配置来克服。
每个正在运行的进程都存在安全风险。特别是那些侦听网络端口的(X11 可以)。
一般的好做法是不要在不需要绝对存在的服务器上运行任何东西,而且 X11 当然不需要在您将通过 SSH 连接到的服务器上。
我怀疑你读到的文章是在谈论 X11 中的一个特定漏洞(如果是这样的话,它就会被修复,漏洞不会长期悬而未决),而只是一般的良好做法。
这是因为如果 X Window 系统没有得到适当的保护,它会带来严重的安全风险。X11“显示器”是在您的桌面上运行的 X11 服务器,包括屏幕、键盘和鼠标。如果您的 X11 显示器不安全,它将允许在 Internet 上任何地方运行的程序连接到它,并且该连接可能对您完全不可见。连接后,该程序可以完全访问您的显示器,这意味着它可以:
不使用拇指规则xhost +
——它会完全禁用显示器的安全性。
一个好方法是转发 X 是通过ssh
.
取自:http : //www2.slac.stanford.edu/computing/security/xwindow/