Redis安全配置,以防數據庫被入侵惡意清空,數據丟失,且dump.rdb文件無法恢復。最近比較衰,Redis數據庫被好幾次惡意攻擊,導致里面的數據完全丟失。dump.rdb和appendonly.aof文件都不能恢復。一開始沒有意識到數據庫被攻擊,后來幾個數據庫連續這樣,才發現有問題。
被攻擊后redis里面多了一個crackit表,打開一看發現對方通過入侵自己的redis數據庫,然后利用dump文件獲得服務器的root權限,企圖使用自己的數據庫挖礦(minerd,俗稱挖比特幣)。最近有大量的服務器被人入侵數據庫,然后占用服務器的cpu挖比特幣,所以對redis進行安全配置很有必要!很有必要!很有必要!千萬不能疏忽!
大家一般使用Redis默認的.conf文件,默認端口是6379,沒有認證密碼,默認處理任何請求來源,這樣會把自己的數據庫完全暴露在外網環境中,十分危險。
Redis安全配置
對Redis進行安全配置主要從下面幾個方面:
為redis添加密碼認證
添加密碼認證有臨時的和長久的兩種方法 1. 可以在redis運行時添加密碼認證,在redis-cli連接redis后執行命令 CONFIG SET requirepass "myPassWord" 不過這種方式添加的密碼認證只是臨時的,在redis重啟后密碼就會失效 2.修改redis.conf文件,redis中默認注釋掉了 requirepass mypassword 取消注釋,然后將后面的字符串修改為自己的密碼 密碼越復雜越好吧
禁止一些高危指令
修改redis.conf文件,修改一些危險的命令。比如,在redis.conf中添加 rename-command CONFIG "" rename-command FLUSHALL "" rename-command FLUSHDB "" rename-command EVAL "" 后面為空字符串相當于禁用了改命令,也可以根據自己需要將空字符串換成自己想要的命令重命名,比如: rename-command CONFIG "CONFIG_1" 但是需要注意一點的是,如果appendonly.aof文件中有執行過相應的修改數據命令,比如 FLUSHALL,那么命令重命名后可能導致數據恢復失敗。
禁止外網訪問Redis
修改redis.conf文件,里面有一條被注釋的命令 bind 127.0.0.1 該條命令表示,redis只允許本地訪問,如果注釋掉改行或者將后面改為0.0.0.0,則表示任何IP均可訪問。也可以根據自己需要,將后面的IP綁定為特定的IP訪問,但是貌似只能綁定一個IP訪問。比如: bind 139.127.1.125
修改Redis默認端口
修改redis的端口,這一點很重要,使用默認的端口很危險,redis.conf中有一行為 port 6379 將其修改為自己指定的端口(可隨意),反正不使用默認的端口就好
加密后Redis客戶端訪問
加密后使用客戶端訪問可以直接使有兩種方式
在訪問時直接輸入密碼
redis-cli -h IP地址 -p 端口 -a 密碼
先訪問,然后再執行操作之前會提示需要密碼
redis-cli -h IP地址 -p 端口 auth 密碼
如果沒有對CONFIG命令重命名,可以在使用密碼登陸后使用命令獲得密碼
CONFIG GET requirepass
加密后java訪問
如果是使用Jedis訪問,那么可以參照代碼: Jedis redis=new Jedis("139.129.217.181",22121); redis.auth("Ictmcg!2014&2015&2016"); redis.ping(); 如果是使用JedisPool訪問,可以參照代碼; JedisPool Jedis pool = new JedisPool(config, REDIS_IP,timeout , REDIS_PORT, ,yourpassword); //timeout為讀取超時,如果超過此事件沒有讀取結果就會報timeout異常
看文倉www.kanwencang.com網友整理上傳,為您提供最全的知識大全,期待您的分享,轉載請注明出處。
歡迎轉載:http://www.kanwencang.com/bangong/20170113/87252.html
文章列表