這幾天從我釘釘上面報(bào)警是23號開始報(bào)的告警信息給我,當(dāng)時(shí)已經(jīng)經(jīng)歷了13天,天啊圆恤,當(dāng)時(shí)我們的服務(wù)器已經(jīng)被劫持(強(qiáng)暴)了13天斋扰,然后23號開始我就一直留意cup使用過高的問題,可是最近要去游山玩水的灶体,也沒有時(shí)間去認(rèn)真投入排錯,等正式上班了就認(rèn)真開始排錯了,以下就是排錯的思路:
1镰吆、登陸服務(wù)器用top -c 的命令查看那個(gè)進(jìn)程的cup使用高,我的天這個(gè)yarn進(jìn)程的使用了高達(dá)了600-700%的使用率跑慕,然后一開始不知道為什么一個(gè)yarn的服務(wù)為什么能夠使用這么高的cup万皿,然后就跟財(cái)哥網(wǎng)上搜索原因,
原因:網(wǎng)上很多都說yarn進(jìn)程如果8080端口暴露在公網(wǎng)核行,而且沒有對這個(gè)服務(wù)進(jìn)行驗(yàn)證等不安全的操作導(dǎo)致黑客利用yarn的api通過修改一個(gè)json的文件相寇,然后直接可以對我們服務(wù)器進(jìn)行任何的操作,當(dāng)然yarn只是我們的普通用戶钮科,所以本次的攻擊暫時(shí)沒有對我們業(yè)務(wù)造成很大的傷害唤衫。
以下是yarn-api漏洞的原理:
https://www.freebuf.com/vuls/173638.html
2、通過網(wǎng)上的一頓搜索绵脯、思考和操作佳励,終于知道了是yarn的漏洞休里,一開始以為很簡單,殺掉這個(gè)進(jìn)程就解決了赃承,我還很高興的和財(cái)哥說妙黍,誰知道nodemaniager(yarn下面服務(wù))這個(gè)進(jìn)程又起來了,然后在網(wǎng)上又繼續(xù)搜索瞧剖,查看到這個(gè)yarn的服務(wù)做了很多循環(huán)的操作拭嫁,不斷得在定時(shí)任務(wù)上面定時(shí)執(zhí)行挖礦計(jì)算的操作。
3抓于、然后我把定時(shí)任務(wù)刪了做粤,把默認(rèn)的端口也改了,又把nodemaniager服務(wù)起來捉撮,這個(gè)進(jìn)程yarn的進(jìn)程又跑起來了怕品,超級惡心,所以我們前面一直殺一直刪都是無用功巾遭。
4肉康、最后我們抱著試下的心里,先把yarn的任務(wù)先刪除灼舍,然后再刪定時(shí)任務(wù)吼和,最后再殺挖礦的進(jìn)程,這里的yarn的任務(wù)多達(dá)1000多個(gè)骑素,只把yarn的任務(wù)kill完也需要30-40分鐘纹安,
查看yarn里所有的任務(wù)
# yarn application -list
以下是我寫kill掉yarn任務(wù)的腳本
#!/bin/bash
array=($(yarn application -list |awk '{print $1}'))
echo ${#array[@]}
for(( i=0;i<${#array[@]};i++))
do
yarn application -kill ${array[i]}
done
總結(jié),如果沒有把yarn任務(wù)都清完砂豌,nodemaniager一起來厢岂,yarn的進(jìn)程又再做循環(huán)把挖礦程序一直輸出到定時(shí)任務(wù)每隔一分鐘執(zhí)行,網(wǎng)上沒有說到的就是yarn的任務(wù)要清空掉阳距,如果不清空掉的話塔粒,從而導(dǎo)致一直殺都?xì)⒉煌甑默F(xiàn)象。