Linux 服务器挖矿木马防护实战:快速切断、清理与加固20250114

Linux 服务器挖矿木马防护实战:快速切断、清理与加固

引言

挖矿木马作为一种常见的恶意软件,对服务器资源和安全构成严重威胁。据安全机构统计,2023 年全球约 45%的 Linux 服务器遭受过挖矿木马攻击,平均每台被感染服务器每月造成 300-500 美元的额外电费支出。

本文将围绕三个核心环节,详细讲解应对挖矿木马的完整防护方案:

  1. 快速响应:第一时间切断攻击路径
  2. 全面清理:系统性清除感染源
  3. 系统加固:建立长效防护机制

在这里插入图片描述

一、快速响应:切断攻击路径

1.1 网络层面阻断

💡 首要任务是切断攻击者的通信渠道,防止进一步的数据泄露和控制指令。

# 1. 识别可疑连接(常见矿池端口)
netstat -antp | grep -E ":(3333|14444|14433|3357)"# 2. 阻断攻击IP(注意保存规则防止重启失效)
iptables -A INPUT -s <攻击IP> -j DROP
iptables -A OUTPUT -d <攻击IP> -j DROP
iptables-save > /etc/iptables/rules.v4

1.2 用户权限隔离

🔑 清理受感染账户的访问权限,防止攻击者重新登录。

# 1. 修改用户密码
passwd <用户名># 2. 清理SSH密钥(为什么要这样做?防止攻击者留下后门)
find / -name "authorized_keys" -exec rm -f {} \;# 3. 限制SSH访问(仅允许特定IP)
echo "sshd: 192.168.1.0/24" >> /etc/hosts.allow
echo "sshd: ALL" >> /etc/hosts.deny

1.3 初步进程清理

⚡ 快速终止可疑进程,为后续深入清理争取时间。

# 自动化清理脚本(初步应急)
cat > /tmp/quick_clean.sh <<'EOF'
#!/bin/bash
# 清理常见挖矿进程
ps aux | grep -i "kswapd0\|kdevtmpfsi\|cryptonight\|minerd" | \awk '{print $2}' | xargs -I {} kill -9 {}
# 清理可疑网络连接
netstat -antp | grep -E ":(3333|14444|14433|3357)" | \awk '{print $7}' | cut -d'/' -f1 | xargs -I {} kill -9 {}
EOF
bash /tmp/quick_clean.sh

二、全面清理:系统性清除感染源

2.1 深度进程清理

🔍 通过多维度分析,确保不遗漏任何可疑进程。

# 1. CPU异常进程排查
ps aux --sort=-%cpu | head -10# 2. 可疑进程溯源(进阶技巧)
for pid in $(ps aux | awk '$3>80.0{print $2}'); doecho "=== PID $pid ==="ls -l /proc/$pid/exels -l /proc/$pid/cwdstrings /proc/$pid/cmdline
done

2.2 定时任务清理

⏰ 攻击者常用定时任务实现持久化,必须彻底清理。

