Redis是美國畢威拓(Pivotal)公司贊助開發的一套開源的使用ANSI C語言編寫的,基於內存和鍵值對存儲的數據庫系統。Redis默認狀況下會開啓6379端口,在認證未開啓的狀況下,可致使任意用戶進行未受權訪問操做。redis
Redis安全模型觀念:請不要將Redis暴漏在公網之上,由於讓不受信任的客戶接觸Redis是很是危險的。數據庫
Redis官方網站:http://redis.io/安全
Redis公開漏洞查詢網站:http://cve.mitre.org/網絡
http://cve.scap.org.cn/tcp
Redis相應CVE編號:網站
二.redis漏洞影響範圍ui
Redis暴漏在公網(即綁定在0.0.0.0:6379,目標IP公網可訪問),且沒有開啓相關認證及設置相應安全策略的狀況下,存在被攻擊利用的風險。rest
三. 漏洞修復方案server
(1)網絡加固blog
若是僅爲本地通訊,請確保redis監聽在本地。具體設置:/etc/redis/redis.conf中配置以下: bind 127.0.0.1
(二)防火牆設置
若是須要其餘機器訪問,或者設置了Master-Slave模式,需添加防火牆設置,具體參考以下:
/sbin/iptables -A INPUT -s x.x.x.x -p tcp --dport 6379 -j ACCEPT
(三)添加認證
默認狀況下,redis未開啓密碼認證。開啓認證模式,具體參考以下配置:
打開 /etc/redis/redis.conf,找到requirepass參數,設置密碼,保存redis.conf,最後重啓redis服務,/etc/init.d/redis-server restart
(四)設置單獨帳戶
可設置一個單獨的redis帳戶。建立redis帳戶,經過該帳戶啓動redis服務,具體操做以下:setsid sudo -u redis /usr/bin/redis-serer /etc/redis/redis.conf
(五)重命名重要命令
redis沒有權限分離之說,無管理員帳號和普通帳戶之分,致使攻擊者登錄後可執行任意操做,所以須要隱藏重要命令,具體以下:FLUSHDB, FLUSHALL, KEYS,PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME,DEBUG, EVAL等。
在redis2.8.1 及 redis3.x(<3.0.2) 版本下存在eval沙箱逃逸漏洞,攻擊者可經過該漏洞執行任意Lua代碼。
具體緩解攻擊操做,供參考:下述配置將config/flushdb/flushall設置爲空,即禁用該命令;也可命名一些攻擊者難以猜解的名字。
rename-command CONFIG 「」
rename-command flushall ""
rename-command flushdb ""
rename-command shutdown shotdown_test
保存後,執行/etc/init.d/redis-server restart重啓生效。
參考文章:
http://blog.knownsec.com/2015/11/analysis-of-redis-unauthorized-of-expolit/
http://antirez.com/news/96
文章歸檔:http://secscorpio.top/?p=111