我们大学的语言系有一台 Intel NUC,很快将托管系里教职员工和学生使用的 Web 应用程序。NUC 运行 Ubuntu (14.10)。
我对终端和通过 SSH 进入服务器很熟悉,但我发现很多我需要做的任务通过屏幕共享(VNC)变得更简单。
我向我们的新技术总监建议在这台服务器上安装 VNC,这样我的生活就会轻松很多(事实上,在他被聘用之前,这台服务器上就安装了 VNC,后来他卸载了它)。然而,他回复了以下评论:
如果可以的话,我宁愿不在服务器上运行 X 或 VNC。毕竟它是一个服务器。
我真的不明白这个逻辑。它没有连接到显示器;只能通过 SSH 访问它。使用 VNC 访问服务器是否有一些我不知道的神奇缺点?
显然,您正在为攻击者打开另一个端口;反驳:我们位于两个大学防火墙后面(主大学网络防火墙以及我们子网自己的特殊防火墙)。 VNC 只能在我们的子网内完成,所以我不知道为什么这会成为一个问题,除了“这是另一个需要维护的包”,而使用 Ubuntu 的apt
包管理器,这不再是一个问题。
在服务器上安装 VNC 有哪些缺点?
编辑:这不仅仅是一个 Web 服务器。它还托管了许多其他应用程序。不确定这是否有区别。
答案1
原因有很多:
攻击面:更多的程序,尤其是联网的程序,意味着有人发现漏洞并进入的机会更多。
缺陷表面:同上,但将“某人”替换为“墨菲”,并将“get in”替换为“ruin your day”。实际上,“ruin your day”可能也适用于前一点。
系统效率:X11 以及人们倾向于在其上运行的 GUI 环境会消耗大量 RAM,尤其是在 NUC 等资源有限的系统上。不运行它们意味着有更多资源可用于执行有用的工作。
操作员效率:GUI 不适合编写脚本和其他形式的自动化。点击东西感觉很有效率,但实际上这是做技术含量高的事情最糟糕的方式。如果你不能编写脚本并自动化你的工作,你也会发现你未来的就业机会会受到严重限制——这个行业正在离开来自 GUI 管理工具。哎呀,现在甚至 Windows 服务器都可以无 GUI 安装,如果这还不能让您考虑只知道如何点击事物的相对优点,我真的不知道该对您说什么。
答案2
问题不在于 VNC - 请不要误会我的意思,VNC 是一种糟糕的协议并且存在许多缺陷(最大的缺陷是缺乏加密支持,因此所有内容都以纯文本形式通过网络传输),但这并不是不建议在服务器上使用它的主要原因。
您要安装 VNC 来访问什么,黑屏?不,您想访问整个桌面环境,这才是真正的问题。
一旦安装了所有这些桌面级 Gnome(或类似软件),您就可以认为您的服务器已受到威胁,因为在这个可怕的庞大应用程序集合中还有许多漏洞可以利用(除了它不是为提高生产力而设计的并且使用了大量资源之外)。我不推荐此软件和大多数 Linux 桌面环境的另一个原因是,它们几乎像 rootkit 一样接管了整个系统,并实现了所有内容的自己的版本(身份验证?不再有坚如磐石的用户和组,让我们以 root 身份运行这个 Policykit 废话,它根据一些不可读的、模糊的 XML 文件授予权限……配置?谁需要人类可读的配置文件?让我们将所有内容存储在二进制数据库中,除非您使用它们提供的实用程序(就像 Windows 注册表一样),否则您实际上无法看到或编辑这些数据库,并且让我们以 root 身份启动一堆守护进程,以便在您不使用桌面时耗尽资源)。
尝试在我的 Archlinux 服务器上安装 Gnome 桌面环境时,系统提示“总安装大小:1370.86 MiB”。这个数字非常大,想象一下安装后这台服务器将面临多么大的攻击面。其他桌面环境也好不到哪里去。
答案3
显然,你为攻击者打开了另一个端口;反驳:我们位于两所大学防火墙后面(主大学网络防火墙以及我们子网自己的特殊防火墙)。VNC 只能在我们的子网内完成,所以我很茫然……
永远不要以为您的系统位于防火墙后面,在私人网络上,您就无需担心安全问题。许多(如果不是大多数)成功入侵都是由可以访问上述网络的内部人员(员工、学生等)执行的。
答案4
尝试这样做来让技术总监高兴:
安装 VNC 和您喜欢的任何桌面
不要安装任何类型的屏幕保护程序。为什么?因为你没有屏幕,而且桌面放在那里也不会消耗太多资源。
不要转发 VNC 端口。如果需要使用它,请通过 SSH(端口 22)隧道传输 VNC 端口(5900)并以此方式连接。
此过程可为您提供加密和 SSH 的所有安全性,这些安全性已开放。您不会添加任何之前不存在的安全问题。
我已经在自己的服务器上执行此操作,与直接连接相比,VNC 过程中没有明显的额外延迟。