ubuntu tigervnc如何限制访问
小樊
41
2025-12-22 19:41:34
Ubuntu 下 TigerVNC 访问限制实践
一 基础防护
- 使用强口令并启用查看密码:执行 vncpasswd 为主会话设置访问密码,并可设置仅查看密码(只读),防止未授权控制。
- 禁止直接对公网开放:默认只监听 127.0.0.1,通过命令行参数 -localhost no 放开监听;更推荐保持仅本地监听,配合 SSH 隧道访问,避免明文暴露 VNC 端口。
- 端口与显示号对应关系:显示号 :1 对应端口 5901,:2 对应 5902,以此类推;仅开放所需端口。
- 防火墙收紧:如使用 ufw,仅允许受控来源访问对应端口(例如 5901/tcp)。
- 最小权限运行:以普通用户启动 VNC,避免 root 直连桌面会话。
二 按来源 IP 精确放行
-
方案 A(推荐)— 仅本地监听 + SSH 隧道
- 服务端启动仅本地:vncserver :1 -localhost yes
- 客户端建立隧道:ssh -L 5901:127.0.0.1:5901 user@server
- 客户端连接:vncviewer localhost:1
该方式天然实现来源限制(只有能 SSH 到服务器的主机可连),无需开放服务器公网 590x 端口。
-
方案 B — UFW 白名单
- 放行管理端网段(示例为 192.168.1.0/24)到端口 5901:
sudo ufw allow from 192.168.1.0/24 to any port 5901/tcp
- 可选:默认拒绝其他来源对 5901 的访问:
sudo ufw deny 5901/tcp
- 如需开放多个显示号,分别放行对应端口(5902、5903…)。
三 服务与系统层加固
- 以 systemd 管理并按用户隔离:创建 /etc/systemd/system/vncserver@:1.service,将 User=你的用户名,必要时设置 Group=vncusers,避免多用户混用同一会话。
- 仅按需开放端口:在防火墙中仅放行 5901/5902 等实际使用的端口,避免批量放行整个网段或 0.0.0.0/0。
- 禁止 root 直连 VNC:创建普通用户用于 VNC,需要提权时使用 sudo。
- 监控与防护:结合日志审计与 fail2ban 对暴力尝试进行封禁,定期轮换 VNC 口令。
四 快速配置示例
- 场景:仅允许 192.168.1.0/24 访问 :1(5901/tcp),其他来源拒绝;使用 UFW 实现白名单。
- 设置口令:vncpasswd(主口令,必要时再设只读口令)
- 启动会话:vncserver :1 -localhost no
- 配置防火墙:
sudo ufw allow from 192.168.1.0/24 to any port 5901/tcp
sudo ufw deny 5901/tcp
- 客户端连接:vncviewer server_ip:1
- 如需开机自启,按用户创建并启用 systemd 服务单元(User/Group 正确设置)。