最近安全事故瀕發啊,前幾天發生了《順豐高級運維工程師的刪庫事件》,今天又看到了 PHP 工程師在線執行了 Redis 危險命令導致某公司損失 400 萬。。

什麼樣的 Redis 命令會有如此威力,造成如此大的損失?

具體消息如下:

看完這個消息後,我心又一驚,爲什麼這麼低級的問題還在犯?爲什麼線上的危險命令沒有被禁用?這事件報道出來真是覺得很低級。。。

且不說是哪家公司,發生這樣的事故,不管是大公司還是小公司,我覺得都不應該,相關負責人應該引咎辭職!!!

對 Redis 稍微有點使用經驗的人都知道線上是不能執行keys *相關命令的,雖然其模糊匹配功能使用非常方便也很強大,在小數據量情況下使用沒什麼問題,數據量大會導致 Redis 鎖住及 CPU 飆升,在生產環境建議禁用或者重命名!

還有哪些危險命令?

Redis 的危險命令主要有以下幾個:

keys

客戶端可查詢出所有存在的鍵。

flushdb

刪除 Redis 中當前所在數據庫中的所有記錄,並且此命令從不會執行失敗。

flushall

刪除 Redis 中所有數據庫中的所有記錄,不只是當前所在數據庫,並且此命令從不會執行失敗。

config

客戶端可修改 Redis 配置。

怎麼禁用或重命名危險命令?

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

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

1)禁用命令

2)重命名命令

上面的 XX 可以定義新命令名稱,或者用隨機字符代替。

經過以上的設置之後,危險命令就不會被客戶端執行了。

爲什麼某些人會一直比你優秀,是因爲他本身就很優秀還一直在持續努力變得更優秀,而你是不是還在滿足於現狀內心在竊喜! 關注我,私信回覆我“666"或者“Java架構"獲取免費的Java架構學習資料(裏面有高可用、高併發、高性能及分佈式、Jvm性能調優、Spring源碼,MyBatis,Netty,Redis,Kafka,Mysql,Zookeeper,Tomcat,Docker,Dubbo,Nginx等多個知識點的架構資料)合理利用自己每一分每一秒的時間來學習提升自己,不要再用"沒有時間“來掩飾自己思想上的懶惰!趁年輕,使勁拼,給未來的自己一個交代!

查看原文 >>
相關文章