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