Keepalived 高可用组件测评

Keepalived(VRRP 高可用)三级等保现场测评取证命令单:按控制点组织 keepalived -v/-t、ip addr 查 VIP、journalctl 查切换事件等只读命令,核查 vrrp_version 默认 2(IPv6 用 3)、auth_type PASS 与 auth_pass 仅取前 8 位明文落盘的口令风险、script_user 与 enable_script_security 脚本提权防护、unicast_peer 收敛通告范围、伪造 VRRP 通告抢占 VIP(priority 255)风险与网络侧补偿、配置文件权限与备份、主备切换演练,附判定要点、示例输出与版本差异核验说明。

定位:Keepalived(VRRP 虚拟路由冗余协议高可用组件)三级等保现场测评取证命令单,按 GB/T 22239-2019 安全计算环境控制点分节组织核查命令、判定要点与取证要求。 适用范围:Keepalived 2.x 系列(Debian/EL 发行版打包版本),常见于 VIP 漂移承载 HAProxy/Nginx/数据库主从切换场景;LVS/IPVS 与 BFD 功能按现场实际启用情况核查。 配套文章:HAProxy 负载均衡器测评(常见搭配)、22、高风险判定指引与加固对照表、17、网络设备、安全设备、服务器、数据库和应用系统的加固方案。

使用说明:

  • 本文所有命令均为只读取证命令,不修改配置、不重启服务、不执行清除类操作;keepalived -t 为配置校验(只读,不加载),确需变更由被测单位运维方在授权下实施。
  • 每个控制点小节按「对应控制点 → 判定要点 → 取证要求 → 核查命令 → 备注 → 预期证据」编排;命令回显本身即证据,须连同命令行一起截图。
  • Keepalived 以 root 运行的系统守护进程,无独立账户/审计体系,多数控制点依赖「配置文件权限 + 主机账户与审计 + 网络侧 VRRP 报文控制」等补偿措施判定。
  • 命令不存在或输出与示例差异较大时,先确认版本与部署形态(发行版包/容器/自定义编译),再换用等效命令或转入配置文件取证,不得据命令缺失直接判不符合。
  • 示例输出中的地址、账户、口令均为演示值,现场须替换为真实取证结果并脱敏后再入报告。

不适用标识说明:

  • 使用 【不适用】 明确标记现场可判定为不适用的控制点。
  • 判定依据采用 GB/T 28448-2019"按测评对象实际功能、是否直接处理数据、是否具备该类安全机制判定"的原则;Keepalived 为网络高可用组件,不直接处理业务数据与个人信息,业务性控制点转由承载应用/数据库测评。

基础信息

对应控制点:非独立控制点(测评对象与资产确认);主备双机形态佐证 8.1.2.1 网络架构 e) 关键设备冗余

判定要点:版本、配置文件与启动参数、VIP 与主备状态、承载业务清单四项可取证且与实际架构一致 → 符合;主备状态与 VIP 漂移关系无法确认 → 部分符合。

取证要求:版本回显截图、配置文件截图、进程与运行用户截图、ip addr VIP 归属截图、主备两侧对照截图。

核查命令:

keepalived -v
ps -ef | grep [k]EEPALIVED | head -n 5
systemctl status keepalived --no-pager | head -n 8
ip -4 addr show | grep -E "inet (192|10|172)" 
grep -nE "vrrp_instance|virtual_router_id|interface|priority|virtual_ipaddress" /etc/keepalived/keepalived.conf | head -n 16
keepalived -t -f /etc/keepalived/keepalived.conf
  • 备注:主备两侧都要执行——同一 virtual_router_id 成对出现、priority 一侧高一侧低(默认 100 主/90 备为常见形态,非标准);keepalived -t 为官方配置校验参数(man 8 keepalived 核验),不加载配置。
  • 预期证据:版本与配置截图、主备 VIP 对照截图(主侧有 VIP、备侧无)。
示例输出(节选)
$ keepalived -v
Keepalived v2.2.8 ...
$ ip -4 addr show | grep -E "inet 192"
    inet 192.168.10.5/32 scope global VIP        # 主节点持有 VIP
$ grep -nE "vrrp_instance|priority|state" /etc/keepalived/keepalived.conf
vrrp_instance VI_1 {
    state MASTER
    priority 100
$ keepalived -t -f /etc/keepalived/keepalived.conf
Configuration file /etc/keepalived/keepalived.conf is valid

身份鉴别

对应控制点:GB/T 22239-2019 8.1.4.1 身份鉴别 a)~d)

判定要点:VRRP 通告认证已配置(VRRPv2 auth_type PASS + auth_pass)且主备一致、认证口令非弱口令且知悉 8 位截断限制、主机侧 root/运维账户受口令策略约束、无管理控制台需另设账户 → 符合;auth_type 缺省或 auth_pass 为空/弱口令 → 部分符合/不符合(伪造通告风险记入侵防范)。

取证要求:vrrp_instance 认证配置截图(口令脱敏)、主备一致性说明、主机口令策略核查(转主机测评单元)。

A. VRRP 通告认证

核查命令:

