VNC的版本眾多,功能上大同小異,這里就以常用的TigerVNC為例進行說明,TigerVNC是一款完全免費的VNC遠控軟件,因為不存在溢出問題,所以使用起來是比較安全的。TigerVNC使用DES算法對連接密碼進行加密,因為其使用的是一個固定的密鑰,所以對于黑客來說,破解起來并不復雜。運行“regeit.exe”程序,在注冊表編輯器中打 開“HKEY_CURRENT_USERSoftwareTigerVNCWinVNC4”分支,在右側窗口中的“Password”鍵值中存儲著加密后的密碼信息。黑客只要使用某些工具,就可以對目標服務器上的TigerVNC進行密碼猜解。如果您下載了TigerVNC的源代碼包,會在其中發(fā)現(xiàn)名為“vncauth.c”的源程序文件,其中的“fixedkey[8]= {23,82,107,6,35,78,88,7}”語句說明了其使用的固定的8位密鑰,您可以對其進行修改,例如改成其它的數(shù)值,然后使用VC++ 6.0對整個開發(fā)包進行編譯處理,就會得到更改密鑰后的TigerVNC。因此,黑客如果還使用現(xiàn)有的VNC密碼破譯工具,因其利用的還是之前的默認密鑰,當然就無從破譯了。
圖1 TigerVNC端口設置界面
當然,對于不熟悉編程的用戶來說,手工修改并編輯源碼并不輕松。因此,保護TigerVNC密碼最簡單有效的工具是盡可能提高密碼的復雜度,例如選擇包含大小寫、數(shù)字、特殊字符相混合的密碼,盡量使其脫離傳統(tǒng)密碼字典的范疇。從原理上說,雖然TigerVNC僅支持8位的密碼設置(不管密碼有多長,但在上述“password”鍵值中只有8位),但是因為其口令驗證機制比較復雜,所以使用VNCCrackX4等工具,因為其必須依靠字典才可以破解密碼,因此很難對付復雜的密碼,這樣就可以有效保護TigerVNC的安全。因為TigerVNC開啟的是5900和5800端口,前者用于遠控操作,后者用于HTTP客戶端管理功能。因此,黑客往往會使用掃描器來掃描這些端口,一旦發(fā)現(xiàn)其處于開啟狀態(tài),就認定其安裝了VNC遠控服務。因此,可以在TigerVNC設置窗口中的“Connections”面板(如圖1所示)中對上述連接端口進行修改,例如將其設置為不常使用的端口,可以提高服務器的隱蔽性,避免黑客的襲擾。
圖2 在FreeSSH中創(chuàng)建賬戶
當然,僅僅保證密碼的安全性還是不夠的,如果黑客已經(jīng)通過其他途徑侵入了與TigerVNC服務器所處的同一網(wǎng)關下的某臺主機,就可以通過ARP欺騙技術,對該網(wǎng)段的所有主機的通訊進行嗅探分析,因為TigerVNC客戶機和服務器之間進行安全認證時沒有進行加密保護,所有連接密碼很容易被黑客預設的嗅探工具捕獲。例如,使用Cain這款功能強大的工具,就可以對同一網(wǎng)關下的所有的主機進行掃描并執(zhí)行ARP欺騙攻擊,當TigerVNC客戶端和服務器端進行通訊時,相關的會話信息就會被Cain完整攔截,包括TigerVNC客戶端、服務器端地址、加密數(shù)據(jù)等信息。Cain自身已經(jīng)提供了強大的破譯功能,可以很輕松地破譯3DES等加密算法,所以得到TigerVNC連接密碼實在是輕而易舉的事情。
那么,該如何保護TigerVNC客戶端和服務器端通訊的安全,防止黑客對其進行破譯攔截呢?具體的保護方法不止一種,這里我們使用了SSH端口轉發(fā)技術(SSH Port forwarding)為例,來進行具體的介紹,該方法具有很強的通用型,可以加密保護任何未加密的通訊服務,此外,還可以有效穿越防火墻的限制。
首先,我們需要一款SSH服務器軟件,這里我們使用的是FreeSSH,其安全性較高而且完全免費。當FreeSSH安裝完成后,在自動彈出的對話框中點擊“是”按鈕,F(xiàn)reeSSH會自動生成一對隨機密鑰。在FreeSSH設置窗口中的“Users”面板中點擊“Add”按鈕,在彈出窗口(如圖2所示)中的“Login”欄中輸入帳戶名,在“Authorization”列表中選擇加密方式,包括NT賬戶認證、SHA1密碼三列、公開密鑰等。
如果選擇第二種方式,需要輸入密碼信息。在“User can use”欄中需要勾選“Shell”和“Tunneling”項,點擊確定按鈕名,完成該賬戶的創(chuàng)建操作。在“Tunneling”面板中勾選“Allow local port forwarding” 和“but forward only to localhost(127.0.0.1)”項,激活本地的SSH端口轉發(fā)功能,而且只能轉發(fā)給本地主機。
在服務器端系統(tǒng)托盤中的TigerVNC圖標的右鍵菜單中點擊“Options”項,在設置窗口中的“Security”面板中點擊“Configure”按鈕,設置連接密碼。
當服務器端設置完畢后,需要在客戶端運行Putty這款連接工具。在Putty主界面左側選擇“Connection”→“SSH”→“Tunnels”項,在右側窗口中的“Sourceport”欄中輸入本地監(jiān)聽端口,例如7900。在“Destination”欄中輸入服務器端端口,例如“xxx.xxx.xxx.xxx:5900”。點擊“Add”按鈕,完成該轉發(fā)規(guī)則的創(chuàng)建操作(如圖3所示)。如果需要使用TightVnc的HTTP客戶端管理功能,可以為服務器端TigerVNC的5800端口設置轉發(fā)規(guī)則,方法與上述相同。之后在PuTTY主界面左側點擊“Session”項,在右側窗口中的“Host Name”欄中輸入服務器的地址,在“Port”欄中輸入端口號(默認為 22),點擊“Open”按鈕,和遠程服務器建立安全連接。在彈出的認證窗口中按照提示輸入在FreeSSH中創(chuàng)建的帳戶名和密碼。當連接建立成功后,運行TigerVNC客戶端連接程序,在連接窗口中輸入“xxx.xxx.xxx.xxx:7900”,這里使用了本例中創(chuàng)建的轉發(fā)端口,“xxx.xxx.xxx.xxx”為服務器地址。輸入TigerVNC連接密碼后,就可以進入遠控環(huán)境,對服務器進行遠程控制了。因為連接是在加密通道中進行的,黑客即使使用嗅探工具進行監(jiān)聽,也無法捕獲密碼等敏感信息。
圖3 創(chuàng)建端口轉發(fā)規(guī)則
上面談到了如何建立安全通道,保護VNC通訊服務。其實,在我們的實際工作中,經(jīng)常會在不同的主機之間傳輸文件,如果涉及機密文件,最擔心的就是被人監(jiān)視攔截了。而傳統(tǒng)的網(wǎng)絡服務程序(如FTP、電子郵件等)等在本質上都是不安全的,因為它們在網(wǎng)絡上用明文傳送口令和數(shù)據(jù),黑客非常容易就可以截獲這些口令和數(shù)據(jù)。最危險的是一旦黑客使用了“中間人”的攻擊方式,冒充真正的服務器接收用戶傳給服務器的數(shù)據(jù),然后再冒充用戶把數(shù)據(jù)傳給真正的服務器,并且對敏感數(shù)據(jù)進行了修改竊取操作,無疑會給用戶造成嚴重的損失。為了保障文件傳輸?shù)陌踩?,我們可以使用OpenSSH這個基于SSH協(xié)議的網(wǎng)絡連接免費工具軟件包,來抗擊黑客的各種監(jiān)聽手段,避免泄露您的秘密信息。OpenSSH具有跨平臺運行的特點,可以在Unix/Linux或者Windows環(huán)境中運作。我們這里為了簡單起見,來談談如何在Windows環(huán)境中使用OpenSSH來保護數(shù)據(jù)傳輸?shù)陌踩浴?/p>
當安裝完OpenSSH后,會自動彈出對話框,提示必須設置passwd文件才可以正常運作 OpenSSH,按確定按鈕完成配置。安裝完后打開Windwos 的CMD窗口,以命令行方式下進入OpenSSh的安裝目錄的“Bin”文件夾,其默認的路徑為“C:Program FilesOpenSSH”。 在 使 用OpenSSH Server之前,需要建立對應的賬戶和組。為了使用上的方便,需要將Windows中的用戶組信息導入進來,在CMD中 執(zhí) 行“mkgroup -l>> ..etcgroup”,注意,這里的用戶組分為本地用戶組和域用戶組,在該命令中使用“-l”和“-d”參數(shù),就能完成這兩類用戶組的導入動作。之后執(zhí)行Windows中賬戶用戶導入操作,例如允許本地賬戶“useradmin”登錄到OpenSSH Server環(huán)境中,可以執(zhí)行“mkpasswd -l-u adminuser >> ..etcpasswd”命令,就可以將賬戶useradmin及其密碼導入passwd文件中。這里需要強調的是,OpenSSH Server中的賬戶必須是系統(tǒng)中存在的賬戶,如果Passwd文件不存在或沒有導入用戶信息,系統(tǒng)中的對應賬戶將無法登錄到OpenSSH 服務器環(huán)境中,賬戶的導入也分本地和域兩種情況,對應的命令也需要添加“-l”和“-d”參數(shù)。完成了賬戶和組的導入操作后,接下來執(zhí)行“net start opensshd”命 令,來啟動OpenSSH服務,對應地,可以執(zhí)行“net stop opensshd”命令來關閉OpenSSH服務。OpenSSH Server端口默認是22,要更改端口的話,可以進入其安裝路徑下的“etc”文件夾,打開其中的“sshd_config”文件,在“Port”處進行更改。
圖4 WinSCP登錄界面
圖5 WinSCP文件管理界面
雖然在OpenSSH的安裝路徑下的“Bin”文件夾中 提 供 了“ssh.exe”、“sftp.exe”、“scp.exe”等實用工具,可以執(zhí)行各種連接操作。不過,使用圖形界面的連接工具,操作起來會更加輕松,這對初學者尤其明顯。這里,我們就利用WinSCP這款SFTP客戶端軟件,在本地與遠程主機間安全地復制文件。該工具支持基于SSH-1、SSH-2的SFTP和SCP協(xié)議,還支持批處理腳本和命令行方式。
WinSCP啟動后出現(xiàn)登錄對話框(如圖4所示),輸入運行OpenSSH Server服務的遠程主機名稱或IP地址、端口號、賬戶名和密碼等信息,點擊“Login“按鈕執(zhí)行連接操作。如果服務器的密鑰沒有放在緩存中,WinSCP會彈出警告窗口,提示用戶是否將密鑰放入緩存,點擊取消按鈕就中止連接。
連接成功進入WinSCP主界面,其外觀類似于Windows資源管理器,使用起來很方便(如圖5所示)。在界面左側顯示本地中的資源列表,在右側顯示服務器端的資源列表,您可以很方便地在兩者之間拖動文件,來實現(xiàn)文件的復制移動等操作。此外,WinSCP與Windows完美集成,可以在資源管理器和OpenSSH Server之間直接拖拽文件或文件夾,完成文件的下載和上傳操作。WinSCP支持常見的文件操作,例如在OpenSSH Server服務器端的文件管理界面中點擊右鍵,利用彈出菜單可以實現(xiàn)對服務器上文件的編輯復制、刪除、移動、改名以及新建文件夾等操作。WinSCP支持本地和OpenSSH Server之間的目錄同步操作,保證了遠程目錄和本地目錄的一致性。在WinSCP中選中遠程主機中的某個文件夾,點擊菜單“Com mand”→“Synchronize”項(或者點擊“Ctrl+S”鍵),在同步窗體中設置具體的參數(shù)。此外,利用工具欄上的按鈕還可實現(xiàn)目錄比較,保持遠程目錄在最新狀態(tài)、打開終端、同步瀏覽等實用操作。利用“Session”菜單,可以實現(xiàn)新建、打開、保存、斷開會話等操作。