Redis 缓存数据库测评

Redis 5/6/7 单机、主从、哨兵、集群三级等保现场测评取证命令单:按控制点组织 requirepass/ACL、绑定地址、日志与持久化核查命令、判定要点与取证要求。

定位:Redis 三级等保现场测评取证命令单,按 GB/T 22239-2019 安全计算环境控制点分节组织核查命令、判定要点与取证要求。 适用范围:Redis 5/6/7 单机、主从、哨兵、集群场景。 配套文章:22、高风险判定指引与加固对照表、16、安全评估加固记录表3.0、21、Web中间件安全加固。

使用说明:

  • 本文所有命令均为只读取证命令,不修改配置、不重启服务、不执行清除类操作;确需变更由被测单位运维方在授权下实施。
  • 每个控制点小节按「对应控制点 → 判定要点 → 取证要求 → 核查命令 → 备注 → 预期证据」编排;命令回显本身即证据,须连同命令行一起截图。
  • 命令不存在或输出与示例差异较大时,先确认组件版本与部署形态(包管理器/源码编译/容器),再换用等效命令或转入配置文件、管理控制台取证,不得据命令缺失直接判不符合。
  • 示例输出中的地址、账户、路径均为演示值,现场须替换为真实取证结果并对涉及个人信息与内网管理地址的内容脱敏后再入报告。

不适用标识说明:

  • 使用 【不适用】 明确标记现场可判定为不适用的控制点。
  • 判定依据采用 GB/T 28448-2019 的对象边界原则;Redis 作为缓存、会话库或消息缓冲时,部分控制点需要按其是否实际处理个人信息、是否提供独立交互账户体系来判断。

基础信息

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

判定要点:版本、部署路径、运行账户、监听端口、集群角色五项均可取证且与实际架构一致 → 符合;版本或路径无法确认、依赖口头说明 → 部分符合。

取证要求:版本命令回显截图、配置路径截图、进程与运行账户截图、端口监听截图;集群部署补节点清单与角色截图。

核查命令:

redis-server --version
redis-cli INFO server
ps -ef | grep redis
find / -name redis.conf 2>/dev/null
  • 备注:确认版本、实例角色、监听地址、端口、配置文件、持久化目录、日志目录和部署模式。
  • 预期证据:版本截图、配置路径截图、实例信息截图、端口截图。
示例输出(节选)
Redis server v=7.2.4 sha=00000000 malloc=jemalloc-5.3.0 bits=64
# Server
redis_version:7.2.4
redis_mode:standalone
os:Linux 4.19.90 x86_64
run_id:5f2a...c81d
ps:redis  1101  redis-server *:6379
/etc/redis/redis.conf

身份鉴别

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

判定要点:管理账户唯一且非默认口令、鉴别信息复杂度与有效期均已配置、远程管理走加密通道、失败处理与会话超时已启用 → 符合;仅满足其中一部分(如有口令但无复杂度/无锁定/无超时)→ 部分符合;管理入口无鉴别或沿用出厂口令 → 不符合(高风险)。

取证要求:账户清单截图、口令策略配置截图、加密通道配置截图、失败锁定与超时配置截图;由统一认证平台承载时补平台侧配置与对接截图。

A. 认证方式

核查命令:

redis-cli CONFIG GET requirepass
redis-cli ACL LIST
  • 备注:Redis 6 及以上应重点核查 ACL;旧版本主要看 requirepass 和访问源限制。
  • 预期证据:认证配置截图、ACL 截图、账号台账。
示例输出(节选)
requirepass(CONFIG GET,需认证后执行)
NOAUTH Authentication required.
ACL LIST(节选)
user default on nopass ~* &* +@all
user demo-app on >*** ~demo:* &* +@read +@write -@dangerous

B. 用户与权限账户

核查命令:

redis-cli ACL LIST
redis-cli ACL GETUSER default
  • 备注:核查是否存在共享管理员、默认开放 default 用户、长期未清理账户。
  • 预期证据:用户列表截图、访谈记录、制度。
示例输出(节选)
ACL LIST(节选)
user default off #(已禁用 default 明文访问)
user demo-app on *** ~demo:* &* +@read +@write -@dangerous
ACL GETUSER default
flags: off
commands: -@all

