阿里云服务器CPU负载达到90%以上,云监控频繁报警,过段时间服务器死机
这个进程是watchbog,是一个挖矿脚本,系统还有几个类似的进程叫watchdog,这个进程CPU占用不高,这是正常的阿里云监控进程。
最初发现这个问题,只是把这个进程杀掉了,但一会就会起来。
往阿里云发了一个工单,工单回复:
1、登陆服务器执行 crontab -l 看下是否存在异常计划任务。查看 var/spool/cron/目录下是否存在异常文件或目录。 2、使用 top 命令查针对看异常占用 CPU的进程 PID 3、执行 ll /proc/PID号/exe 查看该进程是哪些程序启动的。如该进程不是您安装部署的程序请您删除程序对应文件,kill -9 杀死对应进程。 建议您操作前想创建好快照备份。
系统当时的定时任务是这样:
几个链接打开来,是一段base64编码,解码后是一段脚本,这就是恶意脚本
后来网上也找了一个脚本
#!/usr/bin/env bash #author : Jam < liujianhncn@gmail.com > #version : 1.0 #description : 本脚本主要用来清理watchbog服务 tmp="/tmp/.watchbog.log" _clearPid(){ pids=$(ps -ef | grep pastebin | grep curl | awk '{print $2}') test $pids && echo $pids | xargs kill -9 && echo "成功删除pastbin进程 $pids" ps -ef | grep watchbog | grep -v grep > $tmp pids=$(awk '{print $2}' $tmp) echo "查看watchbog进程信息:" && cat $tmp test "$pids" && echo $pids | xargs kill -9 ps -ef | grep watchbog | grep -v grep } echo "准备删除watchbog" _clearPid echo "查看当前cron文件" find /etc -maxdepth 2 -name oanacroane -exec rm -f {} \; cd /etc/cron.d && sed -i '/curl.*pastebin.com/d' * crontab -l crontab -r echo "查看删除之后的crontab" crontab -l _clearPid
它的主要工作也是杀死进程,删除定时任务
上面两个都做完后,服务器重启,挖矿进程确实没起来,我们还挺高兴,以为就这样解决了
但是,第二天,挖矿进程又死灰复燃
我们当时想先把端口访问设置指定IP,这样应该不会再从网上下载恶意脚本半夜偷偷执行了,然后再执行了一次清理恶意程序的脚本
但当把服务器时间设置为凌晨1点后,一会挖矿脚本居然还是执行了,定时任务也都又有了。。。这下好尴尬
后来想过把服务器重装,这样就需要装很多程序,又有很多数据,这也是最后没办法的办法了
解决办法
把系统的定时任务停掉,
systemctl stop crond
修改服务器时间后,挖矿脚本没有再执行
也有同事说,自己写个脚本每次快到凌晨的时候,把时间修改掉,我认为如果能知道挖矿脚本定时执行的时间段,这也是一个可行的办法,你可以分析下,这是恶意脚本的地址:https://pastebin.com/raw/vvuYb1GC
总结
这次实际上是没有彻底清理挖矿病毒的,也没有知道病毒是通过什么途径注入的,比较遗憾