当前位置:首页 > 问答 > 正文

安全防护|权限管理 如何禁止Redis命令行执行,redis禁用命令执行的方法与配置

如何禁止Redis命令行执行?这些方法让你的数据库更安全

场景:半夜的报警短信

凌晨3点,运维小王的手机突然狂震——监控系统显示某台Redis服务器CPU飙到100%,他连滚带爬打开电脑,发现有人通过未授权访问连上Redis,正在用FLUSHALL清空数据,更糟的是,对方已经通过CONFIG SET修改了持久化配置……这种噩梦场景,其实可以通过禁用危险命令来避免。

为什么要禁用Redis命令?

Redis默认开放所有命令,就像把服务器root密码贴在公告栏上,高危操作如:

  • KEYS *:阻塞整个服务
  • FLUSHDB/FLUSHALL:瞬间清空数据
  • CONFIG:修改服务端参数
  • SHUTDOWN:直接关闭服务

实战禁用方法

方法1:配置文件封印术(推荐)

在redis.conf中加入:

rename-command FLUSHALL ""           # 彻底禁用命令
rename-command CONFIG "CONFIG-锁"    # 重命名命令(知道新命令才能用)

重启生效,支持通配符:

安全防护|权限管理 如何禁止Redis命令行执行,redis禁用命令执行的方法与配置

rename-command DEBUG "*禁用的命令*"  

方法2:运行时动态封杀

如果无法重启服务,用Redis自己锁死自己:

redis-cli CONFIG SET rename-command SHUTDOWN "NO_SHUTDOWN"

注意:这种方式重启后会失效,需配合持久化配置。

方法3:网络层隔离

更狠的做法是在防火墙层面封杀:

iptables -A INPUT -p tcp --dport 6379 -m string --algo bm --string "FLUSHALL" -j DROP

(适合已出现攻击时的紧急处置)

避坑指南

  1. 别把自己锁外面
    禁用CONFIG前,务必先测试重命名后的命令是否生效,否则可能连自己都无法修改配置。

    安全防护|权限管理 如何禁止Redis命令行执行,redis禁用命令执行的方法与配置

  2. 留个后门命令
    建议保留一个特殊命名权限命令供紧急使用,

    rename-command CONFIG "SUPERADMIN_123_CONFIG"
  3. 影响评估
    禁用KEYS可能影响某些老旧程序,改用SCAN替代;禁用SAVE会影响手动持久化。

终极防御组合拳

  1. 改默认端口:把6379改为非常用端口
  2. 绑定IPbind 127.0.0.1限制只允许本地访问
  3. 密码防护requirepass 复杂密码
  4. 定期备份:就算被删库也能快速恢复

根据2025年Redis安全报告,未禁用危险命令的实例平均存活时间不超过72小时就会遭到入侵,花10分钟配置,省下72小时加班救火,这买卖划算。

发表评论