Redis 未授权访问漏洞如何修复及设置强密码配置步骤?

文章导读
修复 Redis 未授权访问漏洞最稳妥的方式是同时启用访问密码、限制绑定 IP 并通过防火墙关闭公网端口,适用于绝大多数生产环境。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 参考来源
A A

修复 Redis 未授权访问漏洞最稳妥的方式是同时启用访问密码、限制绑定 IP 并通过防火墙关闭公网端口,适用于绝大多数生产环境。

先说结论:单纯设置密码不够,必须配合网络隔离,优先修改配置文件并重启服务以确保配置持久化。

  • 先判断:确认 Redis 是否暴露在公网,检查当前是否已设置密码。
  • 优先做:修改 redis.conf 设置 requirepass 和 bind 参数,配置安全组规则。
  • 再验证:使用 redis-cli 测试无密码登录是否被拒绝,确认业务连接正常。

命令速用版

# 临时设置密码(重启失效,仅用于紧急止血)
CONFIG SET requirepass "YourStrongPassword"

# 查看当前绑定 IP
CONFIG GET bind

# 测试带密码连接
redis-cli -a "YourStrongPassword" ping

为什么会这样

Redis 设计初衷是面向受信内部网络的,默认配置往往不启用认证(requirepass 为空)且绑定所有接口(bind 0.0.0.0)。如果服务器防火墙未限制 6379 端口,攻击者可以直接连接数据库,执行 FLUSHALL 清空数据,或通过写入 SSH 公钥、定时任务等方式获取服务器控制权。公开资料中没有看到可靠的量化数据统计具体受害比例,但安全社区长期将其列为高危风险。

分步处理

1. 备份配置文件
在修改前务必备份,防止配置错误导致服务无法启动。

cp /etc/redis/redis.conf /etc/redis/redis.conf.bak

2. 设置强密码
编辑 redis.conf,找到 requirepass 配置项,取消注释并设置复杂密码。密码应包含大小写字母、数字和符号,长度建议 12 位以上。

Redis 未授权访问漏洞如何修复及设置强密码配置步骤?
requirepass "YourStrongPassword"

3. 限制绑定 IP
如果 Redis 只供本机使用,将 bind 改为 127.0.0.1。如果需要局域网访问,绑定内网 IP。

bind 127.0.0.1

4. 配置防火墙
在云服务器安全组或系统防火墙(如 iptables、firewalld)中,禁止公网 IP 访问 6379 端口。

5. 重启服务
修改配置文件后需要重启生效。

Redis 未授权访问漏洞如何修复及设置强密码配置步骤?
systemctl restart redis

怎么验证是否生效

1. 验证无密码访问被拒
在不提供密码的情况下连接,应返回错误提示。

redis-cli ping
# 预期返回:(error) NOAUTH Authentication required.

2. 验证有密码访问成功
使用正确密码连接,应返回 PONG。

redis-cli -a "YourStrongPassword" ping
# 预期返回:PONG

3. 检查网络监听
使用 netstat 或 ss 确认端口监听地址是否符合预期。

ss -tlnp | grep 6379
# 预期看到 127.0.0.1:6379 而非 0.0.0.0:6379

常见坑

1. 命令行历史泄露密码
在命令行直接输入密码会被记录在 history 文件中,建议操作后清理或使用环境变量。

Redis 未授权访问漏洞如何修复及设置强密码配置步骤?

2. 主从复制认证
如果搭建了主从架构,从节点配置中也需要设置 masterauth,否则同步会失败。

3. 配置文件路径差异
不同安装方式(源码、yum、apt)的配置文件路径可能不同,常见于 /etc/redis/ 或 /usr/local/etc/,修改前请确认。

4. Protected 模式
Redis 3.2+ 引入了 protected-mode,当没有设置密码且绑定公网 IP 时会拒绝外部连接,但这不能替代密码和防火墙。

参考来源

  • Redis 官方文档,Security 章节,https://redis.io/docs/
  • CIS Redis Benchmark,配置建议部分