解決伺服器滿CPU被當礦機問題
最近伺服器碰到反應速度變慢問題。一看程式,有個程式名字為亂碼的9-10位英文的程式(例如rrgjpvryri),一直在滿CPU在跑。並且啟動方式是繫結基本的系統指令(例如top,ls等指令)啟動的。
並且不斷kill之後,過一小段時間又會產生一個新的另一個名字的程式繼續跑。在網上查詢了一些資料,發現是自己的伺服器中了病毒,被別人當成礦機在挖bitcoin了。
解決問題的方法:
第一步: 檢視與該程式相關聯的檔案
root@ubuntu:~# lsof -p 24183
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
rrgjpvryr 16137 root cwd DIR 252,0 4096 29622273 /root
rrgjpvryr 16137 root rtd DIR 252,0 4096 2 /
rrgjpvryr 16137 root txt REG 252,0 625878 8920905 /usr/bin/rrgjpvryri
rrgjpvryr 16137 root 0u CHR 1,3 0t0 6 /dev/null
rrgjpvryr 16137 root 1u CHR 1,3 0t0 6 /dev/null
rrgjpvryr 16137 root 2u CHR 1,3 0t0 6 /dev/null
rrgjpvryr 16137 root 3u sock 0,8 0t0 32843925 protocol: UDP
可以看出來,這個程式的啟動檔案是在/usr/bin/下面,然後通過UDP與對方(挖礦的人)保持連線的。
第二步: 檢查/etc/crontab
這種病毒大多數是通過定時任務來啟動的。檢查/etc/crontab,會發現這裡有個每3分鐘定時啟動的gcc.sh (剛看到這個檔案完全不敢相信這是病毒檔案)
將這句話註釋掉。然後我們來看一下gcc.sh下到底是什麼內容:
像這種頭部沒註釋(一般系統檔案都會帶有較長的註釋,還有License之類的),建立時間又不長的檔案,極大概率就是病毒。然後可以看見,這個檔案將 libudev.so 不斷複製,這麼來看,病原體主要就是這個檔案。
瞭解後將/etc/cron.hourly下的gcc.sh刪除。注意刪除gcc.sh之後不要直接kill掉挖礦程式,這樣gcc.sh又會重新出現
第三步:處理libudev.so
找到病原體之後,嘗試將libudev.so刪除,但是已刪除之後,立馬又會出現一個新的libudev.so。這時候檢查gcc.sh還是被刪除的狀態。我懷疑是現在正在跑的挖礦程式在監視這個檔案,一旦刪除立馬新建一個這樣的.so檔案。於是我嘗試直接kill掉rrgjpvryri程式,但是這樣又會出現一個新的亂碼挖礦程式繼續跑,並且這時候再看/etc/cron.hourly下面,gcc.sh又再次出現。
這樣看來,這個病毒是自己組成了一個環路,一旦執行起來之後互相不斷建立。所以想要解決問題,只能說是減斷某條道路,讓他們不能組成一個環路。
成功的步驟:
1. 刪除gcc.sh,如步驟一。
2. 刪除所有的病毒系統啟動項
這個病毒把自己新增到了開機啟動的目錄中。檢查/etc/init.d目錄,/etc/rc#.d/目錄下的所有檔案,通過建立日期和程式名判斷該啟動項是否為病毒。也可以通過內容檢視是否為病毒,一般病毒檔案裡面內容短小,並且寫法一樣,如下圖:
然後/bin目錄下的所有病毒啟動檔案最好也一併刪除,一般啟動檔案都是當天建立的,把/bin目錄下的當天建立的啟動項刪掉就好:
以上這些當天建立的啟動檔案都是病毒建立的,通過命令:
find /bin -mtime -1 -file f -print | xargs rm -rf
記住一定要加 -file f, 要不它會把/bin下面的所有檔案刪掉(我就照著某傻逼知道來做,然後全刪了gg,系統命令用不了,沒想到最後靠git曲線救國了)。
3. 重啟伺服器
到這裡按道理一開始病毒沒有通過守護程式開機啟動的話,就不會再啟動了,這時候再把libudev.so刪掉,就沒有問題了。注意要按照順序來,要不生生死死輪迴不止。。。
中間還有用到一些限制更改之類的操作,如果中間某個步驟跟預想的不符的話,可以試試:
chattr +i /etc/init.d/
chattr +i /lib/libudev4.so
4. 檢查
重啟之後再檢查一下程式。到這裡應該是沒問題了。
思考:
這個病毒是怎麼進來的呢?阿里雲伺服器上似乎有很多人都遭遇了這個問題,這個問題是由於Redis的漏洞造成的。要把未授權的redis服務設定密碼,修改埠號,修改root密碼等,防止再次被入侵。
相關文章
- 伺服器CPU跑滿的解決辦法伺服器
- 解決阿里雲伺服器被挖礦阿里伺服器
- CPU挖礦病毒解決方法
- 阿里雲伺服器被挖礦怎麼解決阿里伺服器
- CPU經常跑滿怎麼解決
- 輕鬆解決MacBook經常當機的問題Mac
- 解決FRA空間滿的問題
- Linux伺服器發現挖礦病毒(crypto和pnscan)導致CPU爆滿100的詳細解決方法Linux伺服器
- CPU被挖礦,Redis竟是內鬼!Redis
- 教你兩招解決EOS CPU短缺問題
- win10剛開機cpu就滿了怎麼辦 win10電腦剛開機cpu滿了的解決方法Win10
- SQLserver 程式被死鎖問題解決SQLServer
- 如何捕獲問題SQL解決過度CPU消耗的問題SQL
- 如何捕獲問題SQL解決過度CPU消耗問題 (zt)SQL
- 捕獲問題SQL解決過度CPU消耗問題-- 轉載SQL
- 解決jenkins執行磁碟滿的問題Jenkins
- 檢測伺服器物理機CPU是否滿足超頻伺服器
- 資料庫突然當機無法open的問題及解決資料庫
- 如何解決centos伺服器被植入挖礦病毒CentOS伺服器
- 伺服器CPU跑滿的原因伺服器
- ubuntu下解決埠被佔用問題Ubuntu
- 解決伺服器 CPU 佔用 100% 導致 PHP-fpm 程式假死問題伺服器PHP
- Win 7作業系統常見當機問題的解決方法作業系統
- 【問題解決】單機搭建dataguard的問題
- ubuntu下解決埠被佔用的問題Ubuntu
- 解決被掛起的資料庫問題資料庫
- 解決Linux下埠被佔用問題Linux
- 解決ELK日誌被截斷的問題
- 解決「問題」,不要解決問題
- 解決Oracle臨時表空間佔滿的問題Oracle
- 一次ASM空間滿了的問題解決ASM
- 一次線上 CPU 飆升問題的分析解決
- 記一次伺服器被用來挖礦的異常問題處理伺服器
- 伺服器挖礦病毒的解決方案伺服器
- SQL Server伺服器CPU爆高解決SQLServer伺服器
- 記一次NACOS開放公網訪問導致伺服器被挖礦的解決流程 [kdcflush] acosd伺服器
- 解決彈出層被Flash擋住的問題
- 比特幣CPU挖礦、GPU挖礦、礦池及礦機挖礦技術原理比特幣GPU