等保2.0三级要求下Redis 安全测评应该怎么做?

前言

在网络安全等级保护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 "============================================="

六、现场测评执行规范与最佳实践

为确保测评过程顺利且不引发生产故障,建议遵循以下规范:

  1. 权限与操作

    • 执行redis-cli命令需具备redis用户权限。
    • 读取配置文件需具备root或redis用户权限。
    • 严禁操作 :测评期间禁止执行FLUSHALLFLUSHDBDEBUG等高危命令,严禁直接修改生产配置。所有查询操作建议使用CONFIG GET而非直接查看配置文件。
  2. 核查重点:遵循"高风险优先"原则,先核查"一票否决"清单中的项目。

  3. 证据留存:所有命令执行结果(含时间戳)需通过截图或日志形式留存,作为测评佐证材料。

  4. 整改优先级

    • 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安全基线