PmaControl logo PmaControl
  • 首页
  • PmaControl
    • AI智能代理 13个本地代理
    • 定价方案 Community、Cloud、On-Premise、Premium
    • 文档 指南、API、架构
    • 客户 28+企业
    • 常见问题 25个问题 / 7个类别
    数据库
    • MariaDB 30 篇文章
    • MySQL 10 篇文章
    • Galera Cluster 6 篇文章
    • MaxScale 3 篇文章
    • ProxySQL 2 篇文章
    • Amazon Aurora MySQL 0 篇文章
    • Azure Database 0 篇文章
    • ClickHouse 0 篇文章
    • GCP CloudSQL 0 篇文章
    • Percona Server 0 篇文章
    • SingleStore 0 篇文章
    • TiDB 0 篇文章
    • Vitess 0 篇文章
    解决方案
    • 全天候支持 MariaDB & MySQL紧急支持
    • Observabilité SQL 监控、告警、拓扑
    • Haute disponibilité 复制、故障转移、Galera
    • Disaster Recovery 备份、恢复、RPO/RTO
    • Sécurité & conformité 审计、GDPR、SOC2
    • Migration & upgrade 零停机、pt-osc、gh-ost
  • 定价方案
  • 资源
    • 文档 技术指南与API
    • 常见问题 25个常见问题
    • 客户评价 客户反馈与案例
    • 博客 文章与洞察
    • 路线图 即将推出的功能
    专业领域
    • Observabilité SQL 监控、告警、Dot3拓扑
    • Haute disponibilité 复制、故障转移、Galera
    • Sécurité & conformité 审计、GDPR、SOC2、ISO 27001
    • Disaster Recovery 备份、恢复、RPO/RTO
    • Performance & optimisation Digests、EXPLAIN、调优
    • Migration & upgrade 零停机、pt-osc
    快速链接
    • GitHub Wiki 26页 — 安装、引擎、插件
    • 源代码 GitHub官方仓库
    • 全天候支持 MariaDB & MySQL紧急支持
    • 预约演示 30分钟 — 真实架构
  • 全天候支持
  • 预约演示
预约演示
🇫🇷 FR Français 🇬🇧 EN English 🇵🇱 PL Polski 🇷🇺 RU Русский 🇨🇳 ZH 中文
← 返回博客

防止数据窃取:Galera 篇

发布于 2025年3月12日 作者 Sylvain ARBAUDIE
galera mariadb security sst
分享 X LinkedIn Facebook Email PDF
防止数据窃取:Galera 篇

噩梦场景

想象一下:攻击者配置了一台 MariaDB 服务器,设置了正确的 wsrep 参数,知道 Galera 集群地址和 SST 密码。他们加入集群。Galera 检测到一个没有数据的新节点,并触发 State Snapshot Transfer(SST)——将集群的全部数据完整传输到攻击者的节点。

在几分钟内(或几小时,取决于数据库大小),攻击者就拥有了您数据库的完整副本。无需 SQL 注入,无需利用应用程序漏洞。只需使用正确的凭据进行集群 JOIN。

这不是科幻小说。根据 2024 年 Verizon 数据泄露调查报告,35% 的数据泄露涉及内部威胁——员工、承包商或拥有合法基础设施访问权限的人员。

SST 的工作原理

State Snapshot Transfer 是 Galera 初始化新节点的机制。当一个节点在没有数据的情况下加入集群(或数据太旧无法进行增量 IST)时,集群会触发 SST:

  1. 选择一个捐赠节点(现有的集群成员)
  2. 捐赠节点执行完整备份(通过 mariabackup、rsync 或 mysqldump)
  3. 备份通过网络发送到加入的节点
  4. 加入的节点恢复备份并加入集群

问题在于:默认情况下,任何拥有正确集群信息的节点都可以触发 SST。没有白名单,没有对加入节点的身份验证。

攻击所需的最小配置

攻击者需要的信息:

[mysqld]
wsrep_cluster_address = gcomm://10.0.1.10,10.0.1.11,10.0.1.12
wsrep_sst_method = mariabackup
wsrep_sst_auth = sst_user:sst_password

三条信息:集群地址、SST 方法和 SST 凭据。在许多组织中,这些信息存储在未加密的配置文件、明文的 Ansible playbook 或私有 Git 仓库中。

为什么 TLS 还不够

"但我们对 Galera 流量使用了 TLS!"——这是一个常见的反驳。但这是不够的。

TLS 加密了节点之间的流量,但不一定能验证加入节点的身份。即使使用了 TLS,如果攻击者拥有由相同 CA 签发的证书(在使用企业 PKI 的内部部署中通常如此),他们仍然可以加入集群。

此外,许多 Galera 部署不使用双向证书验证(mutual TLS)。它们启用 TLS 进行加密,但不进行身份验证。

解决方案:wsrep_allow_list

从 MariaDB 10.10 开始,wsrep_allow_list 变量提供了一个 IP 白名单机制,用于限制允许加入集群的节点:

[mysqld]
wsrep_allow_list = 10.0.1.10,10.0.1.11,10.0.1.12

只有 IP 地址在列表中的节点才能加入。即使拥有有效的 SST 凭据和 TLS 证书,IP 不在列表中的节点也会被拒绝。

这很简单、有效,是每个 Galera 集群都应该配置的第一道防线。

纵深防御

Galera 集群的安全不依赖于单一机制。以下是纵深防御方法:

1. wsrep_allow_list——网络过滤

限制允许加入集群的 IP。

2. 双向 TLS——节点认证

每个节点必须出示由集群 CA 签发的证书。

3. 隔离网络——网段划分

Galera 流量(端口 4567、4568、4444)应在专用网络上传输,与应用程序和管理网络隔离。

4. 防火墙——端口过滤

# iptables:仅允许集群 IP 访问 Galera 端口
iptables -A INPUT -p tcp -s 10.0.1.10 --dport 4567 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.1.11 --dport 4567 -j ACCEPT
iptables -A INPUT -p tcp -s 10.0.1.12 --dport 4567 -j ACCEPT
iptables -A INPUT -p tcp --dport 4567 -j DROP

5. 加密的 SST 凭据

永远不要以明文存储 SST 密码。使用密钥管理器(Vault、AWS Secrets Manager)或至少使用配置文件加密。

审计您的集群

立即检查您的 Galera 集群安全状况:

SHOW VARIABLES LIKE 'wsrep_allow_list';
SHOW VARIABLES LIKE 'wsrep_provider_options';
SELECT * FROM information_schema.WSREP_MEMBERSHIP;

如果 wsrep_allow_list 为空,您的集群存在漏洞。请立即配置。

结论

Galera SST 漏洞是一个被低估的攻击向量。未经授权的节点仅通过加入集群就可以获取您数据库的完整副本。修复方法很简单:wsrep_allow_list + 双向 TLS + 隔离网络 + 防火墙。

35% 的数据泄露是内部威胁。您的 Galera 集群是否受到保护?


本文最初发表于 Medium。

分享 X LinkedIn Facebook Email PDF
← 返回博客

评论 (0)

暂无评论。

发表评论

PmaControl
+33 6 63 28 27 47 contact@pmacontrol.com
法律声明 GitHub 联系我们
不要等到故障发生才了解您的架构。 © 2014-2026 PmaControl — 68Koncept