[Redis] - Redis 未设置密码导致安全问题

IDCE.COM 被注入挖矿病毒引发的联想

半夜收到短信报警,CPU 超过 50%,于是登录服务器用 top 命令看到 xmrig-notls 这个进程占用了 100% 的 CPU。

刚开始时并未擦觉到这是病毒(以为是系统的什么进程),然后直接 kill,CPU 也就降下来了,因此没注意。

直到第二天这个进程又自己跑起来了……

在搜索后才知道这是一个挖矿病毒,使用 top 命令可以看到程序启动的命令 COMMAND

image.png

借由这个找到 xmrig-notls 所在的路径,原来它启动了一个 docker 容器,将这个容器手动 rm 了,接下来的几天就没有再复活过来了。

那么这个病毒是怎么注入到我的服务器的呢?总不能不明不白的被别人入侵了就算了,为此搜索了 Redis 安全相关的内容,并且记载下来。

Redis 密码

默认安装 Redis 是没有设置密码的,这样任何人能够远程访问Redis,读取Redis数据。

使用命令远程访问 Redis:

redis-cli -h 服务器IP -p 端口号

默认情况下 Redis 使用 6379 作为端口,因此很容易就可以入侵到未设置密码的服务器。

安全风险

  • Redis 可能执行过 FLUSHALL 方法,整个 Redis 数据库被清空
  • 在 Redis 数据库中新建了一个名为 crackit(网上流传的命令指令) 的键值对,内容为一个 SSH 公钥。
  • 在 /root/.ssh 文件夹下新建或者修改了 authorized_keys 文件,内容为 Redis 生成的 db 文件,包含上述公钥

不仅存在丢失数据的风险,还有可能被添加了公钥,对方就能免密登录到你的服务器为!所!欲!为! 我的服务器一开始未设置密码,所以很可能是由于这个原因,被对方直接访问入侵了。

被入侵后还需要检测一下是不是有对方的公钥,如果有的话得删掉才行~

避免方法

添加密码验证

为 Redis 添加密码,参照:Redis 添加密码验证

修改 Redis 端口

修改 Redis 的默认端口也是一个好方法,打开 redis.conf 配置文件,找到如下行,将 port 改成其他未被占用的端口即可:

# Accept connections on the specified port, default is 6379 (IANA #815344).
# If port 0 is specified Redis will not listen on a TCP socket.
port 6379

然后重启 redis,大功告成!

讨论

还没有人评论~