# 综合清理脚本
cat > /usr/local/bin/cron_clean.sh <<'EOF'
#!/bin/bash
# 1. 清理用户定时任务
for user in $(cut -f1 -d: /etc/passwd); docrontab -u $user -l 2>/dev/null | grep -v "wget\|curl" | crontab -u $user -
done# 2. 检查系统定时任务
for cronfile in /etc/cron.d/* /etc/crontab /var/spool/cron/*; doif [ -f "$cronfile" ]; thencp "$cronfile" "$cronfile.bak"sed -i '/wget\|curl/d' "$cronfile"fi
done
EOF
chmod +x /usr/local/bin/cron_clean.sh

三、多服务器场景应急处理

3.1 通用应急脚本设计

🔄 面对多台服务器同时被攻击的情况,需要自动化工具提高响应效率。
malware_cleanup.sh

#!/bin/bash
# 普通用户清理木马脚本 (最终优化版)
# 功能:彻底清理恶意任务、文件和配置set -euo pipefailLOGFILE="$HOME/malware_cleanup_$(date +%Y%m%d%H%M%S).log"log() {echo "[INFO] $1" | tee -a "$LOGFILE"
}# 查询模块
query_high_cpu_processes() {log "查询 CPU 占用高的进程..."ps -u "$USER" -o pid,comm,args,%cpu --sort=-%cpu | head -n 10 | tee -a "$LOGFILE"
}query_crontab() {log "查询用户 crontab..."crontab -l 2>/dev/null | tee -a "$LOGFILE" || log "未设置 crontab 任务"
}# 清理模块
backup_crontab() {log "备份用户 crontab..."crontab -l > "$HOME/crontab_backup_$(date +%Y%m%d%H%M%S).bak" 2>/dev/null || log "未发现 crontab 任务"
}clean_crontab() {log "清理用户 crontab 中的恶意任务..."crontab -l | grep -vE "wget|curl|/tmp|/var/tmp|pwndns" | crontab - || log "crontab 清理完成"log "清理后用户 crontab 内容如下:"crontab -l 2>/dev/null | tee -a "$LOGFILE" || log "未设置 crontab 任务"
}validate_and_terminate_process() {local pid="$1"log "验证进程 PID=$pid..."# 检查进程运行命令路径local cmdline=$(cat /proc/"$pid"/cmdline 2>/dev/null || echo "无法读取")log "运行命令路径: $cmdline"# 检查进程打开的文件和网络连接log "检查进程 PID=$pid 的打开文件和网络连接..."lsof -p "$pid" | tee -a "$LOGFILE" || log "无法获取 PID=$pid 的文件信息"# 判断是否包含恶意路径if [[ "$cmdline" =~ "/tmp" || "$cmdline" =~ "/var/tmp" || "$cmdline" =~ "-bash" ]]; thenlog "确认 PID=$pid 是恶意进程,尝试终止..."kill -TERM "$pid" 2>/dev/null || log "无法优雅终止 PID=$pid,尝试强制终止"sleep 0.5kill -9 "$pid" 2>/dev/null || log "无法强制终止 PID=$pid,请人工检查"kill -0 "$pid" 2>/dev/null && log "PID=$pid 未成功终止" || log "PID=$pid 已成功终止"elselog "PID=$pid 未检测到明显异常,但建议人工确认"fi
}terminate_high_cpu_process() {log "获取当前用户 CPU 占用最高的进程..."local pid=$(ps -u "$USER" -o pid --sort=-%cpu | awk 'NR==2 {print $1}')if [ -z "$pid" ]; thenlog "未找到高 CPU 占用的进程,退出清理。"returnfivalidate_and_terminate_process "$pid"
}clean_malicious_files() {log "清理恶意文件和目录..."for file in /tmp/.pwn /tmp/-bash /var/tmp/.update /var/tmp/.systemd; doif [ -e "$file" ]; thenlog "删除文件或目录 $file"chattr -i "$file" 2>/dev/null || truerm -rf "$file"fidone
}clean_shell_configs() {log "清理 shell 配置文件..."for shell_file in "$HOME/.bash_profile" "$HOME/.bashrc" "$HOME/.profile"; doif [ -f "$shell_file" ]; thenlog "检查并清理 $shell_file"sed -i '/\/tmp\/-bash/d' "$shell_file"sed -i '/pw\.pwndns\.pw/d' "$shell_file"sed -i '/cp -f -r/d' "$shell_file"fidone
}main() {case "$1" inquery)query_high_cpu_processesquery_crontab;;clean)backup_crontabclean_crontabterminate_high_cpu_processclean_malicious_filesclean_shell_configs;;*)log "用法: $0 {query|clean}"exit 1;;esac
}main "$@"
1.	清理恶意进程:
•	自动识别高 CPU 占用进程。
•	使用 validate_and_terminate_process 验证命令路径是否包含恶意目录 /tmp 或 /var/tmp,并强制终止。
2.	清理恶意文件:
•	针对目录如 /tmp/.pwn 增加了 rm -rf 的处理逻辑。
3.	清理 Crontab:
•	先备份后清理,避免误操作。
•	通过 grep -vE 排除常见恶意任务。
4.	清理配置文件注入:
•	针对 .bash_profile、.bashrc 等文件,删除可能的恶意代码行。

3.2 批量部署与执行

🚀 使用 Ansible 实现自动化部署和执行。

# playbook.yml
---
- hosts: allbecome: yestasks:- name: 复制应急脚本copy:src: cleanup_script.shdest: /tmp/cleanup_script.shmode: "0755"- name: 执行清理脚本shell: /tmp/cleanup_script.shregister: cleanup_result- name: 收集清理日志fetch:src: /var/log/malware_cleanup_*.logdest: logs/

3.3 执行效果监控

# 批量检查清理结果
ansible all -m shell -a "grep 'cleaned' /var/log/malware_cleanup_*.log"# 检查系统状态
ansible all -m shell -a "top -bn1 | head -5"

五、最佳实践与经验总结

5.1 核心经验

  1. 快速响应最关键
    • 第一时间切断攻击者通信
#!/bin/bash
# 切断常见挖矿木马的通信端口和攻击者 IP
SUSPICIOUS_PORTS=("3333" "14444" "14433" "443")
for port in "${SUSPICIOUS_PORTS[@]}"; donetstat -antp | grep ":$port" | awk '{print $7}' | cut -d'/' -f1 | xargs -I {} kill -9 {}
done# 动态添加阻断规则(IP 示例)
iptables -A INPUT -s 192.168.1.100 -j DROP
iptables -A OUTPUT -d 192.168.1.100 -j DROP
iptables-save > /etc/iptables/rules.v4
  • 保留必要的取证信息
#!/bin/bash
# 保存可疑进程、网络连接和关键文件信息
FORENSICS_DIR="/var/log/forensics"
mkdir -p $FORENSICS_DIR# 保存可疑进程信息
ps aux | grep -E "kswapd0|kdevtmpfsi|cryptonight|minerd" > "$FORENSICS_DIR/suspicious_processes.log"# 保存可疑网络连接
netstat -antp | grep -E ":(3333|14444|14433)" > "$FORENSICS_DIR/suspicious_connections.log"# 保存近期修改文件信息
find / -type f -mtime -7 > "$FORENSICS_DIR/recently_modified_files.log"
  1. 清理必须彻底
    • 检查所有可能的持久化途径
#!/bin/bash
# 检查定时任务、启动项和动态链接库的持久化方式
LOGFILE="/var/log/persistence_check.log"echo "检查定时任务:" | tee -a $LOGFILE
for user in $(cut -f1 -d: /etc/passwd); docrontab -u $user -l 2>/dev/null | tee -a $LOGFILE
doneecho "检查系统启动项:" | tee -a $LOGFILE
systemctl list-unit-files --type=service | grep enabled | tee -a $LOGFILEecho "检查动态链接库预加载:" | tee -a $LOGFILE
cat /etc/ld.so.preload | tee -a $LOGFILE
  • 使用自动化工具提高效率
#!/bin/bash
# 自动清理常见感染路径和文件
INFECTED_PATHS=("/tmp/.pwn""/tmp/-bash""/var/tmp/.system*""~/.bash_profile""~/.bashrc"
)
for path in "${INFECTED_PATHS[@]}"; doif [ -e "$path" ]; thenchattr -i $path 2>/dev/nullrm -rf $pathecho "已清理: $path"fi
done
  1. 预防胜于治疗
    • 建立完善的监控体系:结合 rkhunter 和 auditd 等工具进行实时监控:
 # 安装和配置 rkhunter
apt install rkhunter
rkhunter --update
rkhunter --check --sk
# 配置 auditd 监控关键文件
apt install auditd
auditctl -w /etc/passwd -p wa -k passwd_changes
auditctl -w /etc/shadow -p wa -k shadow_changes
auditctl -w /etc/ssh/sshd_config -p wa -k ssh_config_changes
# 定期生成审计报告
ausearch -k passwd_changes > /var/log/audit_passwd.log
ausearch -k ssh_config_changes > /var/log/audit_ssh.log
  • 定期进行安全审计
    借助 lynis 等工具进行全面安全检查:
# 安装 lynis
apt install lynis
# 执行安全审计
lynis audit system > /var/log/lynis_audit.log
# 检查审计报告
grep "VULNERABLE" /var/log/lynis_audit.log

5.2 常见误区

  1. ❌ 仅清理表面进程
  2. ❌ 忽略系统加固
  3. ❌ 未建立长期监控

5.3 未来建议

  1. 部署堡垒机集中管理
  2. 使用容器技术隔离应用
  3. 建立安全基线标准

参考资料

  1. NIST 网络安全框架
  2. CIS Linux 安全基线
  3. Linux 恶意代码分析手册
  4. Fail2ban 官方文档

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/67387.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

OpenAI推出首个AI Agent!日常事项自动化处理!

2025 年1月15日&#xff0c;OpenAI 正式宣布推出一项名为Tasks的测试版功能 。 该功能可以根据你的需求内容和时间实现自动化处理。比方说&#xff0c;你可以设置每天早晨 7 点获取天气预报&#xff0c;或定时提醒遛狗等日常事项。 看到这里&#xff0c;有没有一种熟悉的感觉&a…

闪豆多平台视频批量下载器

1. 视频链接获取与解析 首先&#xff0c;在哔哩哔哩网页中随意点击一个视频&#xff0c;比如你最近迷上了一个UP主的美食制作视频&#xff0c;想要下载下来慢慢学。点击视频后&#xff0c;复制视频页面的链接。复制完成后&#xff0c;不要急着关闭浏览器&#xff0c;因为接下来…

卷积神经网络的底层是傅里叶变换

1 卷积神经网络的底层是傅里叶变换&#xff0c;傅里叶变换的底层是希尔伯特空间坐标变换_哔哩哔哩_bilibili 卷积神经网络的底层是傅里叶变换&#xff0c;傅里叶变换的底层是希尔伯特空间坐标变换_哔哩哔哩_bilibili从“卷积”、到“图像卷积操作”、再到“卷积神经网络”&…

攻防世界_SQL注入

inget 尝试万能钥匙。 输入?id1or11# supersqli 1.找注入点 输入框 2.判断字符型&#xff0c;数字型 输入1 and 11 和1 and 12&#xff0c;发现两次提交后页面一样&#xff0c;判断出为字符型注入 3.判断闭合符号 输入1&#xff0c;回显正常 输入1&#xff0c;报错 加上…

怎么把文章发表到网上?在平台上投稿文章会有哪些常见问题?

怎么把文章发表到网上&#xff1f;在发表文章的过程中&#xff0c;我们可能会碰到各种各样的问题。这些问题要么导致发表时间被拖长&#xff0c;要么可能导致文章被拒稿。 就让我们来了解下文章发表过程中需要注意的一些细节&#xff0c;知晓怎么顺利地把文章发表到网上。 一、…

检验统计量与p值笔记

一、背景 以雨量数据为例&#xff0c;当获得一个站点一年的日雨量数据后&#xff0c;我们需要估计该站点的雨量的概率分布情况&#xff0c;因此我们利用有参估计的方式如极大似然法估计得到了假定该随机变量服从某一分布的参数&#xff0c;从而得到该站点的概率密度函数&#x…

【Flink系列】6. Flink中的时间和窗口

6. Flink中的时间和窗口 在批处理统计中&#xff0c;我们可以等待一批数据都到齐后&#xff0c;统一处理。但是在实时处理统计中&#xff0c;我们是来一条就得处理一条&#xff0c;那么我们怎么统计最近一段时间内的数据呢&#xff1f;引入“窗口”。 所谓的“窗口”&#xff…

C#轻松实现条形码二维码生成及识别

一、前言 大家好&#xff01;我是付工。 今天给大家分享一下&#xff0c;如何基于C#来生成并识别条形码或者二维码。 二、ZXing.Net 实现二维码生成的库有很多&#xff0c;我们这里采用的是http://ZXing.Net。 ZXing是一个开放源码的&#xff0c;用Java实现的多种格式的一…

OpenCV实现Kuwahara滤波

Kuwahara滤波是一种非线性的平滑滤波技术&#xff0c;其基本原理在于通过计算图像模板中邻域内的均值和方差&#xff0c;选择图像灰度值较为均匀的区域的均值来替代模板中心像素的灰度值。以下是Kuwahara滤波的详细原理说明&#xff1a; 一、基本思想 Kuwahara滤波的基本思想…

24-25-1-单片机开卷部分习题和评分标准

依据相关规定试卷必须按评分标准进行批改。 给分一定是宽松的&#xff0c;能给分一定给&#xff0c;如有疑问也可以向学院教务办申请查卷。 一部分学生期末成绩由于紧张或其他原因导致分数过低&#xff0c;也是非常非常遗憾的。 个人也是非常抱歉的。 开卷考试 简答题 第一…

linux之进程信号(初识信号,信号的产生)

目录 引入一、初识信号(信号预备知识)1.生活中的信号2.Linux中的信号3.信号进程得出的初步结论 二、信号的产生1.通过终端输入产生信号拓展: 硬件中断2.调用系统函数向进程发信号3.硬件异常产生信号4.软件条件产生信号拓展: 核心转储技术总结一下&#xff1a; 引入 一、初识信…

【工具类】获取日出日落时间的Java工具类

博主介绍&#xff1a;✌全网粉丝22W&#xff0c;CSDN博客专家、Java领域优质创作者&#xff0c;掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围&#xff1a;SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…

Open FPV VTX开源之betaflight配置

Open FPV VTX开源之betaflight配置 1. 源由2. 配置3. 总结4. 参考资料5. 补充 - 飞控固件版本 1. 源由 飞控嵌入式OSD - ardupilot配置使用betaflight配套OSD图片。 Choose correct font depending on Flight Controller SW. ──> /usr/share/fonts/├──> font_btfl…

Python从0到100(八十三):神经网络-使用残差网络RESNET识别手写数字

前言: 零基础学Python:Python从0到100最新最全教程。 想做这件事情很久了,这次我更新了自己所写过的所有博客,汇集成了Python从0到100,共一百节课,帮助大家一个月时间里从零基础到学习Python基础语法、Python爬虫、Web开发、 计算机视觉、机器学习、神经网络以及人工智能…

docker安装和测试redis步骤

docker安装和测试redis步骤 一、官方推荐安装方式&#xff1a; 1、执行 docker pull redis:4.0.1 命令&#xff0c;下载 redis 镜像&#xff0c;如下所示&#xff1a; 2、执行命令&#xff0c;创建并启动redis容器 docker run - -rm -d - -name redis6379 -p 6379:6379 r…

微信小程序原生与 H5 交互方式

在微信小程序中&#xff0c;原生与 H5 页面&#xff08;即 WebView 页面&#xff09;之间的交互通常有以下几种方式&#xff1a; 1. 使用 postMessage 进行通信 微信小程序的 WebView 页面和原生小程序页面可以通过 postMessage 来进行数据传递。 WebView 页面向原生小程序发…

vue3学习日记5 - 项目起步

最近发现职场前端用的框架大多为vue&#xff0c;所以最近也跟着黑马程序员vue3的课程进行学习&#xff0c;以下是我的学习记录 视频网址&#xff1a; Day2-11.项目起步-静态资源引入和ErrorLen安装_哔哩哔哩_bilibili 学习日记&#xff1a; vue3学习日记1 - 环境搭建-CSDN博…

计算机组成原理--笔记一

目录 一.计算机硬件的基本组成 1.早期冯诺依曼机的结构 2.现代计算机的结构 二.各个硬件的工作原理 1.主存储器 i. 读取数据 ii. 写入数据 1.1 基本组成 2.运算器 3.控制器 一.计算机硬件的基本组成 1.早期冯诺依曼机的结构 “存储程序”&#xff0c;将指令以二进制的形式输入…

漫话架构师|什么是系统架构设计师(开篇)

~犬&#x1f4f0;余~ “我欲贱而贵&#xff0c;愚而智&#xff0c;贫而富&#xff0c;可乎&#xff1f; 曰&#xff1a;其唯学乎” 关注犬余&#xff0c;共同进步 技术从此不孤单

CV(10)--目标检测

前言 仅记录学习过程&#xff0c;有问题欢迎讨论 目标检测 object detection&#xff0c;就是在给定的图片中精确找到物体所在位置&#xff0c;并标注出物体的类别;输出的是分类类别label物体的外框&#xff08;x, y, width, height&#xff09;。 目标检测算法&#xff1a…