C. 口令策略与失败控制

核查命令:

grep -n "requirepass\\|masterauth\\|aclfile" redis.conf 2>/dev/null
  • 备注:Redis 原生对口令复杂度和锁定策略支持有限,通常需结合堡垒机、主机控制和网络隔离综合判断。
  • 【不适用】若现场 Redis 仅开放受控内网访问,且不存在面向人工用户的交互式登录界面,则“登录失败锁定/会话超时”可对 Redis 组件判定为部分不适用,只需核查其现有 ACL、口令和网络边界。依据:GB/T 28448-2019 身份鉴别控制点应与对象实际鉴别方式相匹配。
  • 预期证据:配置截图、制度、网络隔离材料。
示例输出(节选)
grep redis.conf
requirepass ********
masterauth ********
aclfile /etc/redis/users.acl
(口令为强口令且经 ACL 文件管理)

D. 会话与远程访问控制

核查命令:

redis-cli CONFIG GET timeout
redis-cli CONFIG GET tcp-keepalive
  • 备注:timeout 为 0 表示会话不超时;现场应关注是否仅内网开放以及是否通过 TLS 保护。
  • 预期证据:参数截图、网络策略截图、TLS 配置截图。
示例输出(节选)
timeout 300
tcp-keepalive 300
(空闲连接 300 秒断开,TCP 保活已启用)

访问控制

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

判定要点:账户与角色齐备且权限最小化、默认账户已重命名或改口令、无多余/过期/共享账户、管理来源受限制 → 符合;有账户体系但权限未按最小化分配或管理来源未限制 → 部分符合;全员共用超级账户、管理端口对全网开放 → 不符合(高风险)。

取证要求:账户与角色对应表、授权策略截图、管理来源限制(ACL/绑定地址/防火墙策略)截图、多余账户处置记录。

A. 监听地址与来源限制

核查命令:

redis-cli CONFIG GET bind
redis-cli CONFIG GET protected-mode
  • 备注:生产环境不宜对公网或全网段开放;protected-mode yes 仅是基础保护,不能替代正式控制。
  • 预期证据:监听配置截图、网络 ACL 材料。
示例输出(节选)
bind 192.168.10.11 127.0.0.1
protected-mode yes
(仅绑定内网地址与回环,protected-mode 开启)

B. 命令级权限控制

核查命令:

redis-cli ACL LIST
  • 备注:重点看是否限制高危命令、是否按用户和命令组进行区分授权。
  • 预期证据:ACL 截图、权限说明。
示例输出(节选)
user default off
user demo-app on *** ~demo:* &* +read +write -@dangerous
user readonly-user on *** ~demo:report:* &* +read
(default 已禁用,业务账户最小授权)

C. 默认用户与未使用功能

核查命令:

redis-cli ACL GETUSER default
  • 备注:未使用的默认用户、调试命令和测试实例应停用或限制。
  • 预期证据:默认用户截图、处置说明。
示例输出(节选)
ACL GETUSER default
flags: off
passwords: (隐藏)
commands: -@all
keys: -
channels: -
(default 账户已禁用,符合基线要求)

D. 文件与进程权限

核查命令:

ps -o user,pid,cmd -C redis-server
ls -l redis.conf 2>/dev/null
  • 备注:运行用户不宜为 root;配置、数据、日志目录权限应最小化。
  • 预期证据:运行用户截图、权限截图。
示例输出(节选)
USER    PID  COMMAND
redis  1101  redis-server *:6379
-rw-r----- 1 redis redis 63799 /etc/redis/redis.conf
(以 redis 运行用户启动,配置文件权限 640)

安全审计

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

判定要点:审计功能启用且覆盖每个用户与重要行为、审计记录字段齐全、审计记录受保护并定期备份、留存不少于 6 个月 → 符合;仅记录部分事件或留存不足 6 个月 → 部分符合;审计未启用或普通用户可删改审计记录 → 不符合(高风险)。

取证要求:审计开关与范围配置截图、审计记录明细样例(含时间、用户、事件类型、结果、来源)、日志外送与轮转配置截图、留存期限证据、非审计账户尝试删改的实测结果。

A. 日志配置

核查命令:

redis-cli CONFIG GET logfile
redis-cli CONFIG GET loglevel
  • 备注:若 logfile 为空,需结合系统日志判断;现场要确认是否能记录关键操作和异常。
  • 预期证据:日志路径截图、日志级别截图、系统日志截图。
示例输出(节选)
logfile /var/log/redis/redis-server.log
loglevel notice
ls /var/log/redis
redis-server.log
redis-server.log.1.gz

B. 审计覆盖

核查命令:

redis-cli MONITOR
  • 备注:MONITOR 不宜长期开启生产使用,可作为短时现场辅证;长期审计一般依赖代理层、日志平台或主机审计。
  • 预期证据:日志样例、平台材料、访谈记录。
示例输出(节选)
redis-cli MONITOR(节选,观察 60 秒)
1722213601.123456 [0 192.168.1.23:51234] "GET" "demo:user:1001"
1722213603.654321 [0 192.168.1.45:51236] "SET" "demo:token:a1b2" "EX" "300"
(MONITOR 仅临时开启用于核查,核查后关闭;常规审计依赖日志与网络层)

C. 留存与轮转

核查命令:

ls /var/log 2>/dev/null
grep -R redis /etc/logrotate* 2>/dev/null
  • 备注:需核实日志留存、轮转和归档策略。
  • 预期证据:轮转配置截图、制度、访谈记录。