grep -n -B2 -A3 "auth_type\|auth_pass" /etc/keepalived/keepalived.conf
grep -nE "vrrp_version|version [23]" /etc/keepalived/keepalived.conf
  • 备注:官方手册形态 auth_type PASS + auth_pass <口令>(v2);v3 无此字段(协议层取消认证),核查现场版本选择与网络控制补偿。
  • 预期证据:认证配置截图、版本指令截图。
示例输出(节选)
$ grep -n -A3 "auth" /etc/keepalived/keepalived.conf
    auth_type PASS
    auth_pass ****          # 已设口令,仅前 8 位有效(官方手册原文)
$ grep -nE "vrrp_version|version" /etc/keepalived/keepalived.conf
    vrrp_version 2

B. 主机侧账户与特权运行

核查命令:

ps -o user= -C keepalived | sort -u
systemctl cat keepalived 2>/dev/null | grep -E "User=|ExecStart" | head -n 4
last | head -n 5
  • 备注:Keepalived 需 root 权限操作 VIP/接口(部分发行版支持 User= 降权运行 + 授权脚本,非强制);运维账户与口令策略在主机测评单元核查。
  • 【不适用】组件无独立平台账户体系,平台用户身份鉴别项按实际形态判定并注明。
  • 预期证据:进程属主截图、主机测评联动记录。

访问控制

对应控制点:GB/T 22239-2019 8.1.4.2 访问控制 a)~f)

判定要点:VRRP 通告以 unicast_peer 收敛到主备对端(优于组播全网可达)、配置与脚本文件权限最小化(600/750)、脚本以非 root 或安全模式执行(script_user+enable_script_security)、接口限定(interface/vmactrack)→ 符合;组播通告无网络控制、配置文件全局可读、notify/vrrp_script 以 root 执行且路径可写 → 部分符合/不符合。

取证要求:unicast 配置截图、文件权限清单截图、script_user/enable_script_security 配置截图、防火墙/交换机侧 VRRP(协议 112)控制证据。

A. 通告范围收敛(unicast 优先)

核查命令:

grep -n -A4 "unicast_src_ip\|unicast_peer" /etc/keepalived/keepalived.conf
grep -n "interface\|mcast" /etc/keepalived/keepalived.conf | head -n 6
  • 备注:官方手册核验 unicast_src_ip <IPADDR> + unicast_peer { <IPADDR> [min_ttl/max_ttl] } 语法;未配置 unicast 即默认组播通告(224.0.0.18,v3 为 IPv6 组播),须以交换机侧(端口隔离/IGMP snooping)或主机防火墙控制来补偿。
  • 预期证据:unicast 配置截图或组播+网络控制说明。
示例输出(节选)
$ grep -n -A4 "unicast" /etc/keepalived/keepalived.conf
    unicast_src_ip 192.168.10.5
    unicast_peer {
        192.168.10.6
    }

B. 脚本执行安全(vrrp_script / notify)

核查命令:

grep -n -B2 -A6 "vrrp_script\|notify_" /etc/keepalived/keepalived.conf | head -n 24
grep -n "script_user\|enable_script_security" /etc/keepalived/keepalived.conf
ls -l /etc/keepalived/ /usr/local/bin/keepalived_* 2>/dev/null
  • 备注:vrrp_script 与 notify_master/backup/fault 脚本以 keepalived 权限运行——官方手册核验 script_user username [groupname](全局指定脚本运行用户)与 enable_script_security(“Don’t run scripts configured to be run as root if any part of the path is writable by a non-root user”——手册原文,防脚本路径被非 root 写入导致提权);脚本文件与所在目录权限须 root 独占写。
  • 预期证据:脚本安全配置截图、脚本目录权限截图。

C. 配置文件权限

核查命令:

