redis安全問題【原】

前提

假設redis安裝在 IP 地址爲 192.168.0.123 的linux服務器 .html

個人本機Win10操做系統 IP地址爲 192.168.0.45 , 有一套java客戶端代碼可調用linux 上的redis服務.java

redis.conf 中 bind 的安全性

  • 首先對bind做下解釋,bind 後跟的是本機自身能夠識別的本地網卡IP地址,而不是說容許IP爲XXX.XXX.XXX.XXX的客戶端訪問redis服務
  • 其次強調一點: 若是配置兩行bind,無論前面幾行的 IP 是否真實存在也不會報錯,只以最後一行爲標準
bind 192.168.0.123
bind 127.0.0.1
  • 另外強調一點: 若是單行配置關聯多個 IP, 則這些 IP 必須是當前機器自身所在的網卡IP, 只要其中一個IP機器自身不能識別就會報錯,因此能夠寫成
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配置指定IP才能訪問redis服務

在網上四處摸索後以爲惟一合理的作法,就是使用防火牆iptables,針對6379端口作IP攔截策略,沒有其它.安全

首先安利三波   iptables詳解    iptables用法簡介    關於iptables添加規則不生效的問題服務器

因而配置如下三步:tcp

  • 只容許IP爲192.168.0.1到192.168.0.255的 IP 能訪問redis服務,個人win10 所在IP爲192.168.0.45
  • 其它全部IP禁止訪問6379端口
  • 保存IP 策略,讓重啓之後也能生效
  • 查看iptables規則
[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.conf 配置訪問密碼

redis設置訪問密碼有兩種方式

  • 一種是redis.conf文件中指定密碼(強列推薦)
requirepass mypassword
  • 一種是在redis-cli登陸後使用命令(不推薦,千萬別用)
127.0.0.1:6379> CONFIG set requirepass "mypassword" 
127.0.0.1:6379> CONFIG get requirepass

若是設置了主從模式,則須要在從數據庫的配置文件中經過masterauth參數設置主數據庫的密碼

另外由於redis的強大性能,黑客能夠每秒十幾萬的密碼批量交互redis服務端以驗證真實密碼,因此,咱們的redis密碼儘可能設置得又臭又長點吧.

 

redis.conf 清除重要命令

禁用CONFIG, flushall ,flushdb 這三個重要命令

rename-command CONFIG ""
rename-command flushall ""
rename-command flushdb ""

 

nobody 最低權限啓動redis (暫不會)

su -m nobody -c xxx  

linux用戶和用戶配置文件(nobody)

相關文章
相關標籤/搜索