您現(xiàn)在的位置:首頁 >關(guān)于我們 >行業(yè)新聞 >VNC遠(yuǎn)程管理Linux服務(wù)器安全指導(dǎo)

VNC遠(yuǎn)程管理Linux服務(wù)器安全指導(dǎo)

時(shí)間:2011年2月18日

  在開源領(lǐng)域,遠(yuǎn)程遙控技術(shù)的代表就是VNC了。VNC(Virtual Network Computer,虛擬網(wǎng)絡(luò)計(jì)算機(jī))是一套由AT&T實(shí)驗(yàn)室開發(fā)的可操控遠(yuǎn)程計(jì)算機(jī)的軟件。根據(jù)主控端與被控端的不同,VNC軟件可以分為兩個(gè)部分,分別為VNC Server與VNC viewer。前者是安裝在被控制端上,而后者被安裝在主控端上。VNC軟件不僅是開源的,而且是跨平臺的。有不少系統(tǒng)管理員喜歡在Windows平臺上使用這個(gè)VNC來作為遠(yuǎn)程管理Linux服務(wù)器服務(wù)器租用或者客戶端的工具。

  整個(gè)VNC運(yùn)行的工作流程如下:

  (1)VNC客戶端通過瀏覽器或VNC Viewer連接至VNC Server。

  (2)VNC Server傳送一對話窗口至客戶端,要求輸入連接密碼,以及存取的VNC Server顯示裝置。

  (3)在客戶端輸入聯(lián)機(jī)密碼后,VNC Server驗(yàn)證客戶端是否具有存取權(quán)限。

  (4)若是客戶端通過VNC Server的驗(yàn)證,客戶端即要求VNC Server顯示桌面環(huán)境。

  (5)VNC Server通過X Protocol 要求X Server將畫面顯示控制權(quán)交由VNC Server負(fù)責(zé)。

  (6)VNC Server將來由 X Server的桌面環(huán)境利用VNC通信協(xié)議送至客戶端,并且允許客戶端控制VNC Server的桌面環(huán)境及輸入裝置。

  本文介紹如何使用VNC進(jìn)行Linux服務(wù)器的遠(yuǎn)程管理,并著重標(biāo)注了過程中需要注意的安全事項(xiàng)。

  1、啟動VNC服務(wù)器

  利用VNC軟件實(shí)現(xiàn)遠(yuǎn)程控制的基本原理是主控端利用VNC客戶端發(fā)起連接請求,被控端同意后即可建立遠(yuǎn)程控制。此時(shí)主控端就可以遠(yuǎn)程操控被控端。為此要利用VNC軟件來遠(yuǎn)程操控Linux操作系統(tǒng)的話,必須先在Linux操作系統(tǒng)上啟動VNC服務(wù)器軟件。否則的話,是無法建立VNC連接的。不過在大部分的Linux操作系統(tǒng)中,如紅帽子的Linux系統(tǒng),一般默認(rèn)都會安裝有VNC服務(wù)器的。不過其出于安全的考慮,一般都是關(guān)閉的。如果系統(tǒng)管理員要想利用VNC來實(shí)現(xiàn)遠(yuǎn)程操控的話,就需要在Linux操作系統(tǒng)上啟動VNC服務(wù)器。

  在Linux操作系統(tǒng)的命令行下,系統(tǒng)管理員可以輸入vncserver命令來啟動VNC服務(wù)器服務(wù)器租用。在啟動的過程中為了安全起見,操作系統(tǒng)會提示系統(tǒng)管理員輸入VNC連接的密碼。系統(tǒng)管理員最好能夠在這里輸入比較復(fù)雜的密碼,如英文字符與數(shù)字結(jié)合的密碼,以增加供給者破譯的難度。由于建立VNC連接后,主控端可以像操作自己的電腦那樣來操作被控端。所以這個(gè)密碼將是將是保障其安全的最后屏障。啟動成功后如圖1所示:

