CentOS VNC安全设置操作指南
首先更新系统并安装TigerVNC(常用且安全的VNC服务器):
sudo yum update -y
sudo yum install tigervnc-server -y
避免使用root用户运行VNC,创建专用用户并设置强密码:
sudo useradd vncuser # 创建用户(如已存在可跳过)
sudo passwd vncuser # 设置用户密码
复制默认服务模板并修改为专用用户配置:
sudo cp /usr/lib/systemd/system/vncserver@.service /etc/systemd/system/vncserver@:1.service # 复制模板(:1对应显示号5901)
sudo vim /etc/systemd/system/vncserver@:1.service # 编辑配置文件
修改以下内容(替换vncuser为实际用户名):
[Service]
User=vncuser
Group=vncuser
WorkingDirectory=/home/vncuser
PIDFile=/home/vncuser/.vnc/%H:1.pid
ExecStartPre=-/usr/bin/vncserver -kill :1 > /dev/null 2>&1
ExecStart=/usr/bin/vncserver -depth 24 -geometry 1280x800 :1
ExecStop=/usr/bin/vncserver -kill :1
保存后重载systemd并启动服务:
sudo systemctl daemon-reload
sudo systemctl start vncserver@:1.service
sudo systemctl enable vncserver@:1.service # 开机自启
为专用用户设置VNC访问密码(加密存储):
su - vncuser # 切换至专用用户
vncpasswd # 按提示输入并确认密码(建议使用12位以上复杂密码)
exit # 退出用户
VNC默认端口为5900+显示号(如:1对应5901),允许该端口通过防火墙:
sudo firewall-cmd --permanent --add-port=5901/tcp # 开放端口
sudo firewall-cmd --reload # 重载防火墙
通过SSH反向隧道加密VNC流量,避免明文传输:
ssh -L 5901:localhost:5901 vncuser@your_server_ip # 本地端口5901映射至服务器localhost:5901
客户端连接时,使用localhost:1(而非服务器IP)即可通过SSH隧道安全访问。
hosts.allow限制IP编辑VNC用户的.vnc/hosts.allow文件(如/home/vncuser/.vnc/hosts.allow),仅允许指定IP访问:
echo "vncserver: 192.168.1.100, 192.168.1.101" | sudo tee -a /home/vncuser/.vnc/hosts.allow
进一步限制防火墙仅允许特定IP访问VNC端口:
sudo firewall-cmd --permanent --remove-port=5901/tcp # 先移除之前的开放规则
sudo firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.100" port protocol="tcp" port="5901" accept'
sudo firewall-cmd --reload
编辑VNC用户的~/.vnc/xstartup文件,添加TLS加密参数:
vim /home/vncuser/.vnc/xstartup
在文件开头添加:
export VNC_SECURITY_TYPES="VeNCrypt,TLS"
重启VNC服务使配置生效:
sudo systemctl restart vncserver@:1.service
客户端连接时需指定加密类型:
vncviewer -SecurityTypes=VeNCrypt,TLS localhost:1
/var/log/messages或journalctl -u vncserver@:1.service中的VNC日志,排查异常访问。xstartup文件中注释掉不必要的组件(如图形界面插件),减少攻击面。