前言
在网络安全等级保护2.0体系中,GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》的第三级"安全计算环境"是测评的核心单元。Redis作为企业级核心缓存、消息队列与数据存储组件,其安全配置的合规性直接决定了信息系统能否通过等保三级测评。
本文结合Redis官方安全指南、国内主流测评机构的现场实践经验,基于Redis 6.2.7/7.0.12验证环境,覆盖单机、哨兵、集群三种部署模式,提供可直接落地执行的测评命令、达标判据、高风险核查清单与一键巡检脚本。旨在为测评人员、运维工程师提供一套标准化的核查与加固工具。
一、适用范围与合规依据
1.1 适用场景
- Redis版本:Redis 6.2.x / 7.0.x / 7.2.x(长期支持版)
- 部署模式:Standalone(单机)、Sentinel(哨兵高可用)、Cluster(集群)
- 测评对象:第三级信息系统的"安全计算环境 - 应用支撑组件 - Redis"
1.2 核心合规条款(GB/T 22239-2019)
| 条款编号 | 控制项 | 核心要求 |
|---|---|---|
| 8.1.4.1 | 身份鉴别 | 强制认证、访问隔离、超时断开 |
| 8.1.4.2 | 访问控制 | 最小权限、高危命令禁用 |
| 8.1.4.3 | 安全审计 | 日志全记录、可追溯 |
| 8.1.4.4 | 入侵防范 | 版本加固、漏洞防护 |
| 8.1.4.5 | 恶意代码防范 | 文件完整性、模块安全 |
| 8.1.4.6 | 可信验证 | 安装包、配置文件完整性 |
| 8.1.4.9 | 数据备份与恢复 | 持久化、异地备份 |
二、等保三级核心测评模块(核查-判据-整改)
本章节将"测评命令"、"达标判据"与"扩展核查"整合,形成可闭环的测评链路。
2.1 身份鉴别(8.1.4.1):强制认证、访问隔离
身份鉴别是Redis等保合规的第一高风险项。核心要求:禁止匿名访问、限制网络访问、会话自动断开。
| 控制项 | 测评命令 | 达标判据 | 整改建议 |
|---|---|---|---|
| 密码认证启用 | redis-cli CONFIG GET requirepass |
返回非空强密码字符串 | 设置强复杂度密码 |
| 密码复杂度 | redis-cli CONFIG GET requirepass |
长度≥8位,含大小写+数字+特殊字符 | 确保密码符合复杂度要求 |
| 默认端口修改 | redis-cli CONFIG GET port |
非6379(建议6380及以上) | 修改默认端口 |
| 绑定地址限制 | redis-cli CONFIG GET bind |
绑定内网具体IP,禁止0.0.0.0 | 改为内网具体IP |
| 保护模式 | redis-cli CONFIG GET protected-mode |
yes(默认启用) | 确保启用 |
| 连接超时断开 | redis-cli CONFIG GET timeout |
300-600秒(5-10分钟) | 设置合理超时时间 |
| 最大连接数限制 | redis-cli CONFIG GET maxclients |
业务适配值,建议≤10000 | 根据业务设定限制 |
扩展核查命令集
bash
# 查看配置文件路径及核心配置
redis-cli CONFIG GET dir && redis-cli CONFIG GET logfile
cat /etc/redis/redis.conf |grep -E '^(requirepass|bind|port|protected-mode|masterauth)'
# 查看客户端连接IP来源分布(用于排查是否存在未授权访问)
redis-cli CLIENT LIST | awk -F'addr=' '{print $2}' | awk -F':' '{print $1}' | sort | uniq -c | sort -rn | head -10
# 防火墙访问限制核查
iptables -L -n | grep 6379 || firewall-cmd --list-all | grep redis
2.2 访问控制(8.1.4.2):最小权限、高危命令禁用
Redis 6.0+原生支持ACL细粒度权限控制,是满足等保三级"最小权限"要求的推荐方式。
| 控制项 | 测评命令 | 达标判据 | 整改建议 |
|---|---|---|---|
| 默认账户管控 | redis-cli ACL LIST |
删除/重命名default用户,或严格限制其权限 | 创建独立用户,禁用default |
| 最小权限授权 | redis-cli ACL GETUSER <用户名> |
仅授权必要命令+Key前缀(如+@read ~app:*) |
遵循最小权限原则分配权限 |
| 高危命令禁用 | `cat /etc/redis/redis.conf | grep rename-command` | FLUSHALL/FLUSHDB/CONFIG/DEBUG已禁用/重命名 |
| SSL/TLS加密 | redis-cli CONFIG GET tls-port |
生产环境启用tls-port,禁止明文传输 | 配置TLS证书,启用加密传输 |
扩展核查命令集
bash
# Redis 6.0+ ACL全量核查
redis-cli ACL USERS && redis-cli ACL GETUSER default && redis-cli ACL LOG 10
# 高危命令标准化禁用配置核查
grep -E 'rename-command (FLUSHALL|FLUSHDB|CONFIG|DEBUG|SHUTDOWN)' /etc/redis/redis.conf
# 内存限制与淘汰策略核查(防止内存溢出导致拒绝服务)
redis-cli CONFIG GET maxmemory && redis-cli CONFIG GET maxmemory-policy
# 禁用透明大页(THP),防止性能问题和延迟抖动
cat /sys/kernel/mm/transparent_hugepage/enabled # 输出[never]为合规
2.3 安全审计(8.1.4.3):日志全记录、可追溯
核心要求:启用系统日志、慢查询日志、ACL审计日志,并确保日志文件权限合规。
| 控制项 | 测评命令 | 达标判据 | 整改建议 |
|---|---|---|---|
| 日志级别 | redis-cli CONFIG GET loglevel |
notice/verbose | 设置为notice或以上级别 |
| 日志文件 | redis-cli CONFIG GET logfile |
非空、非stdout,路径固定 | 配置具体日志文件路径 |
| 慢查询阈值 | redis-cli CONFIG GET slowlog-log-slower-than |
≤10000微秒(10ms) | 根据业务敏感度设置阈值 |
| ACL审计日志 | redis-cli ACL LOG |
启用并记录越权访问 | 确保ACL日志功能开启 |
扩展核查命令集
bash
# 日志文件权限核查(640 redis:redis为合规)
stat -c '%a %U:%G' /var/log/redis/redis-server.log
# 慢查询记录核查
redis-cli SLOWLOG GET 20
# 日志异常信息筛查
tail -n 100 /var/log/redis/redis-server.log | grep -i -E 'error|warning|failed|attack'
2.4 入侵防范(8.1.4.4):版本加固、漏洞防护
| 控制项 | 测评命令 | 达标判据 | 整改建议 |
|---|---|---|---|
| 版本合规 | `redis-cli INFO server | grep redis_version` | 6.0+非EOL版本,无高危漏洞 |
| 运行用户 | `ps aux | grep redis-server | grep -v grep` |
| 配置文件权限 | stat /etc/redis/redis.conf |
权限640,属主redis:redis | 修改文件权限和属主 |
扩展核查命令集
bash
# Redis版本漏洞筛查
REDIS_VER=$(redis-cli INFO server | grep redis_version | cut -d: -f2 | tr -d '\r') && echo "当前版本:$REDIS_VER"
# 客户端输出缓冲区限制核查(防止资源耗尽攻击)
redis-cli CONFIG GET client-output-buffer-limit
# Lazy Free特性启用(防止阻塞)
redis-cli CONFIG GET lazyfree-lazy-eviction
2.5 数据备份与恢复(8.1.4.9):持久化+异地备份
| 控制项 | 测评命令 | 达标判据 | 整改建议 |
|---|---|---|---|
| AOF持久化 | redis-cli CONFIG GET appendonly |
yes | 启用AOF持久化 |
| RDB自动备份 | redis-cli CONFIG GET save |
配置自动保存策略 | 配置合理的RDB策略 |
| 备份完整性 | redis-check-rdb /var/lib/redis/dump.rdb |
校验返回0(正常) | 定期校验备份文件 |
| 异地备份 | ls -la /backup/redis/ |
存在异地备份文件 | 配置异地备份机制 |
扩展核查命令集
bash
# 持久化状态核查
redis-cli INFO persistence | grep -E 'rdb_last_save_time|aof_last_write_status'
# 备份策略核查
crontab -l | grep -i redis
# AOF文件完整性校验
redis-check-aof /var/lib/redis/appendonly.aof
三、等保三级「高风险一票否决」清单
以下项目为等保三级测评的"一票否决"项,必须立即整改。
| 高风险检查项 | 验证命令 | 不合规判定 |
|---|---|---|
| 无密码认证 | redis-cli CONFIG GET requirepass |
返回空字符串 |
| 绑定0.0.0.0 | redis-cli CONFIG GET bind |
包含0.0.0.0 |
| 高危命令未禁用 | grep rename-command /etc/redis/redis.conf |
无FLUSHALL/CONFIG等禁用配置 |
| root运行Redis | `ps aux | grep redis-server` |
| 公网暴露 | redis-cli -h <公网IP> PING |
连通成功 |
| 无连接超时 | redis-cli CONFIG GET timeout |
返回0 |
| 无持久化 | redis-cli CONFIG GET save |
返回空 |
四、Redis版本差异与合规建议
不同版本的Redis在满足等保三级要求时的能力和路径不同。
| 功能项 | Redis 5.x | Redis 6.x | Redis 7.x |
|---|---|---|---|
| ACL权限 | 无,仅密码认证 | 完整ACL | 增强ACL(selectors) |
| SSL/TLS | 无 | 原生支持 | 性能优化 |
| 审计日志 | 弱 | ACL日志 | 增强日志 |
| 等保合规 | 需人工大量加固 | 基础合规 | 完整合规 |
| 多线程IO | 无 | 无 | 默认启用 |
核心建议 :三级等保项目应优先使用 Redis 6.2+ / 7.0+ 版本,废弃5.x及以下版本,以利用原生安全特性降低加固成本和风险。
五、Redis等保三级「一键巡检脚本」
可直接在服务器执行,自动输出全维度合规报告(支持root/redis用户)。
bash
#!/bin/bash
# Redis 等保2.0三级 一键巡检脚本
# 适用:Redis 6.x/7.x standalone/sentinel/cluster
echo "============================================="
echo " Redis 等保三级 自动化巡检报告 "
echo "============================================="
echo -e "\n===== 1. 身份鉴别(8.1.4.1)====="
redis-cli CONFIG GET requirepass
redis-cli CONFIG GET bind
redis-cli CONFIG GET port
redis-cli CONFIG GET protected-mode
redis-cli CONFIG GET timeout
echo -e "\n===== 2. 访问控制(8.1.4.2)====="
redis-cli ACL USERS 2>/dev/null || echo "Redis版本<6.0,无ACL"
cat /etc/redis/redis.conf 2>/dev/null | grep rename-command || echo "未禁用高危命令"
redis-cli CONFIG GET maxmemory && redis-cli CONFIG GET maxmemory-policy
echo -e "\n===== 3. 安全审计(8.1.4.3)====="
redis-cli CONFIG GET loglevel
redis-cli CONFIG GET logfile
redis-cli CONFIG GET slowlog-log-slower-than
redis-cli ACL LOG 5 2>/dev/null | head -5
echo -e "\n===== 4. 入侵防范(8.1.4.4)====="
redis-cli INFO server | grep redis_version
ps aux | grep redis-server | grep -v grep | awk '{print "运行用户:"$1}'
stat -c "配置文件权限:%a 属主:%U:%G" /etc/redis/redis.conf 2>/dev/null
echo -e "\n===== 5. 数据备份(8.1.4.9)====="
redis-cli CONFIG GET save
redis-cli CONFIG GET appendonly
redis-cli INFO persistence | grep rdb_last_save_time
echo -e "\n===== 6. 网络安全====="
ss -tulnp | grep redis-server
echo -e "\n============================================="
echo " 巡检完成 "
echo "============================================="
六、现场测评执行规范与最佳实践
为确保测评过程顺利且不引发生产故障,建议遵循以下规范:
-
权限与操作:
- 执行
redis-cli命令需具备redis用户权限。 - 读取配置文件需具备root或redis用户权限。
- 严禁操作 :测评期间禁止执行
FLUSHALL、FLUSHDB、DEBUG等高危命令,严禁直接修改生产配置。所有查询操作建议使用CONFIG GET而非直接查看配置文件。
- 执行
-
核查重点:遵循"高风险优先"原则,先核查"一票否决"清单中的项目。
-
证据留存:所有命令执行结果(含时间戳)需通过截图或日志形式留存,作为测评佐证材料。
-
整改优先级:
- P0级(立即整改):无密码、绑定0.0.0.0、root运行、公网暴露。
- P1级(一周内整改):高危命令未禁用、无连接超时、无持久化。
- P2级(纳入运维规范):ACL权限细化、日志审计完善、异地备份。
结语
Redis作为三级等保"安全计算环境"的核心组件,其合规配置无需复杂改造。通过本文提供的标准化命令核查、一键脚本巡检及高风险项整改方案,可快速满足GB/T 22239-2019的各项要求。本文所有内容均经过生产环境验证,可作为测评现场与日常安全运维的标准化工具书。
合规依据:GB/T 22239-2019、GB/T 28448-2019、Redis官方安全指南、CIS Redis安全基线