啟動VNC Server示意圖

  圖1 啟動VNC Server示意圖

  密碼配置完成后,Linux操作系統(tǒng)最后還會提示VNC連接的地址。如上面所示,最后系統(tǒng)管理員可以使用localhost.localdomain來遠(yuǎn)程操控Linux操作系統(tǒng)。以后在VNC客戶端上只要輸入這個(gè)網(wǎng)絡(luò)地址,就可以連接到VNC服務(wù)器上。如果后續(xù)需要更改VNC的連接密碼,需要使用vncpasswd來進(jìn)行更改。注意不是passwd。這跟更改用戶密碼的命令不同。一般情況下,只要正常顯示了其網(wǎng)絡(luò)地址,那么這個(gè)VNC服務(wù)就是正常啟動了。

  另外為了安全起見,中斷VNC服務(wù)器之后,最好在服務(wù)器上能夠及時(shí)關(guān)閉VNC應(yīng)用服務(wù)器。關(guān)閉的命令如上,只需要運(yùn)行如下命令即可:

  #vncserver –kill :1

  其中最后的1表示之前啟動的窗口編號。系統(tǒng)管理員應(yīng)該養(yǎng)成一個(gè)習(xí)慣,即當(dāng)某個(gè)服務(wù)啟動后,要及時(shí)關(guān)閉它。多啟動一個(gè)服務(wù),就多個(gè)黑客一個(gè)攻擊的機(jī)會。特別是將操作系統(tǒng)當(dāng)作服務(wù)器來使用的時(shí)候,這個(gè)習(xí)慣能夠在很大程度上提高服務(wù)器系統(tǒng)的安全性。一般來說,Linux操作系統(tǒng)默認(rèn)不啟動的服務(wù)服務(wù)器租用,系統(tǒng)管理員在啟動他們之后,最后都要及時(shí)關(guān)閉。

  不過如果是企業(yè)內(nèi)部,企業(yè)的布局比較大,如從系統(tǒng)管理員的辦公室到Linux操作系統(tǒng)客戶端那邊需要走半個(gè)小時(shí),此時(shí)為了管理的方便,如果對方操作系統(tǒng)只是用來做普通的客戶端的話,那么就可以讓Linux操作系統(tǒng)在啟動時(shí)自動啟動VNC服務(wù)器。由于客戶端的安全性要求不怎么嚴(yán)格,所以在管理便利上方面可以做出一定程度的妥協(xié)。但是如果操作系統(tǒng)是作為服務(wù)器的話,那么開機(jī)自動啟動VNC服務(wù)器類似的操作,系統(tǒng)管理員需要謹(jǐn)慎。

  如果系統(tǒng)管理員確定需要開機(jī)時(shí)自動啟動VNC服務(wù)器,則可以通過ntsysv服務(wù)來定義。即只需要在命令行狀態(tài)下,輸入命令ntsysv,然后選中vncserver條目(按空格選擇),即設(shè)置了開機(jī)即啟動VNC服務(wù)器服務(wù)器租用。然后需要修改/etc/sysconfig/vncservers配置文件。找到這個(gè)文件中的VNCSERVER=”1:root”這個(gè)條目。默認(rèn)情況下操作系統(tǒng)是將這一行注釋掉的。系統(tǒng)管理員只需要將前面的注釋符號去掉即可。如此設(shè)置后,當(dāng)操作系統(tǒng)在下次啟動后就會自動啟用VNC服務(wù)器。

  2、使用VNC Viewer實(shí)現(xiàn)Linux遠(yuǎn)程管理

  在配置好VNC Server后,可以使用VNC Viewer來實(shí)現(xiàn)Linux的遠(yuǎn)程登錄和管理了。在Linux下面已經(jīng)自帶了該客戶端程序,用戶可以打開[應(yīng)用程序]菜單,在彈出的級聯(lián)菜單中選擇[VNC Viewer],如圖2所示:

使用VNC Viewer

  圖2 使用VNC Viewer

  系統(tǒng)會彈出如圖3所示的VNC Server登錄對話框,用戶需要指定待登錄的服務(wù)器地址:

輸入VNC Server地址

  圖3 輸入VNC Server地址

  輸入地址后,VNC Viewer連接上VNC Server,Server需要對VNC客戶端進(jìn)行身份驗(yàn)證,彈出如圖4所示的對話框,用戶輸入之前設(shè)置的密碼即可:

輸入密碼

  圖4 輸入密碼

  待客戶端通過服務(wù)器端的驗(yàn)證后,則會進(jìn)入如圖5所示的遠(yuǎn)程登錄界面,用戶就可以在圖形界面下簡單、方便地對遠(yuǎn)程的Linux進(jìn)行訪問和管理了。

