原文地址:https://galeracluster.com/2022/01/time-to-check-galera-cluster-security/
原文作者:galeracluster.com
网上有很多文章告诉您在galera集群时禁用操作系统级防火墙,并禁用selinux。虽然我们同意这可能是搭建galera集群最快的方式,但它不一定有良好的安全性,我们更希望您在2022年使用更安全的galera集群!
什么是selinux?,允许管理员去控制谁可以对系统有更多的控制权。它有允许(permissive)模式和强制(enforcing)模式,并且在红帽企业版linux及其衍生品中默认开启。请记住重要的一点,如果您通过我们提供的安装包来安装galera集群,我们已经为它提供了所有必要的上下文。实际上,您不需要禁用selinux就可以启动集群。
然而,当您使用 rsync
来做时,您可以进行测试来看启用selinux是否有意义。
要测试它,在一个donor节点上输入:setenforce 1
(这应该是默认值)。 然后在一个joiner节点上,触发一个sst(假设您设置它使用rsync),通过如下命令来触发:
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)。 我们有大量使用和的文档。值得注意的是,galera集群在freebsd(和其他bsd衍生产品)上也运行得很好,所以也有关于的文档。
如何测试防火墙是否出现问题? 在joiner节点上,执行:
iptables -a input -p tcp --destination-port 4444 -j drop
现在,试着做一次sst,像上面那样删除数据目录。查看日志文件。修复方法很简单:
iptables -d input -p tcp --destination-port 4444 -j drop
因此,我们希望今年您可以运行一个更安全的galera集群环境。会自动为您配置,所以您也可以考虑使用它。我们在github上也有一个非常活跃的。一定要试一试。
译者注:
galera manager可以尝试,但是,切记不要直接在生产环境测试上述步骤。