問題現象
Linux 服務器收到報警信息,主機 CPU 跑滿。
自動創建運行 Docker 容器 xmrig, 導致其他運行中容器被迫停止。
問題原因
通過 top 命令可以看到有一個 xmrig 進程占用了99%的 CPU。
經定位,該進程是一個挖礦木馬程序,通過上述截圖可以看到進程對應的 PID 為 2647,根據進程 ID 查詢一下產生進程的程序路徑:
ll /proc/2647/exe
查看進程:
嘗試處理
首先停掉該 Docker 容器,並刪除其對應鏡像。
1. 查看計划任務
Linux 系統中默認創建了計划任務后會在 /var/spool/cron 目錄下創建對應用戶的計划任務腳本,查詢一下系統中是否有異常的計划任務腳本程序:
ls /var/spool/cron
刪除異常任務其配置項。如果當前系統之前並未配置過計划任務,可以直接刪除計划腳本目錄即可:
rm -rf /var/spool/cron/*
2. 查看密鑰認證文件
刪除木馬創建的密鑰認證文件,如果當前系統之前並未配置過密鑰認證,可以直接清空認證存放目錄:
rm -rf /root/.ssh/*
如果有配置過密鑰認證,需要刪除指定的黑客創建的認證文件即可。
3. 修復 SSH 配置項
一般默認腳本中進行修改的 PermitRootLogin、RSAAuthentication、PubkeyAuthentication 為開啟狀態,需要修改的是密鑰認證文件名,建議修改成默認值 AuthorizedKeysFile .ssh/authorized_keys 即可。修改完成后重啟 sshd 服務,使配置生效即可。
4. 查看開機啟動腳本
執行 systemctl list-unit-files 發現可疑程序:
進入 /etc/systemd/system/ 目錄找到並查看該腳本:
該腳本執行了 /xm 腳本,並且總是會重啟服務。如果此程序不進行清除,即使刪除了 Docker 容器並殺死了對應的進程,過一會還是會執行重新創建 Docker 容器,又導致服務器異常。
因此,先停止啟動腳本配置項:
systemctl disable name.service
刪除腳本:
rm -rf /etc/systemd/system/xm.service rm -rf /xm
以上修復完成后可以等待一會再次進行一下觀察,看看是否還會在根目錄下創建新的 xm 程序,以及是否還有新的 xmrig 進程產生。