等保测评命令——redis
依据GB/T 22239-2019《信息安全技术 网络安全等级保护基本要求》第三级安全计算环境条款结合Redis 6.x/7.x官方安全指南及多家测评机构现场实践给出可直接落地的测评命令清单。已在Redis 6.2.7 / 7.0.12环境验证通过支持standalone / sentinel / cluster部署模式。一、身份鉴别8.1.4.11.1 访问控制与认证配置控制项测评命令达标判据密码认证启用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保护模式redis-cli CONFIG GET protected-modeyes默认启用Redis配置文件核查# 查看Redis配置文件路径 redis-cli CONFIG GET dir redis-cli CONFIG GET logfile # 查看配置文件内容通常位于/etc/redis/或/etc/redis.conf cat /etc/redis/redis.conf |grep-E^(requirepass|bind|port|protected-mode|masterauth) # 查看是否启用ACLRedis 6.0 redis-cli ACL LIST |head-10 # 查看特定用户权限Redis 6.0 redis-cli ACL GETUSER default # 查看所有用户列表 redis-cli ACL USERS1.2 登录失败与会话管理控制项测评命令达标判据连接数限制redis-cli CONFIG GET maxclients根据业务设置建议≤10000超时断开redis-cli CONFIG GET timeout300-600秒5-10分钟TCP连接保持redis-cli CONFIG GET tcp-keepalive60-300秒Redis特有配置# 查看当前连接数 redis-cli INFO clients |grep connected_clients # 查看最大连接数限制 redis-cli CONFIG GET maxclients # 查看客户端连接列表检查异常连接 redis-cli CLIENT LIST |head-20 # 查看阻塞客户端 redis-cli CLIENT LIST |grep-cblocked # 查看连接来源IP分布 redis-cli CLIENT LIST |awk -Faddr{print $2}|awk -F:{print $1}|sort|uniq-c|sort-rn|head-10 # 查看慢查询可能为攻击行为 redis-cli SLOWLOG GET 101.3 远程管理安全# 检查危险命令重命名或禁用 cat /etc/redis/redis.conf |grep-E^(rename-command|DISABLE) # 检查是否禁用高危命令 redis-cli CONFIG GET rename-command # 或查看配置文件 grep-Erename-command (FLUSHALL|FLUSHDB|CONFIG|DEBUG|SHUTDOWN|SAVE|BGSAVE) /etc/redis/redis.conf # 检查是否启用SSL/TLSRedis 6.0 redis-cli CONFIG GET tls-port redis-cli CONFIG GET tls-cert-file # 查看监听端口 ss -tulnp|grep redis-server # 检查是否暴露在外网 curl-s http://ipinfo.io/ip # 获取本机公网IP redis-cli -h公网IP-p6379 PING # 应返回错误或未连接高风险项Redis未设置密码且绑定0.0.0.0或高危命令未禁用直接判定不符合三级要求。1.4 双因子认证高风险项测评方法访谈确认是否采用Redis密码网络层VPN/堡垒机组合认证技术核查# 检查是否通过堡垒机访问 echo$SSH_CONNECTION# 查看SSH来源 last |grep redis # 查看登录记录 # 检查VPN网段访问限制 redis-cli CONFIG GET bind cat /etc/redis/redis.conf |grep-A5-B5^bind # 检查iptables/防火墙限制 iptables -L-n|grep6379 firewall-cmd --list-all |grep redis # CentOS/RHEL ufw status |grep6379# Ubuntu # 检查是否使用SSL证书认证Redis 6.0 openssl s_client -connect localhost:6379 -tls1_2/dev/null 2/dev/null | openssl x509 -noout-text|head-20二、访问控制8.1.4.22.1 账户与权限管理控制项测评命令达标判据默认账户检查redis-cli ACL LIST删除/重命名default用户或限制权限最小权限原则redis-cli ACL GETUSER username仅授权必要命令和Key前缀敏感操作审计redis-cli ACL LOG记录越权访问尝试Redis 6.0Redis 6.0 ACL访问控制列表核查# 查看ACL日志记录权限拒绝事件 redis-cli ACL LOG 10 # 查看所有用户及权限 redis-cli ACL LIST # 检查用户权限示例应限制危险命令 redis-cli ACL GETUSER app_readonly # 期望输出-all read ~app:* 仅允许读取app:前缀的key # 检查管理员用户 redis-cli ACL GETUSER admin # 应启用on password 权限但限制来源IP # 查看Key空间通知审计用途 redis-cli CONFIG GET notify-keyspace-eventsRedis 5.x及以下版本无ACL# 检查是否使用Redis AUTH密码区分业务 cat /etc/redis/redis.conf |grep-E^requirepass # 检查是否使用不同Redis实例隔离业务 ps aux |grep redis-server |grep-vgrep ss -tulnp|grep redis # 检查Key前缀规范业务隔离 redis-cli KEYS *|awk -F:{print $1}|sort|uniq-c|sort-rn|head-102.2 默认配置清理# 检查是否修改默认端口 redis-cli CONFIG GET port # 或 cat /etc/redis/redis.conf |grep^port # 检查是否禁用危险命令 cat /etc/redis/redis.conf |greprename-command # 标准配置应包含 # rename-command FLUSHALL # rename-command FLUSHDB # rename-command CONFIG CONFIG_9f3b2a1e # rename-command DEBUG # 检查是否关闭监听IPv6如未使用 cat /etc/redis/redis.conf |grepbind|grep-v# # 检查是否禁用THP透明大页 cat /sys/kernel/mm/transparent_hugepage/enabled # 应为[never] # 检查是否设置内存上限 redis-cli CONFIG GET maxmemory redis-cli CONFIG GET maxmemory-policy # 应为volatile-lru或allkeys-lru三、安全审计8.1.4.33.1 日志配置与审计控制项测评命令达标判据日志启用redis-cli CONFIG GET loglevelnotice或verbose日志文件路径redis-cli CONFIG GET logfile非空非stdout慢查询日志redis-cli CONFIG GET slowlog-log-slower-than≤10000微秒10ms审计日志Redis 6.0redis-cli ACL LOG启用并持久化Redis日志核查# 查看日志级别 redis-cli CONFIG GET loglevel # 可选debug, verbose, notice, warning # 查看日志文件位置 redis-cli CONFIG GET logfile # 查看日志内容检查异常 tail-n100 /var/log/redis/redis-server.log |grep-i-Eerror|warning|failed|attack # 查看日志文件权限 ls-la /var/log/redis/ stat-c%a %U:%G /var/log/redis/redis-server.log # 应为640 redis:redis # 查看慢查询日志配置 redis-cli CONFIG GET slowlog-log-slower-than # 单位微秒 redis-cli CONFIG GET slowlog-max-len # 建议≥128 # 查看慢查询记录潜在攻击或性能问题 redis-cli SLOWLOG GET 20 # 查看ACL审计日志Redis 6.0 redis-cli ACL LOG 50|head-50 # 重置慢查询日志测试后清理 redis-cli SLOWLOG RESET3.2 持久化与备份审计# 查看RDB持久化配置 redis-cli CONFIG GET save # 应包含类似900 1 300 10 60 10000自动保存策略 # 查看AOF持久化配置 redis-cli CONFIG GET appendonly redis-cli CONFIG GET appendfsync # 应为everysec或always # 查看RDB文件路径及权限 redis-cli CONFIG GET dir redis-cli CONFIG GET dbfilename ls-la /var/lib/redis/ # RDB文件权限应为640 redis:redis # 查看AOF文件 redis-cli CONFIG GET appendfilename ls-la /var/lib/redis/*.aof # 检查备份策略 crontab-l|grep-i redis ls-la /backup/redis/ 2/dev/null # 查看最后一次持久化时间 redis-cli INFO persistence |grep-Erdb_last_save_time|aof_last_write_status date-d $(redis-cli INFO persistence |grep rdb_last_save_time |cut -d: -f2)四、入侵防范8.1.4.44.1 服务加固与漏洞修复控制项测评命令达标判据版本检查redis-cli INFO server使用6.0版本非EOL版本安全补丁redis-cli INFO servergrep redis_version当前最新稳定版危险命令禁用cat /etc/redis/redis.conf | grep rename-commandFLUSHALL/FLUSHDB/CONFIG等已禁用内存限制redis-cli CONFIG GET maxmemory设置为物理内存的70-80%Redis加固核查# 查看Redis版本确认非漏洞版本 redis-cli INFO server |grep redis_version redis-cli INFO server |grep redis_git_sha1 # 检查已知漏洞版本示例 REDIS_VER$(redis-cli INFO server |grep redis_version |cut -d: -f2|tr-d\r) echo当前版本: $REDIS_VER # 高危版本3.2.0-3.2.4CVE-2016-8339、4.0.0-4.0.10、5.0.0-5.0.3等 # 检查是否运行在root用户下 ps aux |grep redis-server |grep-vgrep # 应为redis或专用用户绝不能是root # 检查配置文件权限 stat-c%a %U:%G /etc/redis/redis.conf # 应为640 redis:redis # 检查数据目录权限 stat-c%a %U:%G /var/lib/redis/ # 应为750 redis:redis # 检查是否启用内存淘汰策略 redis-cli CONFIG GET maxmemory-policy # 生产环境应为volatile-lru或allkeys-lru不能是noeviction # 检查是否启用Lazy Free避免阻塞 redis-cli CONFIG GET lazyfree-lazy-eviction redis-cli CONFIG GET lazyfree-lazy-expire # 建议yes4.2 网络安全防护# 检查防火墙规则应限制访问源IP iptables -L-n-v|grep6379 firewall-cmd --zoneinternal --list-ports # CentOS/RHEL ufw status numbered |grep6379# Ubuntu # 检查是否使用VPN/专线访问 netstat-tn|grep6379|awk{print $5}|cut -d: -f1|sort|uniq-c|sort-rn # 检查是否启用TCP backlog redis-cli CONFIG GET tcp-backlog # 建议511或更高 # 检查是否禁用TCP_NODELAY根据业务 redis-cli CONFIG GET tcp-nodelay # 默认yes高频小数据包场景建议no # 检查是否启用客户端输出缓冲区限制 redis-cli CONFIG GET client-output-buffer-limit # 应设置normal slave pubsub三类限制五、恶意代码防范8.1.4.5控制项测评命令达标判据文件完整性md5sum /usr/bin/redis-server与官方发布值比对模块安全redis-cli MODULE LIST仅加载可信模块数据文件扫描clamscan /var/lib/redis/定期扫描Redis恶意代码防范核查# 检查已加载模块防止恶意模块 redis-cli MODULE LIST # 检查模块路径应限制加载路径 cat /etc/redis/redis.conf |grep-iloadmodule # 验证Redis二进制文件完整性 md5sum /usr/bin/redis-server sha256sum /usr/bin/redis-server # 与官方发布值比对https://download.redis.io/releases/ # 检查数据文件是否被篡改RDB/AOF md5sum /var/lib/redis/dump.rdb ls-la /var/lib/redis/ |grep-Edump.rdb|appendonly.aof # 使用杀毒软件扫描数据目录 clamscan -r /var/lib/redis/ 2/dev/null ||echoClamAV未安装 # 检查是否启用病毒扫描后置处理如有 cat /etc/redis/redis.conf |grep-inotify六、可信验证8.1.4.6控制项测评命令达标判据启动文件完整性debsums redis-server或rpm -V redis无文件被篡改配置签名验证gpg --verify redis.tar.gz.asc官方签名验证通过运行时完整性ps aux | grep redis进程哈希与安装包一致Redis可信验证核查# 验证安装包完整性Debian/Ubuntu debsums -s redis-server 2/dev/null ||echodebsums未安装或包未校验 # 验证安装包完整性RHEL/CentOS rpm-V redis 2/dev/null ||echo验证失败或未安装 # 检查Redis二进制文件签名如从源码编译 which redis-server file /usr/bin/redis-server # 验证配置文件未被篡改对比基线 cat /etc/redis/redis.conf | md5sum # 与基线配置文件比对 # 检查是否使用可信源安装 apt-cache policy redis-server # Debian/Ubuntu yum info redis # RHEL/CentOS # 检查是否启用安全启动Secure Boot相关 mokutil --sb-state 2/dev/null七、数据备份与恢复8.1.4.9控制项测评命令达标判据RDB自动备份cat /etc/cron.d/redis-backup每日/每小时自动备份AOF持久化redis-cli CONFIG GET appendonlyyes开启AOF异地备份ls -la /backup/redis/存在异地备份恢复测试redis-check-rdb /backup/dump.rdb备份文件可正常校验Redis备份与恢复核查# 查看持久化配置 redis-cli INFO persistence # 手动触发RDB备份 redis-cli BGSAVE redis-cli LASTSAVE # 查看最后一次保存时间戳 date-d $(redis-cli LASTSAVE) # 检查RDB文件完整性 redis-check-rdb /var/lib/redis/dump.rdb echo$?# 应为0 # 检查AOF文件完整性 redis-check-aof /var/lib/redis/appendonly.aof echo$?# 应为0 # 查看备份脚本 cat /etc/cron.d/redis-backup 2/dev/null ||crontab-l|grep redis # 检查备份目录及保留策略 ls-la /backup/redis/ 2/dev/null |head-10 find /backup/redis/ -name*.rdb-mtime 7 # 检查7天前备份是否清理 # 测试恢复流程在测试环境 # cp /backup/redis/dump-$(date %F).rdb /var/lib/redis/dump.rdb # redis-cli CONFIG SET dir /var/lib/redis # redis-cli DEBUG RELOAD八、高可用与集群安全扩展8.1 Redis Sentinel高可用# 查看Sentinel配置 cat /etc/redis/sentinel.conf |grep-E^(sentinel|bind|port) # 检查Sentinel密码 redis-cli -p26379 INFO sentinel redis-cli -p26379 SENTINEL masters # 检查Sentinel自动故障转移 redis-cli -p26379 SENTINEL get-master-addr-by-name mymaster # 查看Sentinel日志 tail-n50 /var/log/redis/redis-sentinel.log8.2 Redis Cluster集群# 查看集群节点 redis-cli CLUSTER NODES # 检查集群状态 redis-cli CLUSTER INFO |grep-Ecluster_state|cluster_slots_assigned # 查看数据分布 redis-cli CLUSTER SLOTS |head-20 # 检查集群密码所有节点应一致 fornodein$(redis-cli CLUSTER NODES |awk{print $2}|cut -d: -f1|sort|uniq);do echo $node redis-cli -h$node CONFIG GET requirepass done一键巡检脚本Redis#!/bin/bash # Redis 等保三级一键巡检脚本 # 适用Redis 6.x / 7.x # 执行用户root 或 redis用户 echo 1 身份鉴别 echo--- 密码认证配置 --- redis-cli CONFIG GET requirepass echo--- 绑定地址 --- redis-cli CONFIG GET bind echo--- 端口配置 --- redis-cli CONFIG GET port echo--- 保护模式 --- redis-cli CONFIG GET protected-mode echo--- 连接超时 --- redis-cli CONFIG GET timeout echo echo 2 访问控制 echo--- ACL用户列表Redis 6.0--- redis-cli ACL USERS 2/dev/null ||echoRedis版本低于6.0未启用ACL echo--- 危险命令重命名 --- cat /etc/redis/redis.conf 2/dev/null |greprename-command||echo未配置rename-command echo--- 当前连接数 --- redis-cli INFO clients |grep connected_clients echo echo 3 安全审计 echo--- 日志级别 --- redis-cli CONFIG GET loglevel echo--- 日志文件 --- redis-cli CONFIG GET logfile echo--- 慢查询配置 --- redis-cli CONFIG GET slowlog-log-slower-than redis-cli SLOWLOG GET 52/dev/null |head-10 echo--- ACL审计日志6.0--- redis-cli ACL LOG 52/dev/null |head-10||echo未启用ACL或版本过低 echo echo 4 入侵防范 echo--- Redis版本 --- redis-cli INFO server |grep redis_version echo--- 运行用户 --- ps aux |grep redis-server |grep-vgrep|awk{print $1}|sort|uniq echo--- 内存限制 --- redis-cli CONFIG GET maxmemory redis-cli CONFIG GET maxmemory-policy echo--- 危险命令检查 --- cat /etc/redis/redis.conf 2/dev/null |grep-Erename-command (FLUSHALL|FLUSHDB|CONFIG|DEBUG)||echo未禁用高危命令 echo echo 5 数据备份 echo--- 持久化配置 --- redis-cli CONFIG GET save redis-cli CONFIG GET appendonly echo--- RDB文件状态 --- redis-cli INFO persistence |grep-Erdb_last_bgsave_status|rdb_last_save_time echo--- 备份文件检查 --- ls-la /var/lib/redis/dump.rdb 2/dev/null ||echoRDB文件不存在 ls-la /backup/redis/ 2/dev/null |head-5||echo备份目录不存在 echo echo 6 网络安全 echo--- 监听端口 --- ss -tulnp|grep redis-server echo--- 防火墙规则 --- iptables -L-n|grep63792/dev/null ||echo未配置iptables echo echo 巡检完成 高风险项重点核查清单检查项验证命令不合规判定整改建议无密码认证redis-cli CONFIG GET requirepass返回空字符串立即设置强密码绑定0.0.0.0redis-cli CONFIG GET bind包含0.0.0.0修改为具体内网IP高危命令未禁用cat /etc/redis/redis.conf | grep rename-command未配置FLUSHALL/CONFIG等重命名添加rename-command禁用或重命名root用户运行ps aux | grep redis存在root运行的redis创建redis专用用户无持久化配置redis-cli CONFIG GET save返回空或配置RDB自动保存策略无内存限制redis-cli CONFIG GET maxmemory返回0设置maxmemory为物理内存70%默认端口暴露redis-cli CONFIG GET port返回6379修改为非常用端口无连接超时redis-cli CONFIG GET timeout返回0设置300-600秒超时配置文件权限过宽stat /etc/redis/redis.conf权限大于644修改为640未启用AOFredis-cli CONFIG GET appendonly返回no开启AOF持久化Redis版本差异对照功能项Redis 5.xRedis 6.xRedis 7.xACL支持无完整ACL增强ACLselectorsSSL/TLS无原生支持增强性能多线程IO无无启用io-threads新协议RESP2RESP3可选RESP3默认集群管理手动手动自动分片改进等保合规需大量加固基础合规完整合规国密支持无需编译部分支持测评执行要点1. 权限要求所有命令需redis-cli可执行权限配置文件需root或redis用户权限读取2. 现场核查重点密码策略检查requirepass是否为弱口令如123456、redis等网络隔离确认Redis仅监听内网IP无公网暴露命令禁用必须禁用FLUSHALL、CONFIG、DEBUG等高危命令持久化策略RDB和AOF至少启用一种且备份文件权限正确3. 版本差异注意Redis 6.0以下无ACL功能需通过requirepass 网络隔离实现访问控制Redis 6.0必须使用ACL实现细粒度权限控制废弃requirepassRedis 7.0支持selectors实现更复杂的权限规则常用命令速查# 连接与信息 redis-cli -hhost-pport-apassword INFO redis-cli PING # 测试连通性 redis-cli MONITOR # 实时监控慎用性能影响大 # 配置管理 redis-cli CONFIG GET parameter redis-cli CONFIG SET parametervalue redis-cli CONFIG REWRITE # 持久化当前配置到文件 # 数据操作 redis-cli INFO keyspace # 查看Key统计 redis-cli DBSIZE # 当前库Key数量 redis-cli SCAN 0 COUNT 100# 安全遍历Key替代KEYS * # 客户端管理 redis-cli CLIENT LIST # 查看所有连接 redis-cli CLIENT KILL ip:port# 断开指定连接 redis-cli CLIENT PAUSE 30000# 暂停客户端30秒 # 持久化 redis-cli SAVE # 同步保存RDB阻塞 redis-cli BGSAVE # 异步保存RDB redis-cli BGREWRITEAOF # 重写AOF文件 # 集群管理 redis-cli CLUSTER NODES redis-cli CLUSTER INFO redis-cli CLUSTER FAILOVER # 手动故障转移参考标准GB/T 22239-2019、GB/T 28448-2019、Redis Security Guide、CIS Redis Benchmark适用版本Redis 6.2.x / 7.0.x / 7.2.x验证环境Standalone / Sentinel / Cluster 模式