服务器之家:专注于VPS、云服务器配置技术及软件下载分享
分类导航

云服务器|WEB服务器|FTP服务器|邮件服务器|虚拟主机|服务器安全|DNS服务器|服务器知识|Nginx|IIS|Tomcat|

服务器之家 - 服务器技术 - 服务器知识 - VNC远程管理Linux服务器安全指导

VNC远程管理Linux服务器安全指导

2023-03-05 20:3951CTO李洋 服务器知识

本文介绍如何使用VNC进行Linux服务器的远程管理,并着重标注了过程中需要注意的安全事项。利用VNC软件实现远程控制的基本原理是主控端利用VNC客户端发起连接请求,被控端同意后即可建立远程控制。在大部分的Linux操作系统中,

在开源领域,远程遥控技术的代表就是VNC了。VNC(Virtual Network Computer,虚拟网络计算机)是一套由AT&T实验室开发的可操控远程计算机的软件。根据主控端与被控端的不同,VNC软件可以分为两个部分,分别为VNC Server与VNC viewer。前者是安装在被控制端上,而后者被安装在主控端上。VNC软件不仅是开源的,而且是跨平台的。有不少系统管理员喜欢在Windows平台上使用这个VNC来作为远程管理Linux服务器或者客户端的工具。

整个VNC运行的工作流程如下:

(1)VNC客户端通过浏览器或VNC Viewer连接至VNC Server。

(2)VNC Server传送一对话窗口至客户端,要求输入连接密码,以及存取的VNC Server显示装置。

(3)在客户端输入联机密码后,VNC Server验证客户端是否具有存取权限。

(4)若是客户端通过VNC Server的验证,客户端即要求VNC Server显示桌面环境。

(5)VNC Server通过X Protocol 要求X Server将画面显示控制权交由VNC Server负责。

(6)VNC Server将来由 X Server的桌面环境利用VNC通信协议送至客户端,并且允许客户端控制VNC Server的桌面环境及输入装置。

本文介绍如何使用VNC进行Linux服务器的远程管理,并着重标注了过程中需要注意的安全事项。

1、启动VNC服务器

利用VNC软件实现远程控制的基本原理是主控端利用VNC客户端发起连接请求,被控端同意后即可建立远程控制。此时主控端就可以远程操控被控端。为此要利用VNC软件来远程操控Linux操作系统的话,必须先在Linux操作系统上启动VNC服务器软件。否则的话,是无法建立VNC连接的。不过在大部分的Linux操作系统中,如红帽子的Linux系统,一般默认都会安装有VNC服务器的。不过其出于安全的考虑,一般都是关闭的。如果系统管理员要想利用VNC来实现远程操控的话,就需要在Linux操作系统上启动VNC服务器。

在Linux操作系统的命令行下,系统管理员可以输入vncserver命令来启动VNC服务器。在启动的过程中为了安全起见,操作系统会提示系统管理员输入VNC连接的密码。系统管理员最好能够在这里输入比较复杂的密码,如英文字符与数字结合的密码,以增加供给者破译的难度。由于建立VNC连接后,主控端可以像操作自己的电脑那样来操作被控端。所以这个密码将是将是保障其安全的最后屏障。启动成功后如图1所示:

VNC远程管理Linux服务器安全指导
图1 启动VNC Server示意图

密码配置完成后,Linux操作系统最后还会提示VNC连接的地址。如上面所示,最后系统管理员可以使用localhost.localdomain来远程操控Linux操作系统。以后在VNC客户端上只要输入这个网络地址,就可以连接到VNC服务器上。如果后续需要更改VNC的连接密码,需要使用vncpasswd来进行更改。注意不是passwd。这跟更改用户密码的命令不同。一般情况下,只要正常显示了其网络地址,那么这个VNC服务就是正常启动了。

另外为了安全起见,中断VNC服务器之后,最好在服务器上能够及时关闭VNC应用服务器。关闭的命令如上,只需要运行如下命令即可:

#vncserver –kill :1


其中最后的1表示之前启动的窗口编号。系统管理员应该养成一个习惯,即当某个服务启动后,要及时关闭它。多启动一个服务,就多个黑客一个攻击的机会。特别是将操作系统当作服务器来使用的时候,这个习惯能够在很大程度上提高服务器系统的安全性。一般来说,Linux操作系统默认不启动的服务,系统管理员在启动他们之后,最后都要及时关闭。

不过如果是企业内部,企业的布局比较大,如从系统管理员的办公室到Linux操作系统客户端那边需要走半个小时,此时为了管理的方便,如果对方操作系统只是用来做普通的客户端的话,那么就可以让Linux操作系统在启动时自动启动VNC服务器。由于客户端的安全性要求不怎么严格,所以在管理便利上方面可以做出一定程度的妥协。但是如果操作系统是作为服务器的话,那么开机自动启动VNC服务器类似的操作,系统管理员需要谨慎。

