很坑爹的事! 2016年年底有个项目需要用到redis,当时比较忙没有在新机器安装redis,就把我博客那台服务器上的redis地址给了技术的同事。第二天开发的同事告诉我redis连不上了,提示NOAUTH Authentication required,看了redis配置文件并没有设置密码,而且前一天使用的时候正常,我这台服务器也不会有人动。当时并没有深入分析,重启了redis后可以正常使用了。 过了一天后,同事又告诉我redis出问题了,由于在高铁上回家过年还是没有深入分析,用手机远程连接服务器,重启了redis让技术继续使用,当时百度了一下(搜索的关键词不对)没有查到相关的问题。 到家后虽然各种忙,大年初一还在想这个问题。。。 这台机器的redis是2015年的时候做一个开源项目时,team里的一个朋友安装的,当时做消息队列使用,没有设置密码,可以任意ip链接。 过完年回北京后继续解决这个事,发现网上很多人遇到过这个问题,原因很简单:由于redis非授权访问漏洞,被攻击了! 下面是 redis crackit安全事件分析 参考某安全云的数据,开放在公网的redis的6379端口的ip总数有63443个。无密码认证的IP有43024个,在总数占比里达到67%。发现遭受到redis crackit事件影响的服务器达到35024,在总数占比中达到55%,在无密码认证的redis数量中占比达到81%左右。 事件描述 很多使用者都是把redis下载到服务器直接运行使用,无ACL,无密码,root运行,且绑定在0.0.0.0:6379,暴露在公网。攻击者在未授权访问 Redis 的情况下通过redis的机制,可以将自己的公钥或者其他恶意程序写入目标服务器中,从而可以直接控制目标服务器。 可以看一下redis里是否有key是crackit的字符串,如果有,肯定是被攻击了! 事还原攻击过程 寻找无验证的redis服务: 制作ssh公钥和私钥: 将公钥内容写入到foo.txt: 把ssh公钥写入到redis: 覆盖系统用户原来的ssh公钥: 通过ssh登录服务器: 修改方案 1、环境安全 无需外网访问的可以绑定本地ip 需要对外增加ACL进行网络访问控制 可以借用stunnel等工具完成数据加密传输 2、给redis设定密码 3、创建单独的nologin系统账号给redis服务使用 4、禁用特定命令 rename-command CONFIG "" 非授权访问漏洞存在于很多软件上,如redis mongodb等 不要有侥幸心理,会出错的,终将会出错。 一定要重视互联网安全!!! 本文转载于微信公众号: 用文字看世界(text_world),更多微信文章请扫描关注公众号: |
|
声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系
[邮箱地址] 删除
|