1 發現問題html
在騰訊雲上購買了一個centos7的服務器,平時用來練手,偶爾也安裝一些程序進行測試,上面安裝了mysql和redis,前段時間數據庫常常掉線,連不上,到騰訊雲後臺進行查看,經過服務器實例的監控窗口,能夠查看服務器的一些指標狀態,包括CPU、內存、流量等數據,原本看到CPU使用超過了90%,而後用kill -9 pid,或者重啓服務器,問題當時解決了,也就沒有太注意,結果次日發現,CPU的利用率又變成了90%以上,而後再殺進程。mysql
剛殺完就出現新的進程,CPU利用率仍是90%以上,查看CPU的名稱,是kthrotlds,百度了一下,發現原來是挖礦程序。git
2 嘗試解決問題github
仍是依靠百度,看看你們都怎麼處理這個問題,有專業人士給出詳細的分析,參見https://www.360zhijia.com/anquan/447557.html,並且給出解決方法,參見https://github.com/MoreSecLab/DDG_MalWare_Clean_Tool,我看專業人士的分析,不少看不太懂,大體理解病毒是能夠自我保護,你殺了進程,它經過定時任務還會啓動,你修改定時任務,它在自啓動程序裏還會還原出定時任務,還會從網上下載病毒內容,內容寫的很詳實,我大概看了分析狀況,而後按照給出的解決方法來嘗試清除,github上面給出了清除程序,我根聽說明將busybox上傳到bin目錄下。上傳方式是將busybox放到一個固定的網絡位置,好比xxxx/resource/busybox,而後利用vnc方式登陸centos服務器,使用wget方式將busybox下載到centos服務器,一樣道理將其它文件也下載centos服務器,而後運行clear_kthrotlds.sh,運行以後,進程沒了,重啓服務器,結果問題仍是存在,kthrotlds進程又出現了。redis
我換了方式,在騰訊雲後臺設置服務器的安全組規則,將服務器的入站端口都關閉,只保留登錄用的22端口,將出站端口所有關閉,而後再殺進程,果真,cpu利用率變爲小於5%,正常了,再經過top命令查看進程,kthrotlds進程沒有了,但出現了好幾個wget進程,這是要從網上來下載病毒程序。在騰訊雲後臺將端口打開,kthrotlds立刻就回來了,說明,這個病毒沒有清除乾淨,很是頑固。sql
問題沒有解決,好在上面沒有過重要的數據,仍是從新安裝系統吧,一勞永逸。數據庫
3 一些教訓centos
咱們碰到一些問題的時候,在解決問題的過程當中,咱們會學到不少東西。此次解決kthrolds挖礦病毒,雖然沒有成功清除,也學到了很多centos操做知識,以及挖礦病毒方面的知識。分析了一下網上的解決方案沒有奏效的緣由,解決方案是3月初公佈的,個人病毒發做是在4月底,多是病毒有了變種或者更新,在沒有完全掌握病毒的來龍去脈,不能針對性的清除病毒文件,總的來講仍是對centos操做系統原理不夠熟悉,若是耐心的多看看病毒分析報告,而後再查查相關資料,完全掌握病毒的原理,而後再慢慢清除,應該可以解決問題,但花費的時間會很是多,最終放棄是由於精力沒有放到這上面,還想繼續使用服務器,也就是直接重裝系統來的方便。安全
亡羊補牢,出現問題了,咱們仍是要總結一些經驗教訓,杜絕之後再發生相似的狀況。服務器
3.1要勤備份
我這個服務器上面主要資料就是測試用的數據庫mysql,上面有一些數據,好在平時在局域網測試的時候,也有一些備份,可能數據不夠新,但還能用,固然若是是天天備份,可能會更好一些。並且,養成勤備份的習慣,咱們能夠應對一些突發情況,可以減小損失。這個問題,能夠查查資料,看能不能寫個定時任務,讓數據庫天天在固定的時間進行備份,或者手工備份。
3.2 設置好防禦措施
病毒通常都是經過服務器的某些端口進行攻擊,特別是中招以後,病毒會把這個服務器做爲一個病毒源,去感染其它機器,因此作好防禦工做,不只是對本身的服務器負責,也是對他人的服務器負責。防禦措施簡單的來講能夠有兩個方面,一個是在後臺,也就是騰訊雲的安全組設置,設置服務器的入站規則和出站規則,入站規則能夠逐步對使用的端口進行開放,對本身瞭解的端口進行開放。
出站規則能夠所有開放,不影響使用,若是中招了,就要對出站規則進行梳理調試。
再一個就是服務器的防火牆的設置,centos7的防火牆用的是firewall。
systemctl start firewalld #開啓
systemctl status firewalld #查看狀態
systemctl enable firewalld #開機自啓動
firewall-cmd --zone=public --add-port=80/tcp --permanent #永久開啓80端口
firewall-cmd --zone= public --remove-port=80/tcp –permanent #永久關閉80端口
firewall-cmd --zone=public --list-ports #查看全部打開的端口
firewall-cmd –reload #重載後生效
經過防火牆來設置開放某些端口,這樣可以控制外部程序的非法訪問。
經過兩層控制端口的開放和關閉,默認關閉端口,只有在使用的時候,明確知道外部訪問服務器要經過哪一個端口,咱們再開放它,這樣操做比較安全。
3.3 謹慎安裝軟件
此次的挖礦病毒,主要的問題應該是出在redis上面,服務器上安裝了redis,但對軟件不太瞭解,爲了能儘快使用,在網上直接找了點資料,把訪問權限所有放開,沒有深刻的評估一下軟件的安全問題,挖礦病毒就是經過redis的漏洞,攻擊服務器,若是綁定ip,不對全部的網絡放開,可能會更安全些。還有就是沒有設置密碼,這兩點很關鍵。這兩個須要設置的內容,經過修改redis.conf實現。利用vi打開redis.conf。好比綁定本機訪問和設置訪問密碼123456,則修改兩個地方。
bind 127.0.0.1
requirepass 123456
修改這兩個地方以後,進行保存,重啓服務
cd /usr/local/bin
./redis-server /etc/redis.conf
這樣就完成redis訪問ip的控制和密碼設置,加強redis的防禦。
4 結語
對於服務器來講,安全問題相當重要,很慶幸個人服務器上面沒有重要數據,但不能存在僥倖心理,在生產環境中,若是不注意防禦,一樣存在安全問題。騰訊雲或者阿里雲這些雲服務器商,也會提供一些防禦服務,能夠有效防止病毒攻擊,不過,費用不菲,好像騰訊一個月要小4000,就像房子同樣,安全問題是服務器的剛需,在數據爲王的時代,若是沒有安全保障,數據也就沒有了。
對於企業的服務器來講,仍是要花錢買安全,作到萬無一失,對咱們本身用的服務器,也是要在技術上謹慎處理,儘可能減少服務器的安全隱患。