Redis密码设置,禁止外网无密码访问

Redis 默认安装后监听所有网卡且没有密码,一旦服务器安全组或防火墙放行 6379 端口,任何人都可能直接读写你的数据。
本文面向零基础用户,讲清 Redis 密码设置和禁止外网无密码访问的完整操作,完成后你可以通过本机连接、远程拒绝和密码校验三个结果来确认配置真正生效。

先确认当前 Redis 是否裸奔

操作前先看清现状,避免改错文件或漏掉监听地址。

  • 查看 Redis 进程和配置文件路径:
ps -ef | grep redis
redis-cli CONFIG GET bind
redis-cli CONFIG GET requirepass

如果 bind 返回 0.0.0.0*,说明监听了所有网卡;requirepass 返回空,说明没有密码。

  • 检查端口暴露情况:
ss -tlnp | grep 6379

若显示 0.0.0.0:6379*:6379,同时云服务器安全组放行了 6379,外网就可能直接访问。

  • 确认配置文件位置,常见路径为 /etc/redis/redis.conf/etc/redis/6379.conf,以 ps -ef 输出中的实际路径为准。

设置密码并限制监听地址

核心思路是两步:加密码、只允许本机或内网访问。

修改 redis.conf

用编辑器打开配置文件:

sudo vi /etc/redis/redis.conf

找到并修改以下参数,没有就手动添加:

bind 127.0.0.1
protected-mode yes
requirepass 你的高强度密码

说明:

  • bind 127.0.0.1 表示只允许本机连接,这是禁止外网访问最直接的方式。
  • protected-mode yes 在未设置密码且未绑定地址时提供保护,建议保持开启。
  • requirepass 后面跟密码,建议使用大小写字母、数字和符号组合,不要用 123456 这类弱口令。

如果应用服务器和 Redis 不在同一台机器,不能只绑 127.0.0.1,应改成内网 IP,例如:

bind 127.0.0.1 10.0.0.5

然后通过防火墙只放行内网网段,不要直接暴露公网。

重启 Redis 并测试

sudo systemctl restart redis
redis-cli ping

未带密码时预期返回 NOAUTH Authentication required,说明密码已生效。

带密码连接:

redis-cli -a 你的高强度密码 ping

预期返回 PONG

防火墙和安全组也要一起收紧

只改 Redis 配置还不够,云服务器安全组和系统防火墙是第二道门。

  • 云服务器控制台:检查安全组入方向规则,删除或禁用 63790.0.0.0/0 的放行。如果必须远程访问,来源限制为指定内网 IP 或办公 IP。
  • 系统防火墙(以 firewalld 为例):
sudo firewall-cmd --permanent --remove-port=6379/tcp
sudo firewall-cmd --reload
  • 使用 ufw 的系统:
sudo ufw deny 6379/tcp
sudo ufw reload

判断条件:如果 Redis 只被本机应用使用,监听地址和防火墙都应禁止外部 6379 访问;
如果确实需要跨机访问,优先走内网并配合密码,不要图省事直接对公网开放。

修改配置时容易踩的坑

  • 改错配置文件:服务器上可能存在多个 redis.conf,以进程实际加载的路径为准。
  • 忘记重启:修改 requirepass 后不重启或不用 CONFIG SET 生效,密码不会起作用。
  • 只加密码不限制来源:密码能挡住一部分扫描,但把 6379 暴露在公网仍会持续被尝试爆破,绑定地址和防火墙更关键。
  • 密码写在命令行历史:redis-cli -a 可能被记录,生产环境可改用 REDISCLI_AUTH 环境变量或交互式 AUTH
  • 主从或集群场景:主从之间需要同步密码时,要在配置中正确设置 masterauth,否则同步会失败。

验证是否真的禁止了外网无密码访问

在本机执行:

redis-cli ping

预期返回 NOAUTH Authentication required

带密码执行:

redis-cli -a 你的高强度密码 ping

预期返回 PONG

从另一台外网机器尝试连接:

telnet 你的服务器公网IP 6379

预期连接失败或超时。
如果仍能连通,说明安全组、防火墙或 bind 还有一处没改到位。

只要本机需要密码、外网无法直连、带密码能正常读写,就说明 Redis 密码设置和禁止外网无密码访问已经生效。

常见疑问

设置了 requirepass 后,原来的应用连不上怎么办?
需要在应用连接配置中补上密码,例如 PHP 的 auth 参数、Java 连接池的 password 字段,改完重启应用。

能不能只用密码,不绑定 127.0.0.1?
可以,但不推荐。密码是认证手段,绑定地址和防火墙才是访问控制,两者叠加更稳妥。

Redis 6 及以上还需要额外注意什么?
Redis 6 引入了 ACL 用户体系,可以用 ACL SETUSER 创建权限更细的用户。是否启用建议以你实际版本和官方文档为准,基础密码和网络限制仍然要做。

如果你正在处理 Redis 密码设置和禁止外网无密码访问,建议先按本文顺序改配置、重启、查安全组,再用本机和外网各验证一次,确认无误后再做其他优化。

分享到:
上一篇
Redis持久化RDB与AOF两种模式对比选型
下一篇
Linux查看端口占用,定位占用端口进程
1
系统公告

机房迁移升级通知

尊敬的用户: IP 段 103.23.148.x、156.224.29.x 原香港一区线路波动、攻击频繁,平台定于 7 月 5 日凌晨分批迁移至香港 GIA 机房,硬件升级 AMD 铂金机型。 迁移均在凌晨操作,最大程度降低业务影响,迁移期间服务器临时关机; 升级后配置不降低、费用不涨价,数据默认同步迁移; 迁移后 IP 全部更换,请及时修改域名解析、防火墙白名单; 建议提前备份重要数据,有问题可联系在线客服。 感谢理解与支持! 泽御云科技 2026.06.30
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意