Redis的作者Salvatore Sanfilippo曾經發表過Redis宣言 ,其中提到Redis以簡潔為美, 同樣在安全層面Redis也沒有做太多的作業,
1.可信的環境
Redis的安全設計是在“Redis運行在可信環境”這個前提下做出的,在生產環境運行時不 能允許外界直接連接到 Redis 服務器上,而應該通過應用程式進行中轉,運行在可信的環境 中是保證Redis安全的最重要方法,
Redis的默認配置會接受來自任何地址發送來的請求,即在任何一個擁有公網IP的服務器 上啟動 Redis 服務器,都可以被外界直接訪問到,要更改這一設定,在組態檔中修改bind 引數,如只允許本機應用連接Redis,可以將bind引數改成:
bind 127.0.0.1
bind引數只能系結一個地址 ,如果想更自由地設定訪問規則需要通過防火墻來完成,
2.資料庫密碼
除此之外,還可以通過組態檔中的requirepass引數為Redis設定一個密碼,例如:
requirepass TAFK(@~!ji^XALQ(sYh5xIwTn5D$s7JF
客戶端每次連接到 Redis 時都需要發送密碼,否則 Redis 會拒絕執行客戶端發來的命 令,例如:
redis> GET foo
(error) ERR operation not permitted
發送密碼需要使用AUTH命令,就像這樣:
redis> AUTH TAFK(@~!ji^XALQ(sYh5xIwTn5D$s7JF
OK
之后就可以執行任何命令了:
redis> GET foo "1"
由于Redis的性能極高,并且輸入錯誤密碼后Redis并不會進行主動延遲(考慮到Redis的 單執行緒模型),所以攻擊者可以通過窮舉法破解Redis的密碼(1秒內能夠嘗試十幾萬個密碼),因此在設定時一定要選擇復雜的密碼,
提示 配置 Redis 復制的時候如果主資料庫設定了密碼,需要在從資料庫的組態檔中通 過masterauth引數設定主資料庫的密碼,以使從資料庫連接主資料庫時自動使用AUTH命令 認證,
3. 命名命令
Redis 支持在組態檔中將命令重命名,比如將 FLUSHALL 命令重命名成一個比較復雜 的名字,以保證只有自己的應用可以使用該命令,就像這樣:
rename-command FLUSHALL oyfekmjvmwxq5a9c8usofuo369x0it2k
如果希望直接禁用某個命令可以將命令重命名成空字串:
rename-command FLUSHALL ""
注意 無論設定密碼還是重命名命令,都需要保證組態檔的安全性,否則就沒有任何意 義了,
轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/267434.html
標籤:其他
上一篇:MYSQL基礎
