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