警惕

前一篇文章《Spring+SpringMVC+MyBatis+easyUI整合進階篇(九)Linux下安裝redis及redis的常用命令和操作》主要是一個簡單的介紹,針對redis入門和安裝及命令行簡單的使用,雖然已經正常啟動和使用,但是由于所有的設置都沒有做任何改動,使用的是默認設置,默認端口、默認免密......其實目前狀態下的redis相當于是一個裸奔的服務,多多少少是有一些安全性方面的缺陷,如果被一些別有用心的人掃描到或者攻擊到還是比較麻煩的。

redis密碼設置

第一種方式:通過命令行設置

pass-set-cli

//首先通過```redis-cli```進入redis,如果沒有啟動redis的話則需要先啟動redis服務:
redis-cli 
//查看當前redis有沒有設置密碼:
127.0.0.1:6379> config get requirepass
1) "requirepass"
2) ""
//requirepass參數為空,即未設置密碼,重新設置密碼為123:
127.0.0.1:6379> config set requirepass 123
OK
//設置之后再去操作會報錯:無權限
127.0.0.1:6379> get author
(error) NOAUTH Authentication required.
127.0.0.1:6379> info
NOAUTH Authentication required.

//auth + 密碼用來驗證,授權通過則可以進行正常操作:
127.0.0.1:6379> auth 123
OK
127.0.0.1:6379> get author
(nil)
127.0.0.1:6379> info
# Server
redis_version:4.0.2
redis_git_sha1:00000000
redis_git_dirty:0
redis_build_id:5e81d0ebc9709a8a

但是這種方式有個缺點,當前配置redis密碼的方法是臨時的不會永久有效,如果redis重啟之后密碼就會失效。

第二種方式:修改redis.conf文件

#requirepass

默認配置中,requirepass是被注釋的。

修改redis.conf配置文件

# requirepass foobared
requirepass 123   //指定密碼123

pass-set-conf

希望配置密碼永久不失效的話,則需要redis的配置文件redis.conf中找到并修改requirepass參數,保存后重啟redis服務即可,密碼不會再因為重啟而失效了。

由于redis并發能力極強,僅僅只是設置密碼也是不夠的,攻擊者可能在短期內發送大量猜密碼的請求很容易暴力破解,所以建議密碼強度越高越好,密碼在配置文件里是明文顯示,所以不用擔心自己會忘記。

redis默認端口修改

在服務器安裝的一些服務,往往都有一個默認端口,而redis的默認端口則是6379,通常我在安裝了一些軟件后會修改其默認端口,比如mysql的3306端口、svn的3690端口或者其他的一些默認設置,我都會稍加修改一下,這個是個人習慣而已,可以不做參考。

port

打開redis的配置文件redis.conf,找到port設置項,將6379改為想要修改的端口,重啟即可。

禁止高危命令的隨意使用

rename-command FLUSHALL redisflushall   # 重命名FLUSHALL命令  
rename-command FLUSHALL ""  # 禁用FLUSHALL命令  

類似的命令還有CONFIG和EVAL等。

總結

本文是關于redis安全性的個人總結:

  • 密碼設置是一定要做的。
  • 至于一些高危命令也建議多加留意,不要隨意執行。
  • 而默認端口的修改則根據個人喜好或者項目組的要求了,不是一定要做。

首發于我的個人博客,新的項目演示地址:perfect-ssm,登錄賬號:admin,密碼:123456 如果有問題或者有一些好的創意,歡迎給我留言,也感謝向我指出項目中存在問題的朋友。

如果你想繼續了解該項目可以查看整個系列文章Spring+SpringMVC+MyBatis+easyUI整合系列文章,也可以到我的GitHub倉庫或者開源中國代碼倉庫中查看源碼及項目文檔。