在阿里云上挂了一个网站,运行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。
Vim
# By default Redis listens for connections from all the network interfaces
# 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
2、设置访问密码 (需要重启redis才能生效)
在 redis.conf 中找到“requirepass”字段,在后面填上你需要的密码,Redis客户端也需要使用此密码来访问Redis服务。
3、修改Redis服务运行账号
请以较低权限账号运行Redis服务,且禁用该账号的登录权限。可以限制攻击者往磁盘写入文件,但是Redis数据还是能被黑客访问到,或者被黑客恶意删除。
4、设置防火墙策略
如果正常业务中Redis服务需要被其他服务器来访问,可以设置iptables策略仅允许指定的IP来访问Redis服务。