服务器挖矿病毒定时查杀自动化脚本实践
背景与挑战
挖矿病毒(CoinMiner)长期是服务器运维中的高发威胁。攻击者利用未修复漏洞、弱口令或供应链植入等方式,在后台占用CPU/GPU资源进行虚拟货币挖掘。传统人工查杀存在滞后性,无法应对变种与自启动机制。部署定时查杀自动化脚本,可显著降低被持久化控制的风险。
脚本核心设计思路
1. 检测范围与工具
推荐使用成熟的恶意软件扫描引擎(如ClamAV)结合Linux系统内置的top/htop、lsof、netstat命令进行行为分析。脚本应遍历以下高风险路径:
- 常见驻留目录:/tmp、/var/tmp、/dev/shm、/etc/init.d、/usr/lib/systemd/system
- 隐藏进程:检查CPU使用率异常(如持续>80%)且无对应合法服务名称的进程
- 异常网络连接:通过netstat -anp识别与已知矿池IP/域名(如pool.minexmr.com)的TCP连接
2. 查杀与清理逻辑
脚本执行以下步骤:
- 进程终止:使用kill -9强制结束检测出的挖矿进程
- 文件删除:移除对应二进制文件、配置文件及启动项
- 恢复系统文件:若病毒修改了cron、ssh authorized_keys或systemd服务,需还原为原始状态
- 日志留存:将查杀结果写入/var/log/antiminer_clean.log,便于追溯
定时调度方案(以Linux Crontab为例)
将脚本保存为/usr/local/bin/miner_kill.sh并赋予执行权限(chmod +x)。通过root的crontab添加以下任务:
# 每30分钟执行一次查杀(避开业务高峰可调整) */30 * * * * /usr/local/bin/miner_kill.sh >/dev/null 2>&1
建议同时保留一份每日全盘扫描:0 3 * * * /usr/local/bin/miner_kill.sh --full-scan。注意务必在测试环境中验证脚本无副作用,避免误杀合法进程(如监控agent或容器组件)。
关键注意事项
- 权限控制:脚本运行账户应为root或具有sudoer权限,否则无法杀死root属主进程。
- 防御前置:查杀脚本不能替代漏洞修复、弱口令清理、防火墙策略等基础安全措施。
- 更新频率:矿池域名/IP列表应定期从威胁情报源(如AlienVault OTX)同步更新。
- 日志监控:配合集中日志平台对查杀记录告警,发现多次查杀同一主机则需人工介入。
延伸建议
对于大规模IDC环境,可结合Ansible或SaltStack批量分发脚本及crontab配置。同时部署基于行为的实时检测工具(如falco)能够更快拦截挖矿行为。定期复盘查杀日志,优化白名单机制,降低误报率。