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

啓動之後應該如下:

root@kali:~# 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的密碼極容易爲***者暴破。

root@kali:~# 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
root@kali:~# 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關閉保護模式


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章