8.4 加密 VNC 通訊

如果 VNC 伺服器設定正確,則 VNC 伺服器與用戶端之間的所有通訊都會被加密。這包括開始時的驗證及後來的所有資料傳輸。

無論您要啟動哪類 VNC 工作階段 (一次性或永久性),都可透過 server_args 行中 /usr/bin/Xvnc 指令的 -securitytypes 參數設定安全性選項。-securitytypes 參數會選取驗證方法和加密。它的選項如下︰

驗證
None、TLSNone、X509None

沒有驗證。

VncAuth、TLSVnc、X509Vnc

驗證使用自訂密碼。

Plain、TLSPlain、X509Plain

驗證使用 PAM 來驗證使用者的密碼。

加密
None、VncAuth、Plain

不加密。

TLSNone、TLSVnc、TLSPlain

匿名 TLS 加密。所有內容都會加密,但不驗證遠端主機。因此,您可以防護被動攻擊者,但不能防禦中間人攻擊者。

X509None、X509Vnc、X509Plain

使用證書進行 TLS 加密。如果使用自行簽署的證書,則在第一次連接時,系統將要求您驗證證書。在以後的連接中,僅當證書有變更時,系統才會向您發出警告。因此,在第一次連接時,您可以防禦中間人攻擊之外的所有其他攻擊 (類似於使用一般的 SSH)。如果使用由證書管理中心簽署且與機器名稱相符的證書,將可獲得完整的安全性 (類似於使用一般的 HTTPS)。

提示: 證書和金鑰的路徑

對於基於 X509 的加密,需要透過 -X509Cert-X509Key 選項指定 X509 證書和金鑰的路徑。

如果您選取多種安全性類型 (以逗號分隔),將會使用用戶端與伺服器都支援且允許的第一種安全性。如此,您便可在伺服器上設定隨機加密。如果您需要支援不支援加密的 VNC 用戶端,此功能將相當實用。

在用戶端上,您也可以指定允許的安全性類型,以防在您連接到已知啟用了加密的伺服器時遭到降級攻擊 (雖然在該情況下,我們的 vncviewer 會發出「連接未加密!」訊息來警告您)。