linux高可用集群安全加固需实施五项措施:一、限制通信网络范围,配置防火墙与专用心跳网;二、启用corosync加密认证,使用aes密钥与sha256签名;三、最小化pacemaker权限,创建专用用户并降权运行;四、审计关键操作,启用详细日志并转发至中央服务器;五、隔离stonith设备访问,限制管理网段与授予必要capabilities。

在 Linux 高可用集群环境中,节点间通信、资源调度与状态同步均面临潜在安全威胁。若未实施有效防护,攻击者可能通过伪造心跳包、劫持 Corosync 通道或提权接管 Pacemaker 服务等方式破坏集群一致性。以下是针对该场景的多项安全加固措施:
一、限制集群通信网络范围
通过网络层隔离确保只有授权节点可参与集群通信,防止外部主机注入恶意消息或发起中间人攻击。
1、配置防火墙仅放行 Corosync 默认端口(如 5404/5405 UDP)及 Pacemaker 的 2224 TCP 端口。
2、使用 iptables 规则限定源 IP 为集群节点子网,例如:-A INPUT -s 192.168.10.0/24 -p udp --dport 5404 -j ACCEPT。
3、禁用非集群网卡上的多播监听,修改 /etc/corosync/corosync.conf 中 interface { bindnetaddr } 指向专用心跳网络地址。
二、启用 Corosync 加密认证
Corosync 支持基于 AES 密钥的消息签名与加密,可防止未授权节点加入集群或篡改环状通信数据。
1、生成 256 位共享密钥:执行 corosync-keygen -l 32 并将生成的 authkey 文件分发至所有节点的 /etc/corosync/ 目录。
2、在 corosync.conf 的 quorum 和 totem 段中添加:crypto_hash: sha256 与 crypto_cipher: aes256。
3、确认所有节点 authkey 权限为 400,且属主为 root:root。
三、最小化 Pacemaker 服务权限
Pacemaker 默认以 root 运行,但多数资源代理无需完全 root 权限;降权可限制漏洞利用后的横向移动能力。
1、创建专用系统用户 pacemaker-run,UID 设置为 192,GID 同样为 192。
2、修改 /usr/lib/systemd/system/pacemaker.service,在 [Service] 段添加:User=pacemaker-run 与 Group=pacemaker-run。
3、调整 /var/lib/pacemaker/、/var/log/pacemaker/ 目录所有权为 pacemaker-run:pacemaker-run,并设置 umask 007。
四、审计关键集群操作行为
记录所有通过 crm 命令、PCS 工具或 HTTP API 发起的资源配置变更与节点控制指令,便于事后溯源分析。
1、启用 Pacemaker 日志级别为 4,在 /var/log/cluster/corosync.log 与 /var/log/pacemaker.log 中保留详细操作上下文。
2、配置 rsyslog 将 pacemaker.* 日志转发至中央日志服务器,规则示例:if $programname == 'pacemaker-controld' then @@10.20.30.40:514。
3、对 /usr/sbin/crm、/usr/sbin/pcs 设置不可修改位:chattr +a /usr/sbin/crm,防止二进制被替换。
五、隔离 STONITH 设备访问路径
STONITH(Shoot The Other Node In The Head)机制依赖外部设备强制关闭故障节点,若其控制接口暴露,可能被用于恶意关机。
1、将 STONITH 插件配置为仅通过本地串口或专用管理网段通信,避免使用公网可访问的 IPMI 地址。
2、若使用 fence_virt,确保 libvirtd 服务绑定至 127.0.0.1,并关闭 TLS 以外的所有认证方式。
3、为 fence agent 二进制文件设置 capabilities,仅授予必要权限:setcap cap_net_admin+ep /usr/sbin/fence_xvm。










