我不太擅长使用 gluster,因为我昨天才开始使用它。
我有 2 台服务器。两台都运行 glusterfs-servers。
从服务器 1:我运行sudo glusterfs peer probe server2
它,它被添加到集群中。没有任何问题。我没有做任何事情来告诉服务器 2 允许服务器 1 将它添加到集群中。对我来说没有意义。
这让我很困惑。我的意思是,如果有人将我的 glusterfs 服务器添加到他们的集群中会怎么样。似乎根本没有安全性。这太疯狂了,我不明白。
答案1
TL,DR:将服务器添加到集群(称为池)是安全的,因为第三方无法自行加入现有集群,需要从内部邀请。但请确保限制哪些客户端可以安装卷并加密连接。
没有任何问题。我没有做任何事情来告诉 server2 允许 server1 将其添加到集群中。
我自己有这个问题所以我去看一下文档。
创建新集群时,您首先从一台服务器开始,然后使用 添加其他服务器gluster peer probe OTHER_SERVER
。由于您添加的是新的、未初始化的 glusterfs 服务器,因此并不严格要求额外的安全性。(除非如果您让新安装的、未初始化的 gluster 以公共访问方式运行 - 那么您将有麻烦)。
那么如何防止攻击者加入你现有的集群呢?关键是下面这段话:
一旦建立了此池,只有受信任的成员才可以将新服务器探测到池中。新服务器无法探测池,必须从池中进行探测。(来源)
正如文档所述,第三方/对手不能加入您的集群,需要从内部邀请。
请注意,客户端不需要在池中即可安装卷。
Gluster 还提供其他安全机制来限制数据访问并减轻相关攻击:
- 根据音量允许/拒绝 IP,
gluster volume set VOL_NAME auth.allow IP1,IP2
- TLS - 传输加密以及使用证书中的身份而不是 IP 地址进行授权(默认情况下未启用,超出了本答案的范围,请参阅关联)
因此,如果这些卷不打算公开:
- 在服务器和服务器客户端之间使用加密和经过验证的链接(Gluster TLS/IPSec/VPN)
- 防火墙设置不允许任何外部连接
- 并使用
auth.allow
(auth.ssl-allow
对于 TLS)对音量进行更精细的控制。
答案2
您的 Gluster 服务器应独立于您的基础设施部分,并由防火墙隔离。它们不应暴露在公共互联网上。
答案3
我同意这是疯狂的:安全性是 glusterfs 的附加功能。正如 @ceejayoz 指出的那样,glusterfs 的设计只适用于物理安全且隔离的网络。
幸运的是,glusterfs 添加了对 ssl 的支持,但遗憾的是,它几乎没有文档记录。使用 ssl 可能会让事情变得更好,但由于没有文档记录,因此很难确定。文档记录在这个博客遗憾的是,它仅给出了一系列步骤。
答案4
在我看来,有以下几种方法可以解决这个问题:
- firewalld 或 iptables
- SELinux
- SSL/TLS