最近一朋友反应其公司的服务器的阿里云服务器近期经常出现告警被阿里云截断网络的情况,由于他们公司没有单独的运维相关人员,不知如何排查,就让我看下。
当听到这种情况时,我第一反应就是“八成是利用Redis空密码漏洞的挖矿病毒”;拿到相关信息及服务器权限后一看,果不其然。
其目前一共有12台ECS服务器,所有服务器均配置了公网IP;而出现告警的2台机,正是运行了Redis的2台服务器:
于是登陆其服务器进行查看,发现其Redis服务运行在Docker容器之中,而中的挖矿病毒也运行于其中:
在进一步发现,所有运行的服务器均未配置防火墙,所有端口均直接对外。Redis做了主从但未配置访问密码。
于是连接进容器查看,挖矿文件存在于/data及/tmp目录下:
root@iZuf61q8mnro8913dnf7omZ:~# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 4d50f88fe85b redis "docker-entrypoint.s…" 4 months ago Up About an hour 0.0.0.0:6379->6379/tcp redis-slave root@iZuf61q8mnro8913dnf7omZ:~# docker exec -it redis-slave bash root@4d50f88fe85b:/data# ls core dump.rdb kinsingKWKkNKxfZk kinsingVXOpxOHDr6 red2.so root root@4d50f88fe85b:/data# ls /tmp/ kdevtmpfsi
由于其做了主从,项目还未正式使用,于是将其Docker容器先进行重启后(结束所有内在进程),再进行病毒文件删除:
root@iZuf61q8mnro8913dnf7omZ:~# docker restart redis-slave root@iZuf61q8mnro8913dnf7omZ:~# docker exec -it redis-slave bash root@4d50f88fe85b:/data# redis-server /usr/local/etc/redis/redis.conf 12:C 03 Jan 2020 10:16:02.839 # oO0OoO0OoO0Oo Redis is starting oO0OoO0OoO0Oo 12:C 03 Jan 2020 10:16:02.839 # Redis version=5.0.5, bits=64, commit=00000000, modified=0, pid=12, just started 12:C 03 Jan 2020 10:16:02.839 # Configuration loaded root@4d50f88fe85b:/data#
root@4d50f88fe85b:/data# rm -f kinsing*
root@4d50f88fe85b:/data# cd /tmp/
root@4d50f88fe85b:/tmp# rm -f kdevtmpfsi
接着发现,其两台Redis容器中,其中一台上面添加计划任务,另一台却没有:
将其一并删掉即可。
后续又给其所有服务器做了下安全操作,更改服务器SSH端口,启用防火墙,对端口访问做出限制等:
由于其公司服务器也有出现过问题,本周末也过去帮其检查处理一下;估计要给其安装Jumpserver堡垒机及OpenVPN来实现安全访问。
Awesome post! Keep up the great work! 🙂
Great content! Super high-quality! Keep it up! 🙂
I like what I see so now i’m following you.