[TOC]
1. redis 常規(guī)安全模式
redis被設計成僅有可信環(huán)境下的可信用戶才可以訪問鹉动。這意味著將redis實例直接暴露在網(wǎng)絡上或者讓不可信用戶直接訪問redis的是不安全的甚带。
==換句話說,redis不保證redis的安全乏梁,而是由使用者保證的笔宿。==
2. 網(wǎng)絡安全
在redis的配置文件中律姨,可以配置==bind==的ip,讓redis只接受綁定的ip的客戶端米苹。
一般來說限寞,如果redis需要禁止外部訪問,只需bind本地IP即可踪区。
bind 127.0.0.1
也可以綁定指定的網(wǎng)段:
bind 192.168.1.100 10.0.0.1
3. 輕量認證
在redis的配置文件中可以配置
requirepass password
來配置驗證密碼昆烁。
當配置了驗證密碼后,在開始執(zhí)行其他命令之前需要執(zhí)行auth <password>
來驗證缎岗。
使用config get requ*
獲取配置信息
發(fā)現(xiàn)有兩個返回静尼,分別是requirepass
和空,意思是传泊,requirepass現(xiàn)在的配置為空鼠渺,表示不啟用
使用config set requirepass mypassword
設置密碼是mypassword
然后我們退出客戶端,然后重新登錄
連接是沒有問題的眷细,但是卻無法執(zhí)行任何命令拦盹。
使用auth驗證通過后,才能執(zhí)行redis的命令溪椎。
但是這種方式也存在問題:
- 密碼在配置文件中是明文的普舆。
- redis的查詢速度非常快校读,所以沼侣,使用暴力破解是可能的
redis每秒可以嘗試15W的密碼,所以如果密碼長度比較短的話歉秫,很短時間就會被暴力破解蛾洛。
假設密碼是6位,那么全部的密碼組合共有(26+26+10+33)^6, 每一位密碼的可能性:大小寫字符雁芙,數(shù)字轧膘,可打印符號⊥酶剩總共6位谎碍。所以6位密碼總共有95^6種。
735 091 890 625 / 150000 = 4 900 612.6 秒 = 81 676.88 分 = 1361.28時 = 56.72天
看起來還不錯吧裂明,假設一個機器有4個核心椿浓,8線程。那么在一個機器上同時開8個客戶端闽晦,每個客戶端負責嘗試指定范圍的密碼組合。
56.72 / 8 = 7.09 天
如果有多臺機器提岔,那么速度會更快仙蛉。假設有100臺機器,每臺的機器配置都一樣:
7.09 / 100 = 15.696 分鐘
==你設置的密碼碱蒙,在強大的算力下荠瘪,只需15分鐘的時間就會被破解夯巷。==
當然,這只是理論上的哀墓,實際上還需要考慮網(wǎng)絡趁餐,多線程切換等因素影響。
==AUTH 命令在網(wǎng)絡中是明文傳輸?shù)摹?=
4. 命令的禁用
如果你登錄了redis篮绰,意味著后雷,redis中全部的命令你都能使用。對于普通用戶來說吠各,使用一些高危的操作很危險臀突,所以需要對普通用戶禁用一些命令。
redis是通過==命令重命名==來實現(xiàn)命令禁用的
rename-command source-command dest-command
通過配置rename-command
將source-command
重命名為dest-command
后面想要使用source-command
只能輸入dest-command
來使用了贾漏。
對于普通用戶來說候学,不知道dest-command
,就無法使用source-command
了纵散。
如果dest-command
設置為空梳码,表示任何人都無法使用source-command
了。