成功使用VNC Server

  圖5 成功使用VNC Server

  3、使用SSH+VNC實(shí)現(xiàn)安全的Linux遠(yuǎn)程桌面管理

  VNC可以對數(shù)據(jù)進(jìn)行壓縮,使得傳輸?shù)臄?shù)據(jù)量比直接用SSH加密的小,但是缺點(diǎn)有一到兩次機(jī)會讓同一網(wǎng)段的計(jì)算機(jī)用sniffer竊聽到用戶名和密碼。認(rèn)證之后的數(shù)據(jù)可以進(jìn)行加密傳輸,所以使用過程中如果經(jīng)過配置,則是安全的,否則傳輸內(nèi)容不能保證完全保密。必要時(shí)可以通過SSH進(jìn)行加密端口映射來保證傳輸用戶名和密碼的時(shí)候也是加密的,這一操作占用的額外帶寬是極少的。

  至于SSH保護(hù)VNC的安全,需要使用SSH的端口轉(zhuǎn)發(fā)功能。一般在客戶端使用的是Linux的時(shí)候,可以先用SSH建立鏈接,語法上應(yīng)當(dāng)添加“-L 本地端口:本地地址:遠(yuǎn)程端口 遠(yuǎn)程地址”這一附加參數(shù),比如說本地是X.Y.Z.W,服務(wù)器是A.B.C.D,要轉(zhuǎn)發(fā)的端口本地的是5901,遠(yuǎn)程的也是5901,那么命令應(yīng)當(dāng)是:

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

  其他的參數(shù)多數(shù)可以同時(shí)使用。執(zhí)行完畢后就已經(jīng)創(chuàng)建了服務(wù)器服務(wù)器租用5901端口和本地5901端口的加密隧道。假設(shè)要鏈接的服務(wù)器上運(yùn)行的VNC桌面號是2,則繼續(xù)執(zhí)行如下命令:

  vncviewer A.B.C.D:2

  這樣打開的VNC窗口所有數(shù)據(jù)都經(jīng)過了SSH的加密。

  由于一般管理情況下多采用SSH的Windows客戶端,所以下面介紹如何配置Windows下的SSH Secure Shell來配合VNC實(shí)現(xiàn)安全的Linux遠(yuǎn)程桌面管理。

  首先,在SSH Secure Shell的主界面上選擇Settings下的Tunneling,如圖6所示。

為SSH Secure Shell設(shè)定Tunneling

  圖6 為SSH Secure Shell設(shè)定Tunneling

  然后,選擇添加一個(gè)配置,如圖7所示,其中Listen是本機(jī)端口,Destination是遠(yuǎn)程地址和端口,Display可以設(shè)定自己的描述。

Tunneling設(shè)定的具體選項(xiàng)

  圖7 Tunneling設(shè)定的具體選項(xiàng)

  最后,再運(yùn)行vncviewer來鏈接即可。特別值得注意的是:此處Server的地址不是需要連接的VNC Server的地址,而是前面設(shè)定的本機(jī)的SSH偵聽端口的地址,因?yàn)樗型ㄍ鵙NC Server的流量都需要先經(jīng)過本機(jī)的SSH進(jìn)行轉(zhuǎn)發(fā),如圖8所示,一般設(shè)定為localhost加端口即可,該端口就是在圖7中設(shè)定的SSH的偵聽端口。

使用Windows中的VNC Viewer連接Linux端的VNC Server

  圖8 使用Windows中的VNC Viewer連接Linux端的VNC Server

  圖9清晰地給出了使用Wireshark對上述通信的流量進(jìn)行抓包的結(jié)果,可以看到,從客戶端去往服務(wù)器端的VNC流量,均采用SSH協(xié)議進(jìn)行了加密傳輸,因此針對傳統(tǒng)的未經(jīng)過SSH加密處理的VNC通信來說要安全很多,能夠有效地避免竊聽和中間人攻擊:

針對上述通信流程的抓包結(jié)果顯示

  圖9 針對上述通信流程的抓包結(jié)果顯示

Copyright© 2004-2020 河南海騰電子技術(shù)有限公司 版權(quán)所有   經(jīng)營性ICP/ISP證 備案號:B1-20180452   豫公網(wǎng)安備 41019702002018號    電子營業(yè)執(zhí)照