Redis未授权访问漏洞

在阿里云上挂了一个网站,运行CentOS+PHP+Nginx,服务器装了redis,端口是6379,打开阿里云后台云盾报一个安全漏洞,漏洞类型是Redis未授权访问漏洞,漏洞地址是xx.xx.xx.xx:6379,也提供了解决方案。

记录如下:

一、漏洞描述和危害

Redis因配置不当可以未授权访问,被攻击者恶意利用。

攻击者无需认证访问到内部数据,可能导致敏感信息泄露,黑客也可以恶意执行flushall来清空所有数据。

攻击者可通过EVAL执行lua代码,或通过数据备份功能往磁盘写入后门文件,如果Redis以root身份运行,黑客可以给root账户写入SSH公钥文件,直接通过SSH登录受害服务器。

二、已确认被成功利用的软件及系统

对公网开放,且未启用认证的redis服务器。

三、建议修复方案

1、指定redis服务使用的网卡 (需要重启redis才能生效)

在 redis.conf 文件中找到 “# bind 127.0.0.1” ,把前面的#号去掉,然后保存。注:修改后只有本机才能访问Redis。

# available on the server. It is possible to listen to just one or multiple
# interfaces using the "bind" configuration directive, followed by one or
# more IP addresses.
#
# Examples:
#
# bind 192.168.1.100 10.0.0.1
bind 127.0.0.1</code>

2、设置访问密码 (需要重启redis才能生效)

在 redis.conf 中找到“requirepass”字段,在后面填上你需要的密码,Redis客户端也需要使用此密码来访问Redis服务。

3、修改Redis服务运行账号

请以较低权限账号运行Redis服务,且禁用该账号的登录权限。可以限制攻击者往磁盘写入文件,但是Redis数据还是能被黑客访问到,或者被黑客恶意删除。

4、设置防火墙策略

如果正常业务中Redis服务需要被其他服务器来访问,可以设置iptables策略仅允许指定的IP来访问Redis服务。