这几天从我钉钉上面报警是23号开始报的告警信息给我,当时已经经历了13天,天啊,当时我们的服务器已经被劫持(强暴)了13天,然后23号开始我就一直留意cup使用过高的问题,可是最近要去游山玩水的,也没有时间去认真投入排错,等正式上班了就认真开始排错了,以下就是排错的思路:
1、登陆服务器用top -c 的命令查看那个进程的cup使用高,我的天这个yarn进程的使用了高达了600-700%的使用率,然后一开始不知道为什么一个yarn的服务为什么能够使用这么高的cup,然后就跟财哥网上搜索原因,
原因:网上很多都说yarn进程如果8080端口暴露在公网,而且没有对这个服务进行验证等不安全的操作导致黑客利用yarn的api通过修改一个json的文件,然后直接可以对我们服务器进行任何的操作,当然yarn只是我们的普通用户,所以本次的攻击暂时没有对我们业务造成很大的伤害。
以下是yarn-api漏洞的原理:
https://www.freebuf.com/vuls/173638.html
2、通过网上的一顿搜索、思考和操作,终于知道了是yarn的漏洞,一开始以为很简单,杀掉这个进程就解决了,我还很高兴的和财哥说,谁知道nodemaniager(yarn下面服务)这个进程又起来了,然后在网上又继续搜索,查看到这个yarn的服务做了很多循环的操作,不断得在定时任务上面定时执行挖矿计算的操作。
3、然后我把定时任务删了,把默认的端口也改了,又把nodemaniager服务起来,这个进程yarn的进程又跑起来了,超级恶心,所以我们前面一直杀一直删都是无用功。
4、最后我们抱着试下的心里,先把yarn的任务先删除,然后再删定时任务,最后再杀挖矿的进程,这里的yarn的任务多达1000多个,只把yarn的任务kill完也需要30-40分钟,
查看yarn里所有的任务
# yarn application -list
以下是我写kill掉yarn任务的脚本
#!/bin/bash
array=($(yarn application -list |awk '{print $1}'))
echo ${#array[@]}
for(( i=0;i<${#array[@]};i++))
do
yarn application -kill ${array[i]}
done
总结,如果没有把yarn任务都清完,nodemaniager一起来,yarn的进程又再做循环把挖矿程序一直输出到定时任务每隔一分钟执行,网上没有说到的就是yarn的任务要清空掉,如果不清空掉的话,从而导致一直杀都杀不完的现象。