数据库集群必须实施TLS双向认证加密通信、专用网络隔离、主机防火墙白名单、证书轮换及流量审计。具体包括:启用mTLS并为节点签发独立证书;划分独占VPC/VLAN,禁用ICMP重定向;iptables按IP白名单限制端口访问;绑定集群子网IP而非0.0.0.0;开启SSL日志与eBPF明文检测。

数据库集群内部通信必须加密,同时通过网络隔离降低横向攻击风险。不加密的内网通信一旦被入侵,攻击者可直接窃取数据或伪造节点身份;缺乏隔离则单点失陷可能蔓延至整个集群。
使用TLS双向认证加密节点间通信
仅靠单向TLS(如客户端验证服务端证书)不足以防止恶意节点接入集群。必须启用双向mTLS,要求每个数据库节点既提供有效证书,也验证对端证书合法性。
- 为每个节点签发独立证书,私钥严格权限控制(如chmod 600),禁止共享CA或通配符证书
- 配置数据库服务(如MySQL Group Replication、PostgreSQL streaming replication、MongoDB replica set)启用requireSSL或sslmode=verify-full等强校验模式
- 定期轮换证书,结合自动化工具(如HashiCorp Vault + cert-manager)避免人工疏漏
划分专用VPC/子网并禁用跨集群路由
数据库集群应独占一个三层隔离网络平面,与应用层、管理网、其他中间件物理或逻辑分离。
- 在云环境使用专属VPC,本地IDC则划分独立VLAN,确保ARP表和路由表不包含非集群IP
- 关闭交换机/路由器上该子网的ICMP重定向、源路由选项,防止绕过防火墙策略
- 所有节点默认拒绝入站(DROP),仅放行集群必需端口(如PostgreSQL 5432、etcd 2379/2380、MySQL 3306+group_replication_recovery端口)
部署主机级防火墙与连接限制
网络层隔离是基础,主机层防护是兜底。即使网络策略失效,仍需阻止非法进程建立连接。
- 在每台数据库服务器启用iptables/nftables,按源IP白名单限制replication连接(例如只允许集群内3个固定IP访问2380端口)
- 设置max_connections和superuser_reserved_connections防资源耗尽攻击
- 禁用数据库监听0.0.0.0,绑定到集群子网具体IP(如10.10.20.5:5432),避免误监听公网或管理网卡
审计通信行为并监控异常流量
加密与隔离不是一劳永逸,需持续验证有效性。
- 开启数据库日志中的SSL握手记录(如MySQL log_error_verbosity=3)、PostgreSQL log_ssl = on)
- 用eBPF工具(如bpftrace)实时捕获非TLS端口上的数据库协议流量,发现明文通信立即告警
- 在核心交换机镜像集群子网流量,用Suricata规则检测异常TLS指纹、非预期SNI或大量重协商请求










