1. 設置強密碼認證
使用vncpasswd
命令為VNC服務器設置復雜密碼(包含大小寫字母、數字和特殊字符),避免使用默認密碼或簡單易猜的密碼。密碼長度建議不少于8位,定期更換密碼以提升安全性。
2. 使用SSH隧道加密傳輸
通過SSH隧道將VNC流量加密,防止中間人攻擊。在本地機器執行以下命令(替換username
為服務器用戶名、your_server_ip
為服務器IP):
ssh -L 5901:localhost:5901 username@your_server_ip
之后通過VNC客戶端連接localhost:5901
,所有數據將通過SSH加密通道傳輸。
3. 配置防火墻限制訪問
使用ufw
(Uncomplicated Firewall)限制VNC端口(默認5901
,對應顯示號:1
)的訪問,僅允許特定IP地址或網絡段連接。例如:
sudo ufw allow from your_trusted_ip to any port 5901/tcp
sudo ufw enable
sudo ufw reload
若使用iptables
,可添加規則:sudo iptables -A INPUT -p tcp --dport 5901 -s your_trusted_ip -j ACCEPT
,并保存規則。
4. 以非root用戶運行VNC
創建專用系統用戶(避免使用root),并使用該用戶啟動VNC服務器。例如:
sudo useradd -m -s /bin/bash vncuser
sudo usermod -aG sudo vncuser
su - vncuser
vncserver :1
這樣可降低root賬戶被攻擊的風險。
5. 配置VNC服務為系統服務
創建Systemd單元文件(如/etc/systemd/system/vncserver@:1.service
),設置開機自啟動并指定用戶權限。示例內容:
[Unit]
Description=Remote desktop service (VNC)
After=syslog.target network.target
[Service]
Type=simple
User=vncuser
Group=vncuser
PIDFile=/home/vncuser/.vnc/%H:1.pid
ExecStartPre=/usr/bin/vncserver -kill :1 2>/dev/null
ExecStart=/usr/bin/vncserver :1 -depth 24 -geometry 1920x1080
ExecStop=/usr/bin/vncserver -kill :1
[Install]
WantedBy=multi-user.target
然后執行:sudo systemctl daemon-reload
、sudo systemctl enable vncserver@:1.service
、sudo systemctl start vncserver@:1.service
。
6. 使用SSL/TLS加密連接(可選但推薦)
對于更高安全性,可使用Tigervnc配置SSL/TLS加密。步驟如下:
sudo apt install tigervnc-standalone-server tigervnc-common
mkdir -p ~/.vnc/ssl
cd ~/.vnc/ssl
openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 365 -nodes
~/.vnc/xstartup
,添加SSL參數:#!/bin/sh
unset SESSION_MANAGER
unset DBUS_SESSION_BUS_ADDRESS
exec /usr/bin/gnome-session & # 或其他桌面環境
SSL/TLS configuration
export VNC_SERVER_ARGS="-geometry 1920x1080 -depth 24 -localhost no -rfbauth ~/.vnc/passwd -rfbport 5901 -ssl -cert cert.pem -key key.pem"
vncserver -kill :1
,再執行vncserver :1
。7. 定期更新系統和軟件
保持Debian系統、VNC服務器及相關軟件包為最新版本,及時修補安全漏洞。執行:
sudo apt update && sudo apt upgrade -y
定期檢查安全更新,尤其是VNC服務器軟件。
8. 禁用不必要的VNC實例
僅啟動需要的VNC顯示號(如:1
對應端口5901),停止不使用的實例以減少攻擊面。例如:
vncserver -kill :2
(停止顯示號:2
的實例)。
9. 監控與日志記錄
啟用VNC服務器的日志功能,記錄連接嘗試和操作日志(可通過~/.vnc/*.log
文件查看),便于后續審計和排查異常。