keepalived 安全优化需聚焦配置逻辑、权限控制、网络暴露与协同机制:关闭非必要邮件告警,改用 webhook;强制 vrrp 认证与单播通信;最小化配置文件权限及运行用户;清理冗余实例并强化健康检查。

Keepalived 配置文件本身不直接处理 HTTP 请求或用户数据,但其配置不当可能引发 VIP 漂移失控、权限泄露、未授权状态切换等安全风险。真正影响安全的是配置逻辑、运行权限、网络暴露面和与 Nginx 的协同机制。优化重点在于:限制管理面访问、防止配置被篡改、避免敏感信息硬编码、控制 VRRP 报文可信范围。
关闭非必要通知与邮件功能
Keepalived 默认配置中常包含 global_defs 区块,启用邮件告警需依赖本地 sendmail/postfix 服务——这不仅增加攻击面,还可能因配置错误导致 SMTP 凭据泄露或被用于中继 spam。
- 注释或删除整个
global_defs块(包括notification_email、smtp_server等) - 如确需告警,改用外部轻量级 webhook(如 curl 调用企业微信/钉钉机器人),不走本地邮件栈
- 确保
notify_master/notify_backup脚本具备最小权限,不使用 root 执行敏感操作
限定 VRRP 通信范围与认证强度
VRRP 协议默认明文广播,若部署在共享网络(如公有云、多租户 VLAN),攻击者可伪造 VRRP 报文抢占 VIP,造成服务中断或流量劫持。
使用ydata-profiling(前身为pandas-profiling)生成全面的数据质量报告,包含相关性分析、缺失值模式和基数检测。导出交互式HTML仪表板和JSON摘要。
- 强制启用 VRRP 认证:在
vrrp_instance块中添加
authentication {
auth_type PASS
auth_pass your_strong_password_32chars_min # 至少 32 位随机字符串,勿复用其他系统密码
}- 指定单播通信(更安全):用
unicast_src_ip和unicast_peer替代默认的组播(224.0.0.18),避免跨网段嗅探 - 防火墙仅放行 VRRP 协议(IP protocol 112)且仅限主备节点 IP 间通信
最小化配置文件权限与运行用户
/etc/keepalived/keepalived.conf 若可被普通用户读写,可能导致 VIP 被恶意修改;Keepalived 进程若以 root 运行却加载不可信脚本,易提权。
- 设置配置文件权限:
chmod 600 /etc/keepalived/keepalived.conf,属主为 root - 禁止配置中出现
script或notify调用绝对路径外的动态内容(如/tmp/check_nginx.sh) - Keepalived 默认以 root 启动,但健康检查脚本应降权执行:在脚本开头加
su -s /bin/bash -c "..." nobody或使用 systemd 的User=限制
禁用无用实例与冗余监控项
配置中残留已下线的 vrrp_instance 或无效的 track_script,可能被利用触发异常切换;过度宽松的健康检查(如只 check port 而不 check HTTP status)会降低故障识别精度。
- 删除所有已停用的
vrrp_instance和关联的track_script - 健康检查脚本必须验证业务可用性,例如:
#!/bin/bash # /etc/keepalived/check_nginx.sh curl -f http://127.0.0.1/healthz > /dev/null 2>&1 && exit 0 || exit 1
- HTTP 检查务必含
-f(失败时返回非零码)和超时参数(--max-time 3),避免 hang 住 keepalived 主进程










