Redis 未授权访问漏洞怎么修复配置 bind 与密码

文章导读
修复 Redis 未授权访问漏洞最推荐的做法是将 bind 地址限制为 127.0.0.1 并设置高强度 requirepass 密码。此方案适用于大多数单机或非集群直连场景,风险边界在于修改 bind 后外部业务客户端将无法连接,需同步更新客户端配置。
📋 目录
  1. A 命令速用版
  2. B 为什么会这样
  3. C 分步处理
  4. D 怎么验证是否生效
  5. E 常见坑
  6. F 常见问题
  7. G 参考来源
A A

修复 Redis 未授权访问漏洞最推荐的做法是将 bind 地址限制为 127.0.0.1 并设置高强度 requirepass 密码。此方案适用于大多数单机或非集群直连场景,风险边界在于修改 bind 后外部业务客户端将无法连接,需同步更新客户端配置。

先说结论:修复核心在于网络隔离与身份认证双重加固,仅改密码或仅改 bind 都存在被绕过的风险。

  • 先判断:确认 Redis 是否暴露在公网,使用 netstat 检查监听地址是否为 0.0.0.0
  • 优先做:修改 redis.conf 配置文件,同时设置 bind 127.0.0.1 和 requirepass 强密码
  • 再验证:重启服务后,使用 redis-cli 不带密码连接应失败,带密码连接应成功

命令速用版

以下是临时生效和永久生效的关键命令,生产环境建议直接修改配置文件以避免重启后失效。

Redis 未授权访问漏洞怎么修复配置 bind 与密码
# 查看当前 bind 配置
redis-cli CONFIG GET bind

# 查看当前密码配置
redis-cli CONFIG GET requirepass

# 临时设置密码(重启失效)
redis-cli CONFIG SET requirepass \"YourStrongPassword\"

# 临时绑定 IP(重启失效)
redis-cli CONFIG SET bind 127.0.0.1

为什么会这样

Redis 默认配置为了开发便利性,往往监听所有网卡且无密码,暴露在公网极易被扫描利用。官方安全建议明确指出,未授权的 Redis 实例允许攻击者直接读取数据、写入定时任务甚至获取服务器权限。

分步处理

  1. 备份配置文件:找到 redis.conf 路径,执行 cp redis.conf redis.conf.bak 防止配置错误无法启动。
  2. 修改 bind 配置:搜索 bind 项,改为 bind 127.0.0.1,若需局域网访问可绑定内网 IP。
  3. 设置密码:搜索 requirepass 项,取消注释并设置复杂字符串,建议包含大小写字母和符号。
  4. 重启服务:执行 systemctl restart redis 或 service redis restart 使配置永久生效。

怎么验证是否生效

验证分为连通性测试和鉴权测试,确保未授权无法访问且授权后可正常操作。

# 不带密码连接,应返回 DENIED 或连接被拒绝
redis-cli ping

# 带密码连接,应返回 PONG
redis-cli -a YourStrongPassword ping

# 检查监听端口
netstat -tlnp | grep 6379

常见坑

  • 配置不持久:使用 CONFIG SET 修改的配置重启后会还原,必须修改 redis.conf 文件。
  • Protected Mode:Redis 3.2+ 默认开启保护模式,若未设密码且绑定 0.0.0.0 会拒绝外部连接,但这不能替代密码加固。
  • 容器环境:Docker 部署需通过 -bind 参数或配置文件挂载修改,仅改宿主机防火墙可能无效。

常见问题

只设置密码不修改 bind 可以吗?

不建议,弱密码可能被爆破,且网络层面未隔离仍暴露攻击面。

Redis 未授权访问漏洞怎么修复配置 bind 与密码

修改 bind 后业务连接失败怎么办?

检查业务服务器 IP 是否在 bind 允许列表中,需改为绑定内网 IP 或通过 SSH 隧道转发。

忘记密码如何重置?

若无法认证,需停止 Redis 服务,注释 requirepass 行后重启,重置后再重新设置。

参考来源

  • Redis Official Documentation, Security, https://redis.io/docs/management/security/