如果系统管理员确定需要开机时自动启动VNC服务器,则可以通过ntsysv服务来定义。即只需要在命令行状态下,输入命令ntsysv,然后选中vncserver条目(按空格选择),即设置了开机即启动VNC服务器。然后需要修改/etc/sysconfig/vncservers配置文件。找到这个文件中的VNCSERVER=”1:root”这个条目。默认情况下操作系统是将这一行注释掉的。系统管理员只需要将前面的注释符号去掉即可。如此设置后,当操作系统在下次启动后就会自动启用VNC服务器。

2、使用VNC Viewer实现Linux远程管理

在配置好VNC Server后,可以使用VNC Viewer来实现Linux的远程登录和管理了。在Linux下面已经自带了该客户端程序,用户可以打开[应用程序]菜单,在弹出的级联菜单中选择[VNC Viewer],如图2所示:

VNC远程管理Linux服务器安全指导
图2 使用VNC Viewer

系统会弹出如图3所示的VNC Server登录对话框,用户需要指定待登录的服务器地址:

VNC远程管理Linux服务器安全指导
图3 输入VNC Server地址

输入地址后,VNC Viewer连接上VNC Server,Server需要对VNC客户端进行身份验证,弹出如图4所示的对话框,用户输入之前设置的密码即可:

VNC远程管理Linux服务器安全指导
图4 输入密码

待客户端通过服务器端的验证后,则会进入如图5所示的远程登录界面,用户就可以在图形界面下简单、方便地对远程的Linux进行访问和管理了。

VNC远程管理Linux服务器安全指导
图5 成功使用VNC Server

3、使用SSH+VNC实现安全的Linux远程桌面管理

VNC可以对数据进行压缩,使得传输的数据量比直接用SSH加密的小,但是缺点有一到两次机会让同一网段的计算机用sniffer窃听到用户名和密码。认证之后的数据可以进行加密传输,所以使用过程中如果经过配置,则是安全的,否则传输内容不能保证完全保密。必要时可以通过SSH进行加密端口映射来保证传输用户名和密码的时候也是加密的,这一操作占用的额外带宽是极少的。

至于SSH保护VNC的安全,需要使用SSH的端口转发功能。一般在客户端使用的是Linux的时候,可以先用SSH建立链接,语法上应当添加“-L 本地端口:本地地址:远程端口 远程地址”这一附加参数,比如说本地是X.Y.Z.W,服务器是A.B.C.D,要转发的端口本地的是5901,远程的也是5901,那么命令应当是:

ssh -L 5901:X.Y.Z.W:5901 A.B.C.D


其他的参数多数可以同时使用。执行完毕后就已经创建了服务器5901端口和本地5901端口的加密隧道。假设要链接的服务器上运行的VNC桌面号是2,则继续执行如下命令:

vncviewer A.B.C.D:2


这样打开的VNC窗口所有数据都经过了SSH的加密。

由于一般管理情况下多采用SSH的Windows客户端,所以下面介绍如何配置Windows下的SSH Secure Shell来配合VNC实现安全的Linux远程桌面管理

首先,在SSH Secure Shell的主界面上选择Settings下的Tunneling,如图6所示。

VNC远程管理Linux服务器安全指导
图6 为SSH Secure Shell设定Tunneling

然后,选择添加一个配置,如图7所示,其中Listen是本机端口,Destination是远程地址和端口,Display可以设定自己的描述。

VNC远程管理Linux服务器安全指导
图7 Tunneling设定的具体选项

最后,再运行vncviewer来链接即可。特别值得注意的是:此处Server的地址不是需要连接的VNC Server的地址,而是前面设定的本机的SSH侦听端口的地址,因为所有通往VNC Server的流量都需要先经过本机的SSH进行转发,如图8所示,一般设定为localhost加端口即可,该端口就是在图7中设定的SSH的侦听端口。

VNC远程管理Linux服务器安全指导
图8 使用Windows中的VNC Viewer连接Linux端的VNC Server

图9清晰地给出了使用Wireshark对上述通信的流量进行抓包的结果,可以看到,从客户端去往服务器端的VNC流量,均采用SSH协议进行了加密传输,因此针对传统的未经过SSH加密处理的VNC通信来说要安全很多,能够有效地避免窃听和中间人攻击:

VNC远程管理Linux服务器安全指导
图9 针对上述通信流程的抓包结果显示

 

【51CTO.com独家特稿,转载请注明原文作者和出处。】

作者介绍:李洋(博客),博士毕业于中科院计算所。10多年来一直从事计算机网络信息安全研发工作,曾主持和参与多项国家重点项目以及信息安全系统和企业信息安全系统的研发工作。具有Linux系统应用、管理、安全及内核的研发经验,擅长网络安全技术、协议分析、Linux系统安全技术、Linux系统及网络管理、Linux内核开发等。

原文地址:https://www.51cto.com/article/244861.html

延伸 · 阅读

精彩推荐