背景知識簡介
虛擬機的VNC是非常重要的功能,能夠不依賴于虛擬機操作系統的網絡進行遠程訪問與控制。當虛擬機操作系統出現故障或者網絡不通等情況時,往往需要通過VNC進行遠程連接修復。
noVNC是一個支持HTML5的VNC客戶端,主要作用就是與遠端的vnc server進行互通,從而實現對于遠端主機的控制。我們可以通過VNC客戶端或者支持HTML5的瀏覽器訪問遠端安裝了vnc server的服務器桌面從而進行控制。
而在使用vnc這種便捷的遠程訪問技術的過程中,敏感數據的安全保障一直是開發人員繞不開的一個話題。而使用密碼對用戶進行身份認證是保護數據安全的常用手段之一。同時,為了進一步提升安全性能,防止密碼被非授權用戶輕易獲取利用,我們通常會采取對明文密碼進行加密的方式,這樣既達到了數據安全性的要求,同時也可以避免明文密碼保存在服務器上,極大地提高了系統的安全性。讓用戶在使用時可以更加放心。
問題場景
在業務的開發測試過程中,很多同事使用noVNC后不會退出終端,總是用完了就直接關閉窗口。而使用nmap命令可以獲取節點的端口信息,這樣的話,如果非授權人員知道了宿主機的IP和端口,是完全可以登錄這臺虛擬機進行篡改、泄露信息等非法操作的。這對于存放有重要信息的虛擬機來說顯然是存在安全隱患的。
VNC密碼加解密流程分析
對VNC登錄密碼加解密流程參考如下:
1、用戶創建虛擬機時,需要配置vnc密碼;
2、用戶自定義密碼明文P;
3、使用公鑰對明文密碼P進行加密,輸出密文并存儲起來;
4、當用戶執行vnc登錄等操作,需要身份驗證時,系統獲取密文;
5、使用私鑰對密文進行解密操作,得到明文;
6、對用戶輸入的密碼與解密得到的明文進行比較,如果一樣,則用戶通過身份驗證,可以進入vnc操作虛擬機。