文档目录

适用场景

  • 产品:ZCF
  • 组件:Cloud
  • 版本:4.8.x、4.6.x
  • 操作系统:H84r
  • 部署形态:双管理节点
  • 触发条件:每台服务器承载超过 100 台虚拟机后,VNC 端口从 5900 起持续递增,暴露范围已超过 6000,需要做区间封堵和白名单加固。

问题现象

  • VNC 端口从 5900 开始按虚拟机数量递增。
  • 当前需要限制的区间为:
  5900 ~ 6050
  • 需要保留客户侧访问地址 172.16.x,并同时放通集群内所有相关节点。

判断方法

  1. 封禁前先确认需要保留访问能力的 IP 列表完整。
  2. 封禁后检查 iptables -nvxL -t mangle。
  3. 检查 ipset list 确认白名单已正确下发。

原因说明

问题并不是单个端口暴露,而是随着虚拟机数量增加,VNC 端口线性向上扩展,导致 5900~6050 范围内都存在潜在暴露风险。因此需要用统一脚本批量封堵该范围,同时保留客户端和集群内节点的合法访问能力。

解决方案

  1. 执行前准备
  • 风险等级:低
  • 先关闭云主机高可用全局开关。
  • 先备份双管理数据库。
  • 先确认:
  • 所有计算节点
  • 所有管理节点
  • 相关 VPC 地址
  • 客户 VNC 客户端 IP 172.16.x

都已纳入白名单规划。

  1. 备份数据库
  2. 在 VIP 节点执行:
   zstack-ctl dump_mysql --file-name zstack-db-backup-master
  1. 在另一台管理节点执行:
   zstack-ctl dump_mysql --file-name zstack-db-backup-slave
  • 预期结果:具备数据库回退基础。
  1. 使用 safe_script 配置 VNC 端口限制
  2. 上传工具包到 VIP 管理节点:
   safe_script_v4.6.tar.gz
  • 预期结果:加固脚本已就位。
  1. 解压并进入目录:
   tar -zxvf safe_script_v4.6.tar.gz
   cd safe_script/
  • 预期结果:进入脚本目录。
  1. 执行脚本:
   bash safe.sh
  • 按提示输入管理节点 UI 密码。
  • 预期结果:进入交互式加固流程。
  1. 配置端口限制时,务必把以下地址加入白名单:
  • 所有计算节点
  • 所有管理节点
  • 所有 VPC 地址
  • 客户侧 VNC 访问地址:
     172.16.200.12
  • 预期结果:白名单范围完整,不会误伤合法访问。
  1. 在脚本中下发对 5900~6050 端口的限制规则。
  • 预期结果:VNC 风险端口区间被统一限制。
  1. 验证与保存
  2. 检查规则:
   iptables -nvxL -t mangle
  • 预期结果:相关端口已在 mangle 表中受限。
  1. 检查白名单集合:
   ipset list <ZS-ALLOW-IP-*>
  • 示例:
     ZS-ALLOW-IP-121791019234355435
  • 预期结果:放通 IP 与规划一致。
  1. 保存配置:
   ipset save > /etc/sysconfig/ipset
   service iptables save
  • 预期结果:规则持久化完成。
  1. 最后开启云主机高可用全局开关。
  • 预期结果:平台恢复正常运行策略。

验证方法

  • 检查 5900~6050 端口已被限制。
  • 检查 172.16.x 和集群内白名单节点仍可访问所需 VNC 服务。
  • 检查高可用已恢复开启。

风险与回滚

  • 风险:如果未把所有计算节点、管理节点、VPC 地址和客户端地址加入白名单,可能导致防火墙误拦截并引发服务异常。
  • 风险等级:低。
  • 回滚:可登录管理节点执行 safe 脚本还原规则。
5900~6050VNC端口禁用 | 技术方案 · KB | ZStack 资源中心