Redis 安全审计实践指南
一 审计目标与总体思路
- 明确审计范围:覆盖认证与授权事件、配置变更、危险命令执行、网络与系统层访问、持久化与备份操作等关键行为。
- 分层落地:优先使用系统级审计(auditd)记录配置与关键文件访问;在Redis 6+用ACL细粒度划分用户与命令权限;通过慢查询日志与网络抓包/流量分析补充命令级与流量级审计;将日志集中到ELK/SIEM进行留存与告警。
二 系统级审计 auditd 记录配置与关键文件访问
- 安装与启动(以 CentOS/RHEL 为例):
- 安装:
yum -y install auditd
- 启动:
systemctl start auditd && systemctl enable auditd
- 定义规则(示例):
- 监控 Redis 配置文件变更:
auditctl -w /etc/redis/redis.conf -p wa -k redis-config-change
- 可按需增加:对 /var/lib/redis/(RDB/AOF 数据目录)、启动脚本、TLS 证书等的读写/属性监控
- 查询与报表:
- 按关键字检索:
ausearch -i -k redis-config-change
- 生成报告:
aureport -au | grep redis-config-change
- 说明:auditd 侧重系统调用与文件访问审计,适合追踪配置篡改、证书替换、数据目录异常访问等高风险事件。
三 Redis 内置能力 认证授权与日志
- 启用访问控制(ACL,Redis 6+ 推荐):
- 原则:为应用与运维创建最小权限用户;禁用或限制危险命令(如 FLUSHDB/FLUSHALL、CONFIG、MODULE、SLAVEOF/REPLICAOF、DEBUG、SHUTDOWN 等)。
- 示例:创建只读用户
ACL SETUSER appuser on >StrongPass ~cache:* +@read -@write -@dangerous
- 持久化与热加载:使用 aclfile 管理用户,执行
ACL LOAD 热加载,ACL SAVE 持久化,CONFIG REWRITE 写回配置文件。
- 日志与命令审计:
- 提升日志级别并加前缀,便于筛选审计事件:
loglevel notice、logprefix "[AUDIT] "
- 开启慢查询日志定位耗时/异常命令:
slowlog-log-slower-than 10000(单位微秒)、slowlog-max-len 128
- 注意:Redis 默认不提供“命令级审计日志”的专用开关,通常结合ACL 最小化授权、慢查询日志、应用层埋点与代理审计共同实现命令级可追溯。
四 网络流量与数据面审计 抓包与 RDB 分析
- 网络抓包与解析:
- 使用 Wireshark/tcpdump 抓取 Redis 端口(默认 6379)流量,过滤
tcp.port == 6379,将 PCAP 导入 Elasticsearch,用 Kibana 做会话与命令可视化与告警。
- RDB 定期解析与基线对比:
- 用 redis-rdb-tools 按频率解析 RDB,生成键空间与内存占用报告并入库,结合历史基线做异常增长/异常键识别与告警。
- 适用场景:对未授权访问尝试、异常读写模式、大 Key/热 Key等进行取证与风险识别。
五 合规与持续运营 加固与审计清单
- 基础加固(降低审计噪声与攻击面):
- 绑定与隔离:仅监听127.0.0.1或内网网段,配合 firewalld/iptables 限制来源;开启 protected-mode yes。
- 认证与加密:为所有非本地连接配置强密码/ACL;启用 TLS/SSL 保护传输链路。
- 最小权限:按业务划分用户与命令白名单,定期审计并回收过度授权。
- 日志与留存:
- 启用并记录认证成功/失败、配置变更、慢查询等关键事件;将 Redis 日志与 auditd 日志统一接入 ELK/SIEM,设置留存周期与归档策略。
- 验证与演练:
- 定期做合规核查与攻防演练(如用 Kali 的 nmap redis-info、redis-login 模块验证未授权风险),并对发现的问题闭环整改。