在 CentOS 上加固 VNC(Virtual Network Computing)安全,核心目标是:防止暴力破解、避免明文传输、限制访问来源、最小化权限。下面给你一套生产环境可用的加固方案,从基础到进阶。
VNC 密码默认较弱,必须修改:
vncpasswd
建议:
VNC 应使用普通用户运行,避免直接 root 登录。
su - user
vncserver :1
并确保:
ps -ef | grep vnc
没有 root 直接启动 Xvnc。
VNC 默认端口:
5901 → :15902 → :2只允许指定 IP 访问:
firewall-cmd --permanent --add-rich-rule='
rule family="ipv4"
source address="192.168.1.100"
port protocol="tcp" port="5901" accept'
firewall-cmd --reload
或只开放内网:
firewall-cmd --permanent --add-source=192.168.0.0/24 --zone=trusted
firewall-cmd --reload
VNC 默认不加密,明文传输,非常危险。
✅ 正确做法:通过 SSH 隧道访问
ssh -L 5901:localhost:5901 user@centos_ip
VNC 客户端连接:
localhost:1
✅ 服务端无需开放 5901 端口
修改 VNC 启动参数,只允许本地:
vncserver -localhost
或编辑 ~/.vnc/config:
localhost
避免扫描器:
vncserver :9
端口变为 5909
只允许指定用户使用 VNC:
usermod -aG wheel user
并限制 SSH 登录用户:
vim /etc/ssh/sshd_config
AllowUsers user
防止长期占用:
vim ~/.vnc/config
session=gnome
geometry=1280x800
depth=24
localhost
TigerVNC 支持 TLS:
yum install tigervnc-server
配置 TLS(需证书):
⚠️ 配置复杂,一般 SSH 隧道更简单安全
yum install epel-release -y
yum install fail2ban -y
vim /etc/fail2ban/jail.local
[sshd]
enabled = true
maxretry = 3
bantime = 3600
systemctl enable fail2ban
systemctl start fail2ban
✅ 最安全方案:
VNC (localhost only)
↓
SSH Tunnel (加密)
↓
客户端
✅ 防火墙规则:
| 方案 | 安全等级 |
|---|---|
| VNC 裸奔 | ❌ 极危险 |
| VNC + 防火墙 | ⚠️ 一般 |
| VNC + SSH 隧道 | ✅ 推荐 |
| VNC + TLS | ✅ 专业 |
| VNC + SSH + fail2ban | ✅✅ 企业级 |
如果你愿意,我可以:
只要告诉我你的 CentOS 版本 + VNC 类型(TigerVNC / RealVNC / x11vnc) 即可。