适用场景
- 产品:
ZCF - 组件:
Cloud - 版本:
4.8.x、4.6.x - 操作系统:
H84r - 部署形态:双管理节点
- 触发条件:每台服务器承载超过
100台虚拟机后,VNC 端口从5900起持续递增,暴露范围已超过6000,需要做区间封堵和白名单加固。
问题现象
- VNC 端口从
5900开始按虚拟机数量递增。 - 当前需要限制的区间为:
5900 ~ 6050
- 需要保留客户侧访问地址
172.16.x,并同时放通集群内所有相关节点。
判断方法
- 封禁前先确认需要保留访问能力的 IP 列表完整。
- 封禁后检查
iptables -nvxL -t mangle。 - 检查
ipset list确认白名单已正确下发。
原因说明
问题并不是单个端口暴露,而是随着虚拟机数量增加,VNC 端口线性向上扩展,导致 5900~6050 范围内都存在潜在暴露风险。因此需要用统一脚本批量封堵该范围,同时保留客户端和集群内节点的合法访问能力。
解决方案
- 执行前准备
- 风险等级:低
- 先关闭云主机高可用全局开关。
- 先备份双管理数据库。
- 先确认:
- 所有计算节点
- 所有管理节点
- 相关 VPC 地址
- 客户 VNC 客户端 IP
172.16.x
都已纳入白名单规划。
- 备份数据库
- 在 VIP 节点执行:
zstack-ctl dump_mysql --file-name zstack-db-backup-master
- 在另一台管理节点执行:
zstack-ctl dump_mysql --file-name zstack-db-backup-slave
- 预期结果:具备数据库回退基础。
- 使用 safe_script 配置 VNC 端口限制
- 上传工具包到 VIP 管理节点:
safe_script_v4.6.tar.gz
- 预期结果:加固脚本已就位。
- 解压并进入目录:
tar -zxvf safe_script_v4.6.tar.gz
cd safe_script/
- 预期结果:进入脚本目录。
- 执行脚本:
bash safe.sh
- 按提示输入管理节点 UI 密码。
- 预期结果:进入交互式加固流程。
- 配置端口限制时,务必把以下地址加入白名单:
- 所有计算节点
- 所有管理节点
- 所有 VPC 地址
- 客户侧 VNC 访问地址:
172.16.200.12
- 预期结果:白名单范围完整,不会误伤合法访问。
- 在脚本中下发对
5900~6050端口的限制规则。
- 预期结果:VNC 风险端口区间被统一限制。
- 验证与保存
- 检查规则:
iptables -nvxL -t mangle
- 预期结果:相关端口已在
mangle表中受限。
- 检查白名单集合:
ipset list <ZS-ALLOW-IP-*>
- 示例:
ZS-ALLOW-IP-121791019234355435
- 预期结果:放通 IP 与规划一致。
- 保存配置:
ipset save > /etc/sysconfig/ipset
service iptables save
- 预期结果:规则持久化完成。
- 最后开启云主机高可用全局开关。
- 预期结果:平台恢复正常运行策略。
验证方法
- 检查
5900~6050端口已被限制。 - 检查
172.16.x和集群内白名单节点仍可访问所需 VNC 服务。 - 检查高可用已恢复开启。
风险与回滚
- 风险:如果未把所有计算节点、管理节点、VPC 地址和客户端地址加入白名单,可能导致防火墙误拦截并引发服务异常。
- 风险等级:低。
- 回滚:可登录管理节点执行
safe脚本还原规则。
