Redis 未授权访问缺陷可轻易导致系统被黑

背景

最近一直接到阿里云的邮件通知,说:【您的云服务器(106.15.191.27)由于被检测到对外攻击,已阻断该服务器对其它服务器端口(TCP:6379)的访问,阻断预计将在2018-04-02 16:21:08时间内结束,请及时进行安全自查。若有疑问,请工单或电话联系阿里云售后,感谢您对阿里云的支持。】后面才了解到这不是偶然的事件。

Redis 默认情况下,会绑定在 0.0.0.0:6379,这样将会将Redis服务暴露到公网上,如果在没有开启认证的情况下,可以导致任意用户在可以访问目标服务器的情况下未授权访问Redis以及读取Redis的数据。攻击者在未授权访问Redis的情况下可以利用Redis的相关方法,可以成功将自己的公钥写入目标服务器的 /root/.ssh 文件夹的authotrized_keys 文件中,进而可以直接登录目标服务器。

思考:

根据这篇文章,我思想一下我遇到了哪些问题;确实不光是 redis 数据被盗取的问题,而且他却是能轻而易举的通过相关代码在服务器上执行植入程序,这也是阿里云报了恶意发包、挖矿程序(监测到)

解决办法(待跟进)

临时解决方案(推荐)
  1. 配置bind选项, 限定可以连接Redis服务器的IP, 并修改redis的默认端口6379.
  2. 配置AUTH, 设置密码, 密码会以明文方式保存在redis配置文件中.
  3. 配置rename-command CONFIG “RENAME_CONFIG”, 这样即使存在未授权访问, 也能够给攻击者使用config指令加大难度
  4. 好消息是Redis作者表示将会开发”real user”,区分普通用户和admin权限,普通用户将会被禁止运行某些命令,如config
具体解决方法

首先,按照上面发生的一些事故,确实我的服务器已经被他植入了公钥

  1. 因为我发生此事后,多次修改了远程访问服务的密码(完全没效果)
  2. vim ~/.ssh/authotrized_keys 的公钥,确实有被修改的
    • 这也导致我 ssh server 的时候,居然是没有免密的,但是我覆盖后,还是被阿里云服务器通知之前的异常,只能表示,他可能是远程访问是通过临时加在公钥,公钥的文件在我的服务器上
  3. 本来打算设置制定 ip 访问 redis 服务器,但是这样设定有影响(多台服务器的话,你要一直修改该配置)
  4. 重新 bind 了redis的默认端口
  5. 设置了 requirepass https://blog.csdn.net/a491857321/article/details/51985453
  6. 根据阿里云云盾的漏洞提示生成对应的修复命令
    • 遇到如下问题
      1
      2
      3
      4
      5
      6
      7
      8
      9
      10
      11
      12
      13
          [root@iZuf6iq8e7ya9v3ix71k0pZ ~]# yum update gnutls
      已加载插件:fastestmirror
      http://mirrors.cloud.aliyuncs.com/centos/7/os/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; 未知的名称或服务"
      正在尝试其它镜像。
      http://mirrors.cloud.aliyuncs.com/epel/7/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; 未知的名称或服务"
      正在尝试其它镜像。
      http://mirrors.cloud.aliyuncs.com/centos/7/extras/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; 未知的名称或服务"
      正在尝试其它镜像。
      gitlab_gitlab-ce/x86_64/signature

      failure: repodata/repomd.xml from epel: [Errno 256] No more mirrors to try.
      http://mirrors.cloud.aliyuncs.com/epel/7/x86_64/repodata/repomd.xml: [Errno 14] curl#6 - "Could not resolve host: mirrors.cloud.aliyuncs.com; 未知的名称或服务"

【暂时这样处理,结果待跟进….】