示例输出(节选)
ls /var/log | grep redis
redis/
grep redis /etc/logrotate.d/*
/etc/logrotate.d/redis-server:/var/log/redis/*.log {
/etc/logrotate.d/redis-server: weekly rotate 12

D. 平台审计联动

核查命令:

journalctl | grep redis | tail -n 50
  • 备注:Redis 现场常需结合主机审计、堡垒机、数据库审计平台代理或日志平台综合判断。
  • 预期证据:平台截图、主机审计截图。
示例输出(节选)
journalctl | grep redis(节选)
Aug 24 09:00:01 host systemd[1]: Started Redis In-Memory Data Store.
Aug 24 09:15:22 host systemd[1]: Reloading Redis.
Aug 24 10:02:41 host sudo: ops : TTY=pts/0 ; COMMAND=/usr/bin/systemctl restart redis

数据完整性

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

判定要点:配置与关键数据在传输/存储过程中具备校验或完整性保护机制(TLS、签名、校验和、配置版本归档)→ 符合;仅有部分链路具备校验 → 部分符合;无任何完整性校验手段 → 不符合。

取证要求:传输加密配置截图、校验/签名机制说明、配置变更与归档记录、完整性检测工具输出。

A. 持久化与复制完整性

核查命令:

redis-cli INFO persistence
redis-cli INFO replication
  • 备注:核查 RDB/AOF 是否开启、复制状态是否正常、主从是否一致。
  • 预期证据:持久化截图、复制状态截图。
示例输出(节选)
INFO persistence
aof_enabled:1
rdb_last_save_time:1724467200
rdb_last_bgsave_status:ok
INFO replication
role:master
connected_slaves:1
slave0:ip=192.168.10.12,port=6379,state=online

B. 传输完整性

核查命令:

redis-cli INFO server | grep tcp_port
redis-cli INFO tls 2>/dev/null
  • 备注:如通过 TLS、代理、专线保护链路,应说明完整性保障方式。
  • 预期证据:TLS 截图、架构说明、网络材料。
示例输出(节选)
tcp_port:6379
INFO tls(未启用 TLS 模块时无输出)
(当前为明文 6379,仅内网可达;TLS 改造列入整改计划)

数据保密性

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

判定要点:鉴别信息与敏感业务数据在传输和存储时均加密(TLS 1.2 及以上、口令散列存储、密钥不落明文)→ 符合;仅传输加密或仅存储加密 → 部分符合;明文传输鉴别信息或明文存储口令/密钥 → 不符合(高风险)。

取证要求:TLS 配置与证书信息截图、协议与加密套件清单、口令/密钥存储形态截图、抓包验证结果;使用国密算法时注明算法与模块。

A. TLS 与加密链路

核查命令:

redis-cli INFO tls 2>/dev/null
grep -n "tls-" redis.conf 2>/dev/null
  • 备注:Redis 6+ 可支持 TLS;未启用时需结合内网隔离和前置代理说明。
  • 预期证据:TLS 参数截图、证书截图、网络说明。
示例输出(节选)
tls-port 未配置时 INFO tls 无输出
grep tls- redis.conf
# tls-port 0
# tls-cert-file redis.crt
(TLS 相关项均处于注释状态,记录为整改建议)

B. 敏感配置保护

核查命令:

grep -n "requirepass\\|masterauth\\|aclfile" redis.conf 2>/dev/null
  • 备注:明文口令、复制认证口令、ACL 文件权限是重点。
  • 预期证据:脱敏截图、权限截图、密钥管理说明。
示例输出(节选)
grep redis.conf
requirepass ********
masterauth ********
aclfile /etc/redis/users.acl
(口令经 aclfile 与配置文件权限 600 保护,未见明文泄露)

备份恢复

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

判定要点:配置与关键数据具备本地备份、备份可恢复且经过演练、具备主备或集群冗余 → 符合;有备份但无恢复演练记录,或仅有冗余无备份 → 部分符合;无任何备份与冗余措施 → 不符合(高风险)。

取证要求:备份策略与备份文件清单截图、恢复演练记录、集群/主备状态截图、备份介质与异地存放说明。

A. 配置与持久化文件备份

核查命令:

redis-cli CONFIG GET dir
redis-cli CONFIG GET dbfilename
redis-cli CONFIG GET appendfilename
  • 备注:应覆盖配置文件、RDB/AOF 文件、ACL 文件、哨兵或集群配置。
  • 预期证据:备份目录截图、备份策略。
示例输出(节选)
dir /var/lib/redis
dbfilename dump.rdb
appendfilename appendonly.aof
(持久化目录独立于系统目录,便于备份)

B. 主从与备份策略

核查命令:

redis-cli INFO replication
  • 备注:主从不是备份的完全替代,但可作为恢复体系的一部分。
  • 预期证据:主从状态截图、架构说明、访谈记录。
示例输出(节选)
INFO replication
role:slave
master_host:192.168.10.11
master_link_status:up
slave_read_repl_offset:88231004

C. 恢复能力

核查命令:

ls 2>/dev/null
  • 备注:现场应有恢复步骤、演练记录或至少明确从 RDB/AOF、主从或快照恢复的方法。
  • 预期证据:恢复手册、演练记录、工单。
示例输出(节选)
dump.rdb  appendonlydir/  users.acl.bak
(数据目录存在 RDB/AOF 及历史备份文件)

剩余信息保护

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

判定要点:鉴别信息与敏感数据所在存储空间在释放或清除前得到完全清除(口令散列不可逆、临时文件与旧配置定期清理、介质报废有销毁记录)→ 符合;部分清理但无制度与记录 → 部分符合;明文口令残留、旧配置与备份文件长期堆积在生产目录 → 不符合。

取证要求:清理策略与计划任务截图、残留排查命令输出、介质销毁与设备报废记录、制度文件。

A. 历史数据与临时文件

核查命令:

redis-cli DBSIZE
find / -name "*.rdb" -o -name "*.aof" 2>/dev/null
  • 备注:旧快照、废弃实例数据、测试数据文件应及时清理。
  • 预期证据:目录截图、清理说明。
示例输出(节选)
DBSIZE
152340
find / -name "*.rdb" -o -name "*.aof"
/var/lib/redis/dump.rdb
/var/lib/redis/appendonlydir/appendonly.aof.1.incr.aof
/var/backup/redis/dump-20260823.rdb

B. 凭据残留

核查命令:

grep -R "requirepass\\|masterauth\\|password" /etc /opt 2>/dev/null
  • 备注:脚本、配置、历史文件中残留口令应记录并整改。
  • 预期证据:脱敏截图、整改记录。
示例输出(节选)
grep requirepass/masterauth/password /etc /opt(节选)
/opt/app/config/application.yml: password: ***
/etc/redis/users.acl: user demo-app on ***
(应用侧口令经配置中心加密下发,未见明文)

个人信息保护

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

判定要点:仅采集和保存业务必需的个人信息、禁止未授权访问与非法使用(日志字段最小化、访问受权限控制、导出有审批)→ 符合;有访问控制但未做字段最小化或无导出管控 → 部分符合;日志或配置中明文记录身份证、手机号、令牌等且无访问控制 → 不符合(高风险)。

取证要求:日志格式与字段清单截图、样例日志(脱敏后)、个人信息访问权限配置、导出审批记录;不涉及个人信息时留存数据流说明作为不适用依据。

A. 键值数据中的个人信息

核查命令:

redis-cli --scan | head -n 20
  • 备注:现场不宜直接抽取全部业务数据,建议通过键模式和业务访谈判断是否存放个人信息。
  • 【不适用】若 Redis 明确仅用于技术缓存、分布式锁、会话票据或不含个人信息的临时数据,且经业务确认不直接存储个人信息,则该点可判定为不适用。依据:GB/T 28448-2019 个人信息保护控制点以实际处理个人信息为前提。
  • 预期证据:键模式截图、访谈记录、制度。
示例输出(节选)
redis-cli --scan | head
demo:user:1001
demo:order:2026082401
demo:session:a1b2c3
demo:cache:index
(键名不含个人敏感字段命名)

B. 日志与导出控制

核查命令:

redis-cli INFO keyspace
  • 备注:如 Redis 作为缓存或会话存储承载个人信息,应核查导出、同步、备份和共享控制。
  • 【不适用】若 Redis 不承载个人信息,且无对外导出或共享个人信息的管理功能,则该点对 Redis 可判定为不适用。依据:GB/T 28448-2019 按对象实际功能边界判定。
  • 预期证据:权限说明、备份说明、个人信息保护访谈记录。
示例输出(节选)
INFO keyspace
db0:keys=152340,expires=76210,avg_ttl=3600000
(键值内容抽查未发现存储身份证号等个人信息明文)

入侵防范

对应控制点:GB/T 22239-2019 8.1.4.4 入侵防范 a)~h)、8.1.4.5 恶意代码防范

判定要点:遵循最小安装、关闭多余服务与高危端口、管理终端受限、具备数据有效性检验、及时修补漏洞并有加固记录 → 符合;部分项缺失但有等效补偿(WAF/IPS/主机加固)且证据齐全 → 部分符合;存在未修补高危漏洞或高危端口对全网开放且无补偿 → 不符合(高风险)。

取证要求:组件与服务清单、端口扫描结果、管理终端限制配置、漏洞扫描与修补记录、基线加固对照表、攻击告警或阻断记录。

A. 未授权访问与管理端口暴露

核查命令:

redis-cli CONFIG GET bind
redis-cli CONFIG GET protected-mode
ss -lntp | grep 6379
  • 备注:重点核查对外暴露、无认证、弱认证和管理端口无边界控制问题。
  • 预期证据:监听截图、配置截图、网络 ACL 材料。
示例输出(节选)
bind 192.168.10.11 127.0.0.1
protected-mode yes
ss 输出:
LISTEN 0 128 192.168.10.11:6379
(未监听 0.0.0.0,仅内网网段可访问)

B. 高危命令与危险能力

核查命令:

redis-cli ACL LIST
redis-cli CONFIG GET rename-command
  • 备注:关注高危命令、默认用户权限过大、在线改配置和持久化落盘带来的攻击面。
  • 预期证据:ACL 截图、配置截图、处置说明。
示例输出(节选)
ACL LIST(见上)
rename-command(未配置)
(通过 ACL 禁用危险命令组替代 rename-command,等效控制)

C. 版本与漏洞风险

核查命令:

redis-server --version
  • 备注:应确认版本、是否为老旧版本、是否有高危漏洞整改或升级计划。
  • 预期证据:版本截图、补丁或整改记录。
示例输出(节选)
Redis server v=7.2.4 sha=00000000 malloc=jemalloc-5.3.0 bits=64

D. 防护与告警联动

核查命令:

journalctl | grep redis | tail -n 50
  • 备注:Redis 入侵防范通常依赖网络边界、主机防护、数据库审计代理或日志平台联动。
  • 预期证据:告警截图、主机防护材料、平台记录。
示例输出(节选)
journalctl | grep redis(节选)
Aug 24 09:00:01 host systemd[1]: Started Redis In-Memory Data Store.
Aug 24 10:21:33 host systemd[1]: Stopping Redis In-Memory Data Store...
(运行日志进入 journald 并由 rsyslog 上送集中日志平台)

参考依据

关联文章