假設redis安裝在 IP 地址爲 192.168.0.123 的linux服務器 .html
個人本機Win10操做系統 IP地址爲 192.168.0.45 , 有一套java客戶端代碼可調用linux 上的redis服務.java
bind 192.168.0.123
bind 127.0.0.1
bind 192.168.0.123 127.0.0.1
奇葩的是,網上廣爲流傳的是用bind 127.0.0.1 設置成只容許redis所在機器訪問,然而在集羣模式下,這個腦殘設計有什麼意義呢! 難道全部人都沒有遇到A機器訪問B機器redis的應用場景嗎?linux
參考文章 http://blog.csdn.net/fxq8866/article/details/58238802 後,總結以下redis
方式一 | bind IP列表 | win10 java客戶端問題 | linux 上redis-cli客戶端問題 | 是否推薦 |
1 | bind 192.168.0.123 | 正常 | Connection refused | 不 |
2 | bind 127.0.0.1 | Connection refused | 正常 | 不 |
3 | bind 192.168.0.123 127.0.0.1 | 正常 | 正常 | 是 |
4 | bind 0.0.0.0 | 正常 | 正常 | 是 |
因此儘可能使用方式3或4來bind IP數據庫
在網上四處摸索後以爲惟一合理的作法,就是使用防火牆iptables,針對6379端口作IP攔截策略,沒有其它.安全
首先安利三波 iptables詳解 iptables用法簡介 關於iptables添加規則不生效的問題服務器
因而配置如下三步:tcp
[root@localhost bin]#iptables -I INPUT -s 192.168.0.1/192.168.0.255 -p tcp --dport 6379 -j ACCEPT [root@localhost bin]#iptables -A INPUT -p tcp --dport 6379 -j REJECT [root@localhost bin]#service iptables save iptables:將防火牆規則保存到 /etc/sysconfig/iptables: [肯定] [root@localhost bin]#service iptables status
部分參數解釋 -I : 添加到頭部 -A: 添加到尾部性能
由於規則是按從頭至尾匹配優先級執行的,因此 REJECT要追加到尾部,從而讓ACCEPT先匹配,否則會致使Connection 問題ui
redis設置訪問密碼有兩種方式
requirepass mypassword
127.0.0.1:6379> CONFIG set requirepass "mypassword" 127.0.0.1:6379> CONFIG get requirepass
若是設置了主從模式,則須要在從數據庫的配置文件中經過masterauth參數設置主數據庫的密碼
另外由於redis的強大性能,黑客能夠每秒十幾萬的密碼批量交互redis服務端以驗證真實密碼,因此,咱們的redis密碼儘可能設置得又臭又長點吧.
禁用CONFIG, flushall ,flushdb 這三個重要命令
rename-command CONFIG "" rename-command flushall "" rename-command flushdb ""
su -m nobody -c xxx