且构网

分享程序员开发的那些事...
且构网 - 分享程序员编程开发的那些事

一个致命的 Redis 命令,导致公司损失 400 万!!

更新时间:2022-04-28 12:55:15

最近安全事故濒发啊,前几天发生了《顺丰高级运维工程师的删库事件》,今天又看到了 PHP 工程师在线执行了 Redis 危险命令导致某公司损失 400 万。。

什么样的 Redis 命令会有如此威力,造成如此大的损失?

具体消息如下:


一个致命的 Redis 命令,导致公司损失 400 万!!

看完这个消息后,我心又一惊,为什么这么低级的问题还在犯?为什么线上的危险命令没有被禁用?这事件报道出来真是觉得很低级。。。

且不说是哪家公司,发生这样的事故,不管是大公司还是小公司,我觉得都不应该,相关负责人应该引咎辞职!!!

对 Redis 稍微有点使用经验的人都知道线上是不能执行keys *相关命令的,虽然其模糊匹配功能使用非常方便也很强大,在小数据量情况下使用没什么问题,数据量大会导致 Redis 锁住及 CPU 飙升,在生产环境建议禁用或者重命名!

还有哪些危险命令?

Redis 的危险命令主要有以下几个:

keys

客户端可查询出所有存在的键。

flushdb


一个致命的 Redis 命令,导致公司损失 400 万!!

删除 Redis 中当前所在数据库中的所有记录,并且此命令从不会执行失败。

flushall


一个致命的 Redis 命令,导致公司损失 400 万!!

删除 Redis 中所有数据库中的所有记录,不只是当前所在数据库,并且此命令从不会执行失败。

config

客户端可修改 Redis 配置。

怎么禁用或重命名危险命令?

看下redis.conf默认配置文件,找到SECURITY区域,如以下所示。


一个致命的 Redis 命令,导致公司损失 400 万!!

看说明,添加rename-command配置即可达到安全目的。

1)禁用命令


一个致命的 Redis 命令,导致公司损失 400 万!!

2)重命名命令


一个致命的 Redis 命令,导致公司损失 400 万!!

上面的 XX 可以定义新命令名称,或者用随机字符代替。

经过以上的设置之后,危险命令就不会被客户端执行了。

欢迎工作一到五年的Java工程师朋友们加入Java架构开发:860113481

群内提供免费的Java架构学习资料(里面有高可用、高并发、高性能及分布式、Jvm性能调优、Spring源码,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多个知识点的架构资料)合理利用自己每一分每一秒的时间来学习提升自己,不要再用"没有时间“来掩饰自己思想上的懒惰!趁年轻,使劲拼,给未来的自己一个交代!

原文地址:https://mp.weixin.qq.com/s/qqDNoQVbyupm3TiJ_KasSA