Keepalived 高可用组件测评
Categories:
4 分钟阅读
定位: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 addrVIP 归属截图、主备两侧对照截图。
核查命令:
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 认证配置截图(口令脱敏)、主备一致性说明、主机口令策略核查(转主机测评单元)。
官方手册核验:auth_pass 仅前 8 个字符生效且以明文写于 /etc/keepalived/keepalived.conf——长口令后段不起防护作用;VRRP 通告无有效认证(auth_pass 空/默认/弱)时,同网段任何主机可伪造 priority 255 通告抢占 VIP(高可用劫持,可致业务中断与流量劫持),网络侧无 VRRP 报文控制时按高风险线索记录。VRRPv3(IPv6 实例固定 v3;vrrp_version 3)协议本身无认证字段,只能依赖链路层/网络层控制,须如实说明。
判定口径详见 联盟团标-网络安全等级保护测评高风险判定指引(2025版)(对应 2025 版判例 6.4.1.1、6.4.5.2)。
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 个人信息保护控制点针对实际处理个人信息的对象,转由承载业务系统测评。
- 预期证据:数据流说明、访谈记录。
参考依据
- GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》(8.1.4 安全计算环境;VIP 冗余佐证 8.1.2.1):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=BAFB47E8874764186BDB7865E8344DAF
- GB/T 28448-2019《信息安全技术 网络安全等级保护测评要求》(测评对象边界与不适用判定):http://openstd.samr.gov.cn/bzgk/gb/newGbInfo?hcno=7E736CDF4502B6FF1258DD250AA3EC8C
- RFC 5798(VRRP 版本 3)与 RFC 3768(VRRP 版本 2):https://datatracker.ietf.org/doc/html/rfc5798、https://datatracker.ietf.org/doc/html/rfc3768
- Keepalived 官方站点:https://www.keepalived.org/
- keepalived.conf(5) 官方手册页(Debian bookworm 包文档——
vrrp_version默认 2/IPv6 用 3、auth_type PASS/auth_pass仅前 8 字符生效、unicast_src_ip/unicast_peer { <IP> [min_ttl/max_ttl] }、script_user、enable_script_security原文已核验):https://manpages.debian.org/bookworm/keepalived/keepalived.conf.5.en.html - keepalived(8) 手册页(
-t/--config-test配置校验、-v/--version、-d/--dump-conf已核验):https://manpages.debian.org/bookworm/keepalived/keepalived.8.en.html - 《网络安全等级保护测评高风险判定指引》(中关村信息安全测评联盟团体标准),站内对照表:22、高风险判定指引与加固对照表
- 命令核验说明:本文命令已于 2026-09 对照 keepalived.conf(5) 与 keepalived(8) 官方手册页(Debian bookworm 打包文档)逐条核验;四处须留意:①
auth_pass官方手册明示仅前 8 字符有效——按"8 位口令"评估强度而非实际输入长度;② VRRPv3 无协议认证字段,现场若用vrrp_version 3或 IPv6 实例,认证不适用,必须以网络侧 VRRP 控制替代并记录补偿;③enable_script_security+script_user是 root 提权面的关键开关,未启用时核查脚本路径权限(任一段可被非 root 写即风险);④check_adv_addr/strict_mode/nopreempt等防护参数随版本演进,个别项以现场man keepalived.conf为准,不得据命令缺失直接判不符合。
关联文章
- 常见搭配:HAProxy 负载均衡器测评、Nginx 中间件测评;网络侧 VIP 联动见 网络设备板块
- 主机层取证:16、Linux操作系统测评命令、银河麒麟-三级现场测评命令单、openEuler-三级现场测评命令单
- 现场指引:现场使用总指引(中间件与容器)
- 板块目录:中间件与容器
- 配套加固:30、注册中心与负载均衡加固、17、加固方案总纲、11、Linux操作系统加固手册
- 取证记录:16、安全评估加固记录表3.0
- 高风险口径:22、高风险判定指引与加固对照表