以下是关于 Redis 安全机制 的系统讲解,涵盖认证机制、网络隔离、安全配置、访问控制、常见攻击防护与最佳实践,适用于需要部署在生产环境中并确保高安全性的 Redis 服务。


📚 目录

  1. Redis 安全风险概述
  2. 密码认证机制(AUTH)
  3. 访问控制列表(ACL)
  4. 网络访问安全配置
  5. 常见 Redis 攻击类型及防护
  6. 安全加固最佳实践
  7. 参考资料

🧠 Redis 安全风险概述

Redis 默认安全性较弱,存在以下风险:

风险类型描述
未授权访问默认无密码保护,监听 0.0.0.0 时易被远程攻击
命令滥用高危命令如 FLUSHALLCONFIG 可被恶意使用
持久化攻击利用 SLAVEOF + CONFIG SET 实现远程命令执行
AOF 注入AOF 文件被写入恶意命令,重启 Redis 时执行
数据泄露明文数据被抓包或非法访问读取

🔐 密码认证机制(AUTH)

开启密码认证

在配置文件 redis.conf 中设置:

requirepass yourStrongPassword123!

客户端连接后必须执行:

AUTH yourStrongPassword123!

注意事项

  • 密码强度高,建议 16 位以上随机字符串
  • 可结合防火墙/IP 限制,避免暴露端口

👤 访问控制列表(ACL)

Redis 6.0 起支持多用户与 ACL 机制,增强细粒度权限控制。

创建用户与权限控制

# 创建只读用户
ACL SETUSER readonly_user on >readonlypass ~* +get +exists

# 创建写用户(无删除权限)
ACL SETUSER writer on >writerpass ~* +set +incr -del

命令说明:

  • on/off:启用/禁用用户
  • >:设置密码
  • ~*:允许访问所有 key
  • +command / -command:允许/禁用命令

查看用户权限

ACL LIST
ACL GETUSER readonly_user


🌐 网络访问安全配置

限制监听地址

仅监听本地接口(默认):

bind 127.0.0.1

如需开放远程访问,建议配合防火墙、VPN 等手段,并启用认证。

配置保护模式

protected-mode yes

开启时:若未配置密码且绑定了非 localhost,则拒绝远程访问。

修改默认端口(可选)

port 6379 → port 6380

虽然不能彻底防御,但能避开扫描脚本。


🔥 常见 Redis 攻击类型及防护

攻击类型描述防护措施
未授权访问攻击者远程登录设置 requirepass,限制 bind,开启 protected-mode
命令注入恶意使用 CONFIG SET设置 ACL,禁用敏感命令
AOF 持久化注入写入恶意 Lua 脚本禁用 SCRIPT LOAD,定期检查 AOF 文件
扫描攻击扫描默认端口 6379修改端口,部署防火墙、Fail2Ban
数据嗅探网络传输被监听使用 Stunnel、SSH Tunnel 实现加密传输

🛡️ 安全加固最佳实践

✅ 基本配置

  • requirepass 强密码
  • bind 127.0.0.1 或指定受信主机 IP
  • protected-mode yes
  • rename-command 重命令高危命令如: rename-command CONFIG "" rename-command FLUSHALL ""

✅ 使用 ACL 控制权限

  • 每个应用使用独立 Redis 用户
  • 最小权限原则

✅ 限制持久化与动态配置

  • 禁用 CONFIGSLAVEOFrename-command CONFIG "" rename-command SLAVEOF ""

✅ 加密传输(TLS)

Redis 6.0+ 支持内置 TLS:

tls-port 6379
tls-cert-file /path/to/cert.pem
tls-key-file /path/to/key.pem

客户端需支持 TLS(如 redis-cli、rediss://)

✅ 审计与监控

  • 启用日志:loglevel notice
  • 配置慢日志监控:slowlog-log-slower-than + slowlog-max-len
  • 配合 Fail2Ban 阻止暴力破解行为

📎 参考资料


如你正在构建 Redis 安全体系或希望使用 Ansible、Dockerfile 自动化配置 Redis 安全参数,我可以进一步为你生成完整脚本。是否需要我帮你生成一份适合生产环境的 Redis 安全配置模板?