1. 升级VNC服务器至最新稳定版
优先使用TigerVNC(≥1.12)或RealVNC Enterprise(≥6.8),避免使用TightVNC等已停止维护的版本,以修复已知安全漏洞(如明文传输、弱认证等)。通过sudo yum install tigervnc-server -y
命令安装或更新。
2. 强制启用加密传输
ssh -L 5901:localhost:5901 user@vnc-server-ip
创建隧道,随后本地VNC Viewer连接127.0.0.1:5901
即可。此方法完全加密传输,防止中间人攻击。~/.vnc/xstartup
,添加-SecurityTypes TLSVnc,X509Vnc
参数,并提前用OpenSSL生成证书(如openssl req -x509 -newkey rsa:2048 -keyout key.pem -out cert.pem -days 365
)。适用于企业级高安全需求。3. 设置强密码与访问控制
vncpasswd
命令设置VNC密码,要求至少8位,包含大小写字母、数字和特殊字符(如Vnc@2025Secure
),避免使用默认密码(如password
、123456
)。5901
对应显示编号1)。例如,firewalld命令:sudo firewall-cmd --permanent --zone=public --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="5901" accept'
,随后sudo firewall-cmd --reload
;或通过/etc/hosts.allow
添加vncserver: 192.168.1.100
,/etc/hosts.deny
添加vncserver: ALL
。4. 配置防火墙与SELinux
sudo systemctl enable --now firewalld
),开放VNC端口(如5901
)并重载配置:sudo firewall-cmd --permanent --add-port=5901/tcp && sudo firewall-cmd --reload
。定期通过sudo firewall-cmd --list-all
验证规则。sudo chcon -Rt svirt_sandbox_file_t ~/.vnc
;若遇权限问题,通过sudo ausearch -c 'vncserver' --raw | audit2allow -M my-vnc-server
生成策略并导入:sudo semodule -i my-vnc-server.pp
。5. 禁用不必要的功能与服务
/etc/systemd/system/vncserver@:1.service
),在ExecStart
行添加-nolisten tcp -localhost
,防止VNC通过TCP直接接受连接,仅允许本地访问。例如:ExecStart=/usr/bin/vncserver %i -nolisten tcp -localhost
。~/.vnc/config
)中添加alwaysshared=no
、nevershared=yes
、dontdisconnect=yes
,避免敏感信息通过剪贴板或文件传输泄露。6. 启用日志审计与定期维护
~/.vnc/hostname:display.log
(如~/.vnc/server1:1.log
),通过tail -f ~/.vnc/server1:1.log
实时查看连接记录。建议将日志集中发送至SIEM系统(如ELK、Splunk)进行长期分析。sudo yum update tigervnc-server -y
更新VNC软件;每月检查日志中的异常连接(如频繁失败的登录尝试),及时封禁可疑IP。7. 使用专用用户与权限控制
vncuser
)并设置强密码:sudo useradd vncuser && sudo passwd vncuser
。sudo
组(sudo usermod -aG sudo vncuser
),但禁止直接以root身份登录VNC。通过/etc/sudoers
文件限制用户的sudo权限(如仅允许特定命令)。