Redis安全規範----check list
Redis安全規範—-check list.
1.信任的內網運行,盡量避免有公網訪問
在/etc/redis/redis.conf中配置如下: bind 127.0.0.1
2.綁定redis監聽的網絡接口
如果服務器有多個IP,可限定redis server監聽的IP,通過redis配置項bind,可同時綁定多個IP
3.設置防火墻
如果需要其他機器訪問,或者設置了slave模式,那就記得加上相應的防火墻設置,命令如下:
iptables -A INPUT -s x.x.x.x -p tcp --dport 6379 -j ACCEPT
4.禁止root用戶啟動redis
設置一個單獨的redis賬戶很有必要,redis crackit就利用到了root用戶的特性來重置authorized_keys。首先創建一個redis賬戶,然後通過該賬戶啟動。
setsid sudo -u redis /usr/bin/redis-server /etc/redis/redis.conf
啟動之後應該如下:
[email protected]:~# ps -elf|grep redis 1 S redis 14720 1 0 80 0 - 8979 - 08:40 ? 00:00:00 /usr/bin/redis-server /etc/redis/redis.conf` `
5.限制redis文件目錄訪問權限
設置redis的主目錄權限為700,如果redis配置文件獨立於redis主目錄,權限修過為600,因為redis密碼明文存儲在配置文件中.
6.避免使用熟知的端口,降低被初級掃描的風險
在/etc/redis/redis.conf中配置如下
找到port 6379這行,把6379改為8888
7.開啟redis密碼認證,並設置高復雜度密碼
redis在redis.conf配置文件中,設置配置項requirepass, 開戶密碼認證。
redis因查詢效率高,auth這種命令每秒能處理10w次以上,簡單的redis的密碼極容易為攻擊者暴破。
[email protected]:~# redis-cli -h 192.168.10.2 redis 192.168.10.2:6379> keys * (error) ERR operation not permitted redis 192.168.10.2:6379> auth @nsF0cus!@# OK
[email protected]:~# echo -e "xxlegend"|sha256sum b59869cac63a67e7ee97e6923a75811ff58bd4936ed3be3480b46145d43ae335`
8.禁用或者重命名危險命令
這個漏洞就利用config/save兩個命令完成攻擊 。 因redis無用戶權限限制,建議危險的命令,使用rename配置項進行禁用或重命名,這樣外部不了解重命名規則攻擊者,就不能執行這類命令。涉及到的命令:
FLUSHDB, FLUSHALL, KEYS, PEXPIRE, DEL, CONFIG, SHUTDOWN, BGREWRITEAOF, BGSAVE, SAVE, SPOP, SREM, RENAME, DEBUG, EVAL`
以下示例:redis.config文件禁用FLUSHDB、FLUSHALL兩個命令;重命名CONFIG、SHUTDOWN命令,添加一個特殊的後綴。 這樣redis啟動後,只能運行CONFIG_b9fc8327c4dee7命令,不能執行CONFIG命令。
rename-command CONFIG CONFIG_b9fc8327c4dee7 rename-command SHUTDOWN SHUTDOWN_b9fc8327c4dee7 rename-command FLUSHDB “” rename-command FLUSHALL “”
上述配置將config,flushdb,flushall設置為了空,即禁用該命令,我們也可以命名為一些攻擊者難以猜測,我們自己卻容易記住的的名字。保存之後,執行/etc/init.d/redis-server restart 重啟生效。
9.禁止redis中存儲敏感的明文數據
Redis設計旨在提供高性能的KV服務,至少目前在權限訪問控制和數據持久化方面比較弱化。所以禁止在Redis中存儲或緩存敏感的明文數據
10.安全監控
建立蜜罐網絡,有攻擊嘗試時,可及時發現
監控redis安全狀態,cmdstat_auth cmdstat_flushdb/flushall監控報警
題外話:
redis cluster不支持密碼問題
redis 原生cluster模式最新3.2版本都不支持開啟密碼認證,導致內網使用只能無密碼,只能通過前面其他安全設置來保證內網redis cluster的安全性
針對之前redis版本,默認無bind和密碼設置存在很大安全風險,redis 3.2版本提出新特性protected mode,如果redis在啟動時,未開啟bind和密碼設置,只能通過本地回環地址本地訪問,如果嘗試遠程訪問redis,會提示一下信息:
DENIED Redis is running protected mode because protected mode is enabled,
no bind address was specified, no authentication password is requested to clients.
In this mode connections are only accepted from the loopback interface.
當然也可直接執行CONFIG SET protected mode no關閉保護模式
本文出自 “tar0cisp” 博客,請務必保留此出處http://tar0cisp.blog.51cto.com/6253667/1939797
Redis安全規範----check list