redis未授权访问防护,设置密码

Redis未授权访问是服务器被入侵的高发原因之一。
默认配置下Redis不需要密码即可连接,如果6379端口直接暴露在公网,攻击者通过一条命令就能读写你的数据,甚至写入定时任务拿到服务器权限。
本文会从零开始,教你通过设置密码、绑定内网地址、关闭危险命令和防火墙规则四层防护,彻底解决这个问题。
整个过程不依赖图形界面,SSH登录服务器即可完成,适合所有Linux发行版。

加固前先确认现状

动手之前,先看看当前Redis是否处于裸奔状态。
登录服务器后执行下面两条命令:

ps -ef | grep redis
netstat -anp | grep 6379

第一条命令确认Redis进程存在,第二条命令查看6379端口监听情况。
如果第二行输出中有 0.0.0.0:6379*:6379,说明Redis正在监听所有网卡,公网IP可以直接访问,这就是典型的未授权访问风险。

第一步:修改Redis配置文件设置密码

Redis的配置文件通常位于 /etc/redis/redis.conf,或 /etc/redis.conf
使用 vim 打开:

vim /etc/redis/redis.conf

找到被注释掉的 # requirepass foobared 这一行,按 i 进入编辑模式,去掉 # 并把默认值改成一个强密码:

requirepass 这里改成你的强密码

密码建议使用字母、数字、特殊符号混合,长度超过16位。
改完后保存退出(Esc,输入 :wq)。

同时把监听地址改为只允许本机和内网访问,找到 bind 行,改成:

bind 127.0.0.1 内网IP

如果你不确定内网IP,可以先用 ip addr 命令查看。
如果只有一个网卡且不想有外网访问风险,直接写成 bind 127.0.0.1 最安全。
改完后重启Redis:

systemctl restart redis

重启后执行 systemctl status redis 确认启动正常。

第二步:用防火墙禁止外网访问6379端口

即使Redis配置了密码,也建议从网络层拦掉外网访问。
下面以 iptablesfirewalld 为例。

CentOS / RHEL 使用 firewalld:

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="内网IP" port port="6379" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" port port="6379" protocol="tcp" reject'
firewall-cmd --reload

上面第一条放行你的内网IP,第二条拒绝其他所有来源访问6379。
注意两条规则有顺序,先放行后拒绝。

Ubuntu / Debian 使用 ufw:

ufw allow from 内网IP to any port 6379 proto tcp
ufw deny 6379/tcp
ufw reload

如果服务器使用云厂商安全组,还需要登录云控制台,在安全组规则里删除或拒绝 0.0.0.0/0 对6379端口的入方向放行,只保留内网来源IP。

第三步:禁用危险命令和重命名高危指令

即使有密码,也建议关闭或重命名 FLUSHALLCONFIGEVAL 这类高危命令,防止密码泄露后数据被一键清空或配置被篡改。
在配置文件末尾追加:

rename-command CONFIG ""
rename-command FLUSHALL ""
rename-command FLUSHDB ""
rename-command EVAL ""

如果业务确实需要这些命令,可以把空引号改成自定义的名字,例如 rename-command FLUSHALL "mkredisflush",这样只有你知道。
修改后再次重启Redis。

常见疑问:未授权访问是怎么发生的

很多人以为Redis装在服务器上就安全,实际漏洞往往出在两点:一是Redis默认绑定 0.0.0.0,公网IP能直达;
二是配置文件里没有设置密码,老版本Redis甚至没有默认认证。
攻击者用 redis-cli -h 你的IP -p 6379 ping 检测,返回 PONG 就直接进来了。
所以上面三步缺一不可:密码保证认证,绑定内网缩小暴露面,防火墙兜底网络层。

验证加固效果

设置完后必须实际验证,不能只看配置。
先在本机测试密码认证:

redis-cli -h 127.0.0.1 -p 6379 ping

如果输出 NOAUTH Authentication required.,说明密码已生效。
带密码连接:

redis-cli -h 127.0.0.1 -p 6379 -a 你设置的密码 ping

输出 PONG 就代表认证通过。

再检查端口监听状态:

netstat -anp | grep 6379

确认监听地址里没有 0.0.0.0:6379
最后,拿着你的公网IP加上6379端口,用一个在线端口扫描工具或在自己的另一台电脑上执行 telnet 你的公网IP 6379,如果连接超时或提示拒绝,说明外网访问已被阻断。

最容易踩的几个坑

修改配置后忘记重启Redis。 配置不会自动生效,重启前先执行 redis-cli -a 密码 ping 确认当前状态,再 systemctl restart redis

bind 127.0.0.1 后本机连接正常,但内网其他机器连不上。 这是正常现象,因为Redis只监听了本机地址。
如果业务方需要从内网其他服务器访问,必须把 bind 改成服务器内网IP,并且防火墙放行该IP地址。

宝塔面板用户修改配置后重启失败。 宝塔的Redis配置文件在 /www/server/redis/redis.conf
并且面板有“是否启用密码保护”开关,
建议先用面板关闭保护再改配置文件,
避免权限冲突。

如果你正在处理Redis未授权访问防护、设置密码或禁止外网访问6379端口的问题,建议先完整执行本文前两步,再用第三步加固危险命令。
排查异常时优先检查配置文件和防火墙规则,Redis重启失败通常和 bindrename-command 语法有关,回看一下这两处就能快速定位。

分享到:
上一篇
API接口返回详细错误堆栈给公网,泄露代码路径信息关闭
下一篇
虚拟化平台Proxmox VE web管理口安全加固
1
系统公告

机房迁移升级通知

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