数据库集群环境漏洞修复
1 说明
本月漏洞扫描,发现有一套pg系antdb集中式集群存在网络安全漏洞,需要及时对漏洞认领和整改,整改要求:
- 紧急漏洞需在2日内完成整改;
- 高风险漏洞需在15日内完成整改;
- 中风险漏洞需在3个月内完成整改。
完成整改后,需要及时提交复核申请,避免漏洞超时。
一般来说,生产环境数据库服务器的常见漏洞主要是:依赖软件的版本过低、特殊端口号未做限制,修复起来不算困难。
2 信息
漏洞如下:
漏洞uuid | 系统/资产名称 | 内网IP | 内网端口 | 漏洞名称 | 漏洞等级 |
---|---|---|---|---|---|
1 | AntDB | 192.168.131.11 | 12378 | adbhamgr API 未授权访问漏洞【原理扫描】 | 高危漏洞 |
2 | AntDB | 192.168.131.11 | 12379 | adbdcs API 未授权访问漏洞【原理扫描】 | 高危漏洞 |
3 | AntDB | 192.168.131.11 | 12380 | adbdcs API 未授权访问漏洞【原理扫描】 | 高危漏洞 |
4 | AntDB | 192.168.131.12 | 12378 | adbhamgr API 未授权访问漏洞【原理扫描】 | 高危漏洞 |
5 | AntDB | 192.168.131.12 | 12379 | adbdcs API 未授权访问漏洞【原理扫描】 | 高危漏洞 |
6 | AntDB | 192.168.131.12 | 12380 | adbdcs API 未授权访问漏洞【原理扫描】 | 高危漏洞 |
7 | AntDB | 192.168.131.13 | 12378 | adbhamgr API 未授权访问漏洞【原理扫描】 | 高危漏洞 |
8 | AntDB | 192.168.131.13 | 12379 | adbdcs API 未授权访问漏洞【原理扫描】 | 高危漏洞 |
9 | AntDB | 192.168.131.13 | 12380 | adbdcs API 未授权访问漏洞【原理扫描】 | 高危漏洞 |
本次漏洞扫描发现 AntDB 集中式集群(节点 192.168.131.11/12/13)存在 9 项高危漏洞,均为核心组件 adbhamgr(12378 端口)和 adbdcs(12379、12380 端口)的 API 未授权访问漏洞:
- ADBHAMGR 是 AntDB 集群的高可用管理组件,负责管理集群节点(如主节点、同步备节点和异步备节点)的角色和状态(如 Leader、Sync Standby 或 Replica 状态),持续监控数据库节点的健康状态,并在检测到主库故障时,自动、快速地执行故障转移操作,确保集群在主节点故障时能自动切换,维持服务连续性。
- ADBDCS 是 AntDB 集中式架构中的 “数据服务控制器”,主要负责数据库实例的生命周期管理、资源调度及客户端连接管控,是用户与数据库内核之间的中间层交互入口。是整个集中式 AntDB 集群的核心计算和存储引擎,承载着实际的 SQL 解析、优化、执行、事务管理、数据存储等功能。
这两个组件如此重要,既需要继续保持运行,也要封堵漏洞,确保数据库系统安全。处理方式就是调整防火墙策略限制集群内部主机访问12378、12379和w12380端口。
确认防火墙策略可以在线调整,不涉及数据库服务重启,不影响应用,业务无感知,即可选择一个割接窗口开展调整。
3 处理过程
用root用户在数据库集群所有节点配置以下防火墙策略。
3.1 检查防火墙状态
查看防火墙状态:
[root@adb-ccn1 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: inactive (dead) since Wed 2025-07-23 20:44:13 CST; 1h 11min agoDocs: man:firewalld(1)Process: 3465 ExecStart=/usr/sbin/firewalld --nofork --nopid $FIREWALLD_ARGS (code=exited, status=0/SUCCESS)Main PID: 3465 (code=exited, status=0/SUCCESS)
查看防火墙是否开启,一般来说生产环境数据库主机在数据库部署的时候就禁用主机自带的防火墙软件了,主要由网络安全的同事负责使用专业的防火墙设备进行策略配置。
开启防火墙:
[root@adb-ccn1 ~]# systemctl start firewalld
[root@adb-ccn1 ~]# systemctl status firewalld
● firewalld.service - firewalld - dynamic firewall daemonLoaded: loaded (/usr/lib/systemd/system/firewalld.service; enabled; vendor preset: enabled)Active: active (running) since Wed 2025-07-23 22:07:18 CST; 2s agoDocs: man:firewalld(1)Main PID: 21100 (firewalld)CGroup: /system.slice/firewalld.service└─21100 /usr/bin/python2 -Es /usr/sbin/firewalld --nofork --nopidJul 23 22:07:18 adb-ccn1 systemd[1]: Starting firewalld - dynamic firewall daemon...
Jul 23 22:07:18 adb-ccn1 systemd[1]: Started firewalld - dynamic firewall daemon.
Jul 23 22:07:18 adb-ccn1 firewalld[21100]: WARNING: AllowZoneDrifting is enabled. This is considered an insecure configuration option. It will be removed...ng it now.
Hint: Some lines were ellipsized, use -l to show in full.
3.2 关闭端口对外开放
移除TCP 端口 12378 、12379、12380的开放规则:
firewall-cmd --permanent --remove-port=12378/tcp
firewall-cmd --permanent --remove-port=12379/tcp
firewall-cmd --permanent --remove-port=12380/tcp
后续生效后,外部将无法访问这几个端口。
3.3 对数据库内部主机开放端口
将集群的所有结点ip分别开放这几个端口:
[root@adb-ccn1 ~]#
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.131.11" port protocol="tcp" port="12378" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.131.12" port protocol="tcp" port="12378" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.131.13" port protocol="tcp" port="12378" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.131.11" port protocol="tcp" port="12379" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.131.12" port protocol="tcp" port="12379" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.131.13" port protocol="tcp" port="12379" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.131.11" port protocol="tcp" port="12380" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.131.12" port protocol="tcp" port="12380" accept"
firewall-cmd --permanent --add-rich-rule="rule family="ipv4" source address="192.168.131.13" port protocol="tcp" port="12380" accept"
后续生效后,仅允许集群内结点 IP 通过 TCP 协议访问目标端口。
3.4 重新加载规则
把上面修改的规则立即加载到运行时配置中,使其真正生效:
[root@adb-ccn1 ~]# firewall-cmd --reload
success
3.5 确认规则生效
查看已配置的所有规则:
[root@adb-ccn1 ~]# firewall-cmd --zone=public --list-rich-rules
rule family="ipv4" source address="192.168.131.11" port port="12378" protocol="tcp" accept
rule family="ipv4" source address="192.168.131.12" port port="12378" protocol="tcp" accept
rule family="ipv4" source address="192.168.131.13" port port="12378" protocol="tcp" accept
rule family="ipv4" source address="192.168.131.11" port port="12379" protocol="tcp" accept
rule family="ipv4" source address="192.168.131.12" port port="12379" protocol="tcp" accept
rule family="ipv4" source address="192.168.131.13" port port="12379" protocol="tcp" accept
rule family="ipv4" source address="192.168.131.11" port port="12380" protocol="tcp" accept
rule family="ipv4" source address="192.168.131.12" port port="12380" protocol="tcp" accept
rule family="ipv4" source address="192.168.131.13" port port="12380" protocol="tcp" accept
3.6 删除规则【备用】
如果ip或端口号不小心输错,或者后续需要再调整防火墙策略,可以使用如下方式进行删除:
firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.131.11" port port="12378" protocol="tcp" accept'
firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.131.12" port port="12378" protocol="tcp" accept'
firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.131.13" port port="12378" protocol="tcp" accept'
firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.131.11" port port="12379" protocol="tcp" accept'
firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.131.12" port port="12379" protocol="tcp" accept'
firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.131.13" port port="12379" protocol="tcp" accept'
firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.131.11" port port="12380" protocol="tcp" accept'
firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.131.12" port port="12380" protocol="tcp" accept'
firewall-cmd --zone=public --remove-rich-rule='rule family="ipv4" source address="192.168.131.13" port port="12380" protocol="tcp" accept'
将当前运行时配置保存为永久配置:
firewall-cmd --runtime-to-permanent
查看规则是否生效:
firewall-cmd --zone=public --list-rich-rules
重载规则:
firewall-cmd --reload
再查看规则是否生效:
firewall-cmd --zone=public --list-rich-rules
4 检查集群状态
检查集群状态是否正常:
[root@adb-ccn1 ~]# su - antdb
Last login: Wed Jul 23 22:20:29 CST 2025 on pts/0[antdb@adb-ccn1 ~]$ adbhamgrctl -c /etc/adbhamgr/adbhamgr_antdbcluster.yaml list
+ Cluster: antdbcluster (7454263324141054958) +---------+----+-----------+
| Member | Host | Role | State | TL | Lag in MB |
+------------+----------------------+---------+---------+----+-----------+
| adbhamgr-1 | 192.168.131.11:15432 | Replica | running | 28 | 0 |
| adbhamgr-2 | 192.168.131.12:15432 | Leader | running | 30 | |
| adbhamgr-3 | 192.168.131.13:15432 | Replica | running | 28 | 0 |
+------------+----------------------+---------+---------+----+-----------+
集群状态正常,如果不正常则显示为:
5 总结
本次漏洞扫描发现 AntDB 集中式集群(节点 192.168.131.11/12/13)存在 9 项高危漏洞,均为核心组件 adbhamgr(12378 端口)和 adbdcs(12379、12380 端口)的 API 未授权访问漏洞。按要求需 15 日内整改。整改方案为调整防火墙策略,关闭端口对外开放,仅允许集群内部节点访问,操作无需重启数据库且不影响业务,修复操作执行后需及时提交复核。