记一次服务器被黑事件

今天在使用 jenkins 部署一个项目的时候,感觉页面的速度加载很慢。于是登上服务器看了一下,使用 top看了一眼,出现了以下的情况:

发现 cpu 的使用率基本为100%,这肯定不正常,发现主要是由一个叫 qW3xT.2 的进程占据着 cpu,于是上网查了一下,发现这个是一个专门用于挖矿的病毒,也就是说,我的服务器被人当作矿机了。em…..好像不是很能忍,那只能想办法干掉它了。

网上也有一些解决办法,通常来说这个;病毒就是在服务器上不断的设置定时任务,然后通过 curl 不断获取脚本执行计算任务进行挖矿。杀死进程无效,定时任务会不断的重启服务。通常的解决办法就是,通过打印远程的脚本,看这个脚本是会下载什么内容,然后根据脚本的的执行情况去删除文件,最后杀死进程来解决问题。但是当我使用这个方法来解决问题的时候,有点不太对劲了。服务器上留下的定时任务如图所示:

然后我就通过打印脚本去获取内容:

有点不太对,这里面居然是另一条获取内容的脚本,和网上出现的情况都不太一样,于是顺藤摸瓜,再次获取一次,得到了下面的内容:

em…..居然直接就是一个可执行的文件。也根本没办法找出来这个程序执行的操作,这就有点难搞了。删除那是不可能的,手动删除的速度根本比不上程序的速度。稍微观察了一下,发现服务器的定时任务脚本删除后,它都会利用剩余的任何一份脚本去远程下载,也就是说只有将它的下载路径掐断之后,应该就可以解决问题了。于是通过 wget去获取远程下载脚本的服务器的地址:

在这里不能使用 ping,因为它一个域名可能绑定了好几个 ip,使用 ping不能将所有的 ip都查出来,所以使用 wget靠谱一点。然后使用 iptablesip 封掉:

1
2
3
iptables -I INPUT -s 104.20.209.21 -j DROP
iptables -I INPUT -s 104.20.208.21 -j DROP
service iptables save

封掉后,然后就是将定时任务删除,杀死挖矿进程 qW3xT.2ddgs.3013,删除 /tmp 文件夹下的 qW3xT.2 和 ddgs.3013 文件,并且将 .ssh 下的内容都清掉,当然如果你能识别出那个是恶意的,选择性删除也是可以的。

做完了这些事情后,这个病毒总算是解决了,剩下的就是清理了,修改 redis 端口,加密码验证,确保后续这样的事情不会再发生了。