發現問題
- 筆者的阿里雲服務器快到期了,前段時間買了一個火山引擎服務器
- 除此之外,筆者也用騰訊雲服務器
- 三家雲服務器供應商都挺不錯,各有千秋
- 今天,筆者忽然發現自己的火山引擎服務掛了
- 試試winscp遠程登錄不行,使用火山引擎自帶的ECS Terminal也不行
- 重啓服務器也不行
- 各種嘗試都不行,沒辦法只能提交一個工單
售後極速響應
- 不得不説,火山引擎服務器的售後是真的給力
- 工單提交後,不到一分鐘,立馬響應
- 售後工程師看了一下,説是我的服務器CPU和內存打滿了
- 想想也是,沒資源空間使用了,自然無法遠程登錄
- 不過,我的火山引擎服務器並沒有跑太多服務
- 怎麼可能會讓CPU和內存飆到100%呢?
- 更何況,4核8G的配置,也勉強湊合夠用了
- 這是為何?
猛然間,一個可怕的念頭,在我腦海中浮現😱😱😱
我的服務器被挖礦了!!!😡😡😡
先關機,再開機,極速登錄,htop命令查看CPU明細
- 但是,我無法登錄,沒法操作
- 這可不行
- 忽然我靈機一動,我可以先關機再開機
- 在開機的一瞬間,使用ECS Terminal登錄上去
- 果然,可行!
- 然後執行 htop 命令,查看一下
刪除不掉的挖礦程序文件
- 上圖中,發現問題出現在
/user/lib/updated/文件夾 - 想了想這個文件夾有古怪
- 其中有如下的文件
- 挖礦軟件程序文件一般都不太好刪除掉,或者刪除不乾淨,如下:
- 挖礦的核心程序是
dhcpi的二進制文件 - 此文件通過
config文件,把結果給到對應的 挖礦池
挖礦配置文件分析(印度 卡納塔克邦班加羅爾DigitalOcean數據中心的挖礦ip)
- 筆者打開
/user/lib/updated/config.json文件 - 看到了,對應信息確定了,就是一個挖礦程序軟件文件
- 首先
config.json中包含randomx(一種加密貨幣挖礦算法)、cpu.enabled: true等挖礦相關配置 - 然後,明確指向了礦池ip地址
139.59.2.141:3333和礦工賬號Rinho.288000 - 並且,包含顯卡挖礦(OpenCL/CUDA)的配置選項
- 再一個,挖礦程序
dhcpi偽裝成 DHCP,但實際是靜態編譯的ELF可執行文件 - 佔用極高 CPU ,符合挖礦程序的行為特徵,安裝路徑
/usr/lib/updated/也不是系統標準路徑
筆者查了一下ip: 139.59.2.141 是印度的 😡😡😡
可惜,筆者不太會黑客技術,要不然非得攻擊這個ip不可
{
"api": {
"id": null,
"worker-id": null
},
"http": {
"enabled": false,
"host": "127.0.0.1",
"port": 0,
"access-token": null,
"restricted": true
},
"autosave": true,
"background": false,
"colors": true,
"title": true,
"randomx": {
"init": -1,
"init-avx2": -1,
"mode": "auto",
"1gb-pages": false,
"rdmsr": true,
"wrmsr": true,
"cache_qos": false,
"numa": true,
"scratchpad_prefetch_mode": 1
},
"cpu": {
"enabled": true,
"huge-pages": true,
"huge-pages-jit": false,
"hw-aes": null,
"priority": null,
"memory-pool": false,
"yield": true,
"max-threads-hint": 100,
"asm": true,
"argon2-impl": null,
"cn/0": false,
"cn-lite/0": false
},
"opencl": {
"enabled": false,
"cache": true,
"loader": null,
"platform": "AMD",
"adl": true,
"cn/0": false,
"cn-lite/0": false
},
"cuda": {
"enabled": false,
"loader": null,
"nvml": true,
"cn/0": false,
"cn-lite/0": false
},
"donate-level": 0,
"donate-over-proxy": 0,
"log-file": null,
"pools": [
{
"algo":"rx/0",
"coin": null,
"url": "139.59.2.141:3333",
"user": "Rinho.288000",
"pass": "NewHeaven",
"rig-id": null,
"nicehash": false,
"keepalive": false,
"enabled": true,
"tls": false,
"tls-fingerprint": null,
"daemon": false,
"socks5": null,
"self-select": null,
"submit-to-origin": false
}
],
"print-time": 60,
"health-print-time": 60,
"dmi": true,
"retries": 5,
"retry-pause": 5,
"syslog": false,
"tls": {
"enabled": false,
"protocols": null,
"cert": null,
"cert_key": null,
"ciphers": null,
"ciphersuites": null,
"dhparam": null
},
"dns": {
"ipv6": false,
"ttl": 30
},
"user-agent": null,
"verbose": 0,
"watch": true,
"pause-on-battery": false,
"pause-on-active": false
}
植入挖礦軟件的解決方案——重裝系統
- 各種嘗試,的確不太行,後來刪除了,但是刪不乾淨
- 最終只能重裝系統了
- 不過,火山引擎也有對方的方案
- 快照備份後,並沒有丟失太多東西
- 最終問題解決
- 不過還是要反思一下
原因:筆者的這個雲服務器,純屬於新買的,沒做什麼配置,沒上什麼防護策略....
如何避免自己的雲服務器被挖礦
一、基礎安全加固
1. 及時更新系統補丁
挖礦程序常利用系統漏洞入侵,需定期更新系統:
bash
# Ubuntu/Debian 系統
sudo apt update && sudo apt upgrade -y
# CentOS/RHEL 系統
sudo yum update -y
2. 禁用不必要的服務和端口
關閉非必需的端口(如默認遠程端口 22 可改為自定義端口),減少攻擊面:
bash
# 查看當前開放的端口
sudo netstat -tulpn
# 關閉不必要的服務(以ftp為例)
sudo systemctl stop vsftpd
sudo systemctl disable vsftpd
# 修改SSH默認端口(編輯配置文件)
sudo vim /etc/ssh/sshd_config
# 將 Port 22 改為自定義端口(如2022),保存後重啓SSH服務
sudo systemctl restart sshd # Ubuntu/Debian
# 或
sudo systemctl restart sshd.service # CentOS
二、強化賬號與權限管理
1. 禁用 root 直接登錄,使用普通用户 sudo
挖礦程序常嘗試暴力破解 root 賬號,建議禁用 root 直接登錄:
bash
# 編輯SSH配置
sudo vim /etc/ssh/sshd_config
# 改為:PermitRootLogin no
# 保存後重啓SSH服務
sudo systemctl restart sshd
創建普通用户並授權 sudo:
bash
sudo adduser secure_user # 創建用户
sudo usermod -aG sudo secure_user # 授權sudo權限
2. 設置強密碼策略
避免弱密碼被暴力破解:
bash
# 安裝密碼強度檢查工具
sudo apt install libpam-cracklib -y # Ubuntu/Debian
# 或
sudo yum install cracklib -y # CentOS
# 編輯PAM配置,強制密碼複雜度
sudo vim /etc/pam.d/common-password
# 添加以下行(要求密碼至少8位,包含大小寫、數字和特殊字符)
password requisite pam_cracklib.so minlen=8 ucredit=-1 lcredit=-1 dcredit=-1 ocredit=-1
三、限制異常進程與資源佔用
1. 監控 CPU / 內存 / 網絡異常佔用
挖礦程序通常會佔用大量 CPU 和網絡資源,可通過工具實時監控:
bash
# 安裝監控工具
sudo apt install htop nethogs -y # Ubuntu/Debian
# 實時查看進程CPU佔用(按P排序)
htop
# 查看進程網絡佔用(按流量排序)
sudo nethogs
若發現陌生高佔用進程(如kdevtmpfsi、minerd等挖礦進程),立即終止並刪除:
bash
sudo kill -9 <進程ID> # 終止進程
sudo rm -rf /path/to/malicious/file # 刪除文件
四、安裝防火牆與入侵檢測
1. 配置 UFW 防火牆(Ubuntu 默認)
只開放必要端口(如 SSH、HTTP 等):
bash
# 啓用防火牆
sudo ufw enable
# 允許SSH端口(以2022為例)
sudo ufw allow 2022/tcp
# 允許HTTP/HTTPS(如需)
sudo ufw allow 80/tcp
sudo ufw allow 443/tcp
# 查看規則
sudo ufw status
2. 安裝入侵檢測工具(如 Fail2ban)
自動封禁多次失敗登錄的 IP(補充之前的 SSH 鎖定配置):
bash
# 安裝Fail2ban
sudo apt install fail2ban -y # Ubuntu/Debian
# 配置SSH防護(複製默認配置)
sudo cp /etc/fail2ban/jail.conf /etc/fail2ban/jail.local
sudo vim /etc/fail2ban/jail.local
# 找到[sshd]部分,修改如下:
[sshd]
enabled = true
port = 2022 # 改為你的SSH端口
maxretry = 3 # 失敗3次
bantime = 300 # 封禁5分鐘
# 重啓Fail2ban
sudo systemctl restart fail2ban
五、其他其他注意事項
- 禁止未授權的 SSH 密鑰登錄:定期檢查
~/.ssh/authorized_keys,刪除陌生密鑰。 - 避免使用明文密碼存儲:不將密碼寫在腳本或配置文件中,優先使用密鑰登錄。
- 定期備份系統:使用
rsync或雲服務商快照功能,被入侵後可快速恢復。 - 警惕第三方軟件:只從官方源安裝軟件,避免下載未知腳本或壓縮包(挖礦程序常偽裝成工具包)。
通過以上步驟,可大幅降低服務器被挖礦程序入侵的風險。若發現異常,建議立即隔離服務器並檢查日誌(如/var/log/auth.log、/var/log/syslog)排查入侵來源。
A good memory is better than a bad pen. Record it down...