如何删除Ubuntu服务器中/tmp/.git/kthreaddw病毒及相关恶意程序
清除kthreaddw挖矿病毒完整操作步骤
1. 紧急终止恶意程序运行
- 确认恶意进程PID:执行
ps aux | grep kthreadw,排除grep自身进程后记录所有对应PID - 强制终止恶意进程:
kill -9 <PID1> <PID2> ...,如果进程反复重启,先暂停crontab服务切断自动拉起逻辑:systemctl stop cron - 临时禁用临时目录执行权限,阻止恶意程序从tmp路径启动:
mount -o remount,noexec,nosuid,nodev /tmp mount -o remount,noexec,nosuid,nodev /dev/shm - 删除已发现的恶意文件:
rm -rf /tmp/.git,同时扫描tmp目录最近7天新增的异常可执行文件并全部删除:find /tmp -ctime -7 -type f -perm /a+x -ls
2. 清理持久化驻留规则,防止病毒重启恢复
- 排查所有用户的crontab任务:
重点删除包含wget/curl下载外部脚本、执行/tmp路径下文件的定时任务for user in $(cut -f1 -d: /etc/passwd); do echo $user; crontab -u $user -l 2>/dev/null; done - 排查系统启动项:扫描最近30天新增的服务文件,陌生服务直接停止、禁用并删除对应文件
find /etc/init.d /etc/systemd/system -ctime -30 -type f - 排查全局和用户级登录脚本:检查
/etc/profile、/etc/bash.bashrc、各用户家目录下的.bashrc、.profile文件,删除末尾追加的陌生执行命令 - 排查SSH免密配置:检查所有用户
~/.ssh/authorized_keys文件,删除陌生公钥记录
3. 定位Laravel项目入侵入口
这类病毒90%以上通过Laravel站点的未授权漏洞入侵,需逐一排查所有站点:
- 确认所有Laravel项目
.env文件权限为600,禁止web用户越权读取:chmod 600 /path/to/laravel/.env && chown www-data:www-data /path/to/laravel/.env - 确认生产环境关闭调试模式:
.env文件中APP_DEBUG=false,调试模式开启会直接泄露敏感信息甚至触发远程代码执行 - 排查项目路由,尤其是第三方扩展包提供的路由,删除未鉴权的上传、命令执行类路由,卸载所有废弃的第三方扩展包
- 扫描站点目录下的webshell文件,重点排查最近1个月修改过的陌生PHP文件:
find /path/to/your/webroot -name "*.php" -exec grep -l "eval\|base64_decode\|shell_exec\|exec(" {} \;
4. 全系统残留清理
- 安装rkhunter扫描rootkit:
按照扫描提示清理所有检测到的恶意文件apt update && apt install rkhunter -y rkhunter --update && rkhunter --check - 安装clamav做全盘病毒扫描:
apt install clamav clamav-daemon -y systemctl stop clamav-freshclam && freshclam clamscan -r / --remove=yes --exclude-dir="^/sys" --exclude-dir="^/proc" --exclude-dir="^/dev" - 检查对外连接:执行
ss -tulpn查看所有监听端口,关闭陌生对外端口,临时通过iptables封禁矿池常用的3333、5555等对外连接端口
5. 后续加固
- 将系统包、Laravel核心和所有第三方扩展包升级到最新安全版本
- 配置web服务器(Nginx/Apache)禁止外部访问
.env、.git等敏感文件路径 - 限制web用户权限,禁止web用户执行curl、wget、bash等系统命令
- 如需永久禁止tmp目录执行权限,修改
/etc/fstab,给tmp分区添加noexec,nosuid,nodev挂载参数 - 开启日志审计,定期检查crontab、系统登录、web访问日志
内容的提问来源于stack exchange,提问作者Jaffar Esmaili
相关产品推荐
相关产品推荐

