1. 升級TigerVNC至最新版本
確保系統安裝最新版TigerVNC(≥1.12),舊版本可能存在未修復的安全漏洞。使用以下命令更新:
sudo apt update && sudo apt install tigervnc-standalone-server tigervnc-common -y
2. 設置強密碼并管理訪問權限
使用vncpasswd
命令創建復雜VNC密碼(避免弱密碼如123456
、password
),并定期更換(建議每3個月更換一次)。為減少攻擊面,避免使用root用戶直接登錄,新建普通用戶并加入sudo
組:
sudo adduser your_username # 新建用戶
sudo usermod -aG sudo your_username # 加入sudo組
再為用戶設置VNC密碼:
su - your_username
vncpasswd
3. 配置SSH隧道加密傳輸
通過SSH隧道將VNC流量加密,避免直接暴露VNC端口(默認5901)到公網。在本地計算機執行以下命令創建隧道:
ssh -L 5901:localhost:5901 your_username@your_server_ip
然后在VNC客戶端連接localhost:5901
,無需修改VNC服務器配置即可實現端到端加密。
4. 配置防火墻限制訪問
使用ufw
(Ubuntu默認防火墻)僅允許信任IP訪問VNC端口(如5901)。若未安裝ufw
,先執行sudo apt install ufw
,然后運行:
sudo ufw allow from trusted_ip to any port 5901/tcp # 替換trusted_ip為信任的IP地址
sudo ufw enable # 啟用防火墻
sudo ufw reload # 重新加載規則
5. 啟用TLS/SSL加密(可選但推薦)
為進一步提升傳輸安全性,可配置TigerVNC使用TLS加密。首先生成自簽名證書(需OpenSSL):
mkdir -p ~/.vnc/x509
cp /etc/ssl/openssl.cnf ~/.vnc/x509/
echo "[subject_alt_name]" >> ~/.vnc/x509/openssl.cnf
echo "subjectAltName=IP:your_server_ip" >> ~/.vnc/x509/openssl.cnf # 替換為服務器IP
openssl req -x509 -newkey rsa:2048 -days 365 -nodes -config ~/.vnc/x509/openssl.cnf -keyout ~/.vnc/x509/vnc-server.key -out ~/.vnc/x509/vnc-server.crt
編輯VNC配置文件(~/.vnc/config
),添加以下內容啟用TLS:
SecurityTypes TLSVnc,X509Vnc
X509KeyFile ~/.vnc/x509/vnc-server.key
X509CertFile ~/.vnc/x509/vnc-server.crt
重啟VNC服務使配置生效:
vncserver -kill :1 # 殺死現有會話
vncserver :1 # 重啟服務
6. 禁用圖形加速(可選)
若使用環境對顯卡支持要求低,可禁用圖形加速以減少潛在漏洞。編輯~/.vnc/xstartup
文件,在啟動桌面環境前添加:
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
保存后賦予執行權限:
chmod +x ~/.vnc/xstartup
7. 限制用戶訪問權限
通過系統用戶組控制VNC訪問,僅允許授權用戶使用。創建vncusers
組并將授權用戶加入:
sudo groupadd vncusers
sudo usermod -aG vncusers your_username # 替換為授權用戶
修改VNC服務配置文件(/etc/systemd/system/vncserver@:1.service
),將運行用戶改為普通用戶及vncusers
組:
User your_username
Group vncusers
重啟服務應用更改:
sudo systemctl daemon-reload
sudo systemctl restart vncserver@:1.service
8. 監控與日志審計
定期檢查VNC日志(通常位于/var/log/syslog
或journalctl -u vncserver@:1.service
),監控異常連接(如頻繁失敗的登錄嘗試)??墒褂?code>fail2ban工具自動封禁惡意IP:
sudo apt install fail2ban
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
編輯jail.local
,啟用VNC jail:
[vnc]
enabled = true
port = 5901
filter = vnc
logpath = /var/log/syslog
maxretry = 3
bantime = 3600
重啟fail2ban
服務:
sudo systemctl restart fail2ban