在服务器上运行 GUI 应用程序是否存在安全问题?

在服务器上运行 GUI 应用程序是否存在安全问题?

例如,要编辑系统文件/etc/named/named.conf,我使用:

su -
Password:
gedit

然后打开并编辑上面的文件,而不是:

nano /etc/named/named.conf 

或者:

vi /etc/named/named.conf

这种时不时使用 GUI 工具的习惯是否会导致安全问题,尤其是在服务器环境?

答案1

只有运行的代码越多,就越多潜在的存在安全漏洞。因此,至少在理论上,您希望最大限度地减少已安装/运行的程序的数量和复杂性。在实践中,只要您始终掌握安全更新,那么就不会,没有真正的安全理由来避免在服务器上使用 GUI。

当然,它确实引出了一个问题,为什么您甚至在图形控制台上使用服务器而不是ssh首先通过,您应该非常舒服地使用终端编辑器。

答案2

如果唯一的原因是编辑特定文件,我认为切换到交互式 shell 已经是一个“安全问题”。但这只是一个观点。

考虑一下您切换到root交互方式。然后无论你运行什么,都以最高权限运行。现在的问题是您是否信任您正在运行的应用程序。特定应用程序可能存在导致安全问题的错误。

我的观点是,您希望最大限度地减少直接在root.运行 X 应用程序会带来整个 X 堆栈的复杂性,如果任何后门或逃逸可能被滥用,攻击者就会获得root访问权限。它不仅仅涉及 X 堆栈,还涉及您在root.这也是为什么您/我们必须非常小心已setuid设置位的应用程序的原因。

作为您工作流程的解决方案,我将提供该sudoedit命令。您可以使用它的形式

$ sudoedit <file_to_edit>

它将尝试对您进行身份验证/授权(如常规sudo操作),然后它将运行您首选的编辑器(由EDITOR环境变量设置)。与直接运行相比$ sudo $EDITOR <file_to_edit>,编辑器本身在您的原始权限下运行,在您退出后,它将用您的编辑结果替换该文件。不过,需要退出编辑器才能使更改生效可能会有点破坏性。

答案3

别担心。在管理服务器时养成使用文本模式工具的习惯的主要原因不是安全性,而是在低带宽或高延迟连接上远程执行操作的能力,而在这些情况下 GUI 应用程序是不切实际的。

xkcd 1200

相关内容