[译] 是时候该检查 Galera 集群的安全了?

[译] 是时候该检查 Galera 集群的安全了?

严少安 Lv.6

原文地址:https://galeracluster.com/2022/01/time-to-check-galera-cluster-security/
原文作者:galeracluster.com

网上有很多文章告诉您在Galera集群时禁用操作系统级防火墙,并禁用SELinux。虽然我们同意这可能是搭建Galera集群最快的方式,但它不一定有良好的安全性,我们更希望您在2022年使用更安全的Galera集群!

什么是SELinux?安全增强的Linux(Security-Enhanced Linux) ,允许管理员去控制谁可以对系统有更多的控制权。它有允许(permissive)模式和强制(enforcing)模式,并且在红帽企业版Linux及其衍生品中默认开启。请记住重要的一点,如果您通过我们提供的安装包来安装Galera集群,我们已经为它提供了所有必要的上下文。实际上,您不需要禁用SELinux就可以启动集群。

然而,当您使用 rsync 来做物理状态快照(SST) 时,您可以进行测试来看启用SELinux是否有意义。

要测试它,在一个donor节点上输入:setenforce 1(这应该是默认值)。 然后在一个joiner节点上,触发一个SST(假设您设置它使用rsync),通过如下命令来触发:

1
2
3
service mysql stop
rm -rf /var/lib/mysql/*
service mysql start

查看mysqld.log(你应该总是启用错误日志; 从MySQL的角度来看,这是你第一次生成、记录登录密码的地方; 从Galera集群的角度来看,这是所有重要信息被写入的地方),您将会看到它无法完成SST。您可以通过在donor节点上执行setenforce 0来快速修复。现在,更好的方法是编写SELinux上下文,或者从使用rsync方法切换到使用XtraBackup或新的CLONE SST方法。

那关于 防火墙 呢?我们需要使用TCP的3306端口(它是MySQL的端口),TCP和UDP的4567端口(集群复制通信),TCP的4568端口用于增量状态传输(IST),以及TCP的4444用于状态快照传输(SST)。 我们有大量使用防火墙 iptables 的文档。值得注意的是,Galera集群在FreeBSD(和其他BSD衍生产品)上也运行得很好,所以也有关于 pf 的文档。

如何测试防火墙是否出现问题? 在joiner节点上,执行:

1
iptables -A INPUT -p tcp --destination-port 4444 -j DROP

现在,试着做一次SST,像上面那样删除数据目录。查看日志文件。修复方法很简单:

1
iptables -D INPUT -p tcp --destination-port 4444 -j DROP

因此,我们希望今年您可以运行一个更安全的Galera集群环境。Galera Manager 会自动为您配置,所以您也可以考虑使用它。我们在GitHub上也有一个非常活跃的 支持小组 。一定要试一试。


译者注:
Galera Manager 可以尝试,但是,切记不要直接在生产环境测试上述步骤。

  • Title: [译] 是时候该检查 Galera 集群的安全了?
  • Author: 严少安
  • Created at: 2022-03-09 09:03:07
  • Updated at: 2022-03-09 09:03:07
  • Link: https://shawnyan.cn/2022/mysql/fanyi-time-to-check-galera-cluster-security/
  • License: This work is licensed under CC BY-NC-SA 4.0.
 Comments
On this page