stat -c "%a %U:%G %n" /etc/keepalived/keepalived.conf /etc/keepalived/*.conf
  • 备注:auth_pass 与脚本中可能出现的口令均为明文,文件权限须 600(至少 640 root:root)。
  • 预期证据:权限清单截图。

安全审计

对应控制点:GB/T 22239-2019 8.1.4.3 安全审计 a)~d)

判定要点:keepalived 运行日志(syslog/journal)可查且含主备切换/脚本故障事件、切换事件外送日志审计系统、留存不少于 6 个月、配置与脚本变更有 auditd/堡垒机留痕 → 符合;仅默认本地短时日志、无切换台账 → 部分符合;日志完全不可得 → 不符合。

取证要求:journalctl/syslog 切换事件样例截图(MASTER/BACKUP/FAULT)、日志外送与留存证据、变更记录。

核查命令:

journalctl -u keepalived --no-pager | tail -n 10
grep -i keepalived /var/log/syslog 2>/dev/null | tail -n 8
grep -rE "keepalived" /etc/rsyslog.d/ /etc/rsyslog.conf 2>/dev/null
auditctl -l 2>/dev/null | grep keepalived
  • 备注:官方手册核验 log_facility localX 配置——确认日志目标设施与 rsyslog 采集路由一致;典型审计事件:Entering MASTER STATE、adverts are not received、脚本进入 FAULT。
  • 预期证据:切换事件截图、外送配置截图。
示例输出(节选)
$ journalctl -u keepalived --no-pager | tail -n 4
Sep 03 08:12:01 lb01 Keepalived_vrrp[1122]: VRRP_Instance(VI_1) Entering MASTER STATE
Sep 03 08:12:01 lb01 Keepalived_vrrp[1122]: VRRP_Instance(VI_1) setting protocol IPs on vip
Aug 31 22:04:33 lb01 Keepalived_vrrp[1122]: VRRP_Script(chk_haproxy) failed (exited with code 1)

入侵防范

对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 a)~h)

判定要点:版本在发行版/官方支持线、nopreempt 或优先级规划防止非预期抢占、check_adv_addr/strict_mode 限制异常通告来源(核验现场版本可用性)、网络侧对 VRRP(IP 协议号 112)报文有源控制、主机侧防恶意代码在位 → 符合;缺少任意一项但有等效补偿且证据齐全 → 部分符合;VRRP 通告完全无认证且网络无控制 → 不符合(高风险线索)。

取证要求:版本与支持状态、anti-preempt 与通告校验配置、交换机/防火墙 VRRP 控制证据、切换演练与攻防记录。

核查命令:

keepalived -v
grep -nE "nopreempt|check_adv_addr|strict_mode|garp_group" /etc/keepalived/keepalived.conf
tcpdump -ni any proto 112 -c 3 2>/dev/null || echo "需 root 权限,经授权现场执行"
iptables -S 2>/dev/null | grep -i vrrp; nft list ruleset 2>/dev/null | grep -iE "vrrp|112"
  • 备注:check_adv_addr/strict_mode(限制接受通告的来源地址)与 nopreempt 以现场版本手册为准;proto 112 即 VRRP 协议号(RFC 5798 定义),未启用认证时同网段伪造 priority 255 即可抢占 VIP——必须给出网络侧控制证据(端口安全/ACL/管理 VLAN 隔离)。
  • 预期证据:配置截图、抓包/策略截图。

数据完整性

对应控制点:GB/T 22239-2019 8.1.4.7 数据完整性 a)b)

判定要点:配置纳入版本管理/备份、变更前 keepalived -t 校验、双机配置成对核验(virtual_router_id/interface 一致)→ 符合;无备份或无校验流程 → 部分符合。

核查命令:

keepalived -t -f /etc/keepalived/keepalived.conf
ls -l /backup/keepalived/ 2>/dev/null | tail -n 3
  • 备注:配置漂移(主备 virtual_router_id/auth_pass 不一致)是切换失败与双主脑裂的高频根因,取证时两侧对照截图。
  • 预期证据:校验回显、备份清单。

数据保密性

对应控制点:GB/T 22239-2019 8.1.4.8 数据保密性 a)b)

核查命令:

grep -c "auth_pass" /etc/keepalived/keepalived.conf
stat -c "%a %n" /etc/keepalived/keepalived.conf
grep -rEl "password|passwd" /etc/keepalived/ 2>/dev/null
  • 备注:VRRP 通告本身不承载业务数据;保密性核查焦点为配置明文凭据(auth_pass、健康检查脚本内的数据库/接口口令)——文件权限 600 + 配置管理受控,脚本中凭据建议改为受控环境文件引用。
  • 预期证据:明文凭据排查与脱敏后截图。

备份恢复

对应控制点:GB/T 22239-2019 8.1.4.9 数据备份恢复 a)c)

判定要点:主备双机 + 切换演练记录(每半年至少一次)→ 符合;有双机无演练 → 部分符合;单点无备份 → 不符合(VIP 单点即业务单点)。

核查命令:

journalctl -u keepalived --no-pager | grep -cE "MASTER STATE|BACKUP STATE"
systemctl is-active keepalived
  • 备注:切换演练证据取自主备 journal 的 MASTER/BACKUP 切换记录与业务验证记录(VIP 漂移耗时、业务探测恢复时间);garp_interval/garp_group 影响切换收敛速度(VIP 通告刷新)。
  • 预期证据:切换事件计数截图、演练记录。

剩余信息保护

对应控制点:GB/T 22239-2019 8.1.4.10 剩余信息保护 a)b)

核查命令:

ls -l /etc/keepalived/*.old /etc/keepalived/*.bak 2>/dev/null
ip addr show | grep -E "VIP|secondary"
  • 备注:退役实例配置、临时测试脚本与含旧凭据的备份及时清理;下线节点的 VIP 残留核查(异常双主)。
  • 预期证据:清理记录截图。

个人信息保护

对应控制点:GB/T 22239-2019 8.1.4.11 个人信息保护 a)b)

  • 【不适用】Keepalived 仅维护 VIP 与主备状态、转发 VRRP 通告(源/目的 IP 为节点地址),不处理业务个人信息;其配置与日志不承载个人信息主体数据。依据:GB/T 28448-2019 个人信息保护控制点针对实际处理个人信息的对象,转由承载业务系统测评。
  • 预期证据:数据流说明、访谈记录。

参考依据

关联文章