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.rhkb.cn/news/1952.html

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

相关文章

6.1 MySQL数字函数和条件函数

以前我们在课程中使用过一些mysql的内置函数&#xff0c;比如说四舍五入的round函数&#xff0c;做日期计算的data, datediff函数等等。那么本次课程咱们就来系统的学习一下mysql的这些内置函数&#xff0c;我们使用编程语言写程序的时候&#xff0c;通常会把某一项业务功能封装…

【如何从0到1设计测试用例使用Fiddler完成弱网测试】

&#x1f308;个人主页&#xff1a;努力学编程’ ⛅个人推荐&#xff1a; c语言从初阶到进阶 JavaEE详解 数据结构 ⚡学好数据结构&#xff0c;刷题刻不容缓&#xff1a;点击一起刷题 &#x1f319;心灵鸡汤&#xff1a;总有人要赢&#xff0c;为什么不能是我呢 ⭐⭐⭐测试用…

Oracle EBS GL定期盘存WIP日记账无法过账数据修复

系统环境 RDBMS : 12.1.0.2.0 Oracle Applications : 12.2.6 问题症状 用户反映来源为“定期盘存”和类别为“WIP”的日记账无法过账,标准日记账的界面上的过账按钮灰色不可用。但是,在超级用户职责下,该日记账又可以过账,细心检查发现该业务实体下有二个公司段值15100和…

【Axure视频教程】中继器表格——拖动排序

今天教大家在Axure用中继器制作拖动排序效果的原型模板&#xff0c;我们可以通过拖动的方式&#xff0c;将对应的行摆放到任意位置&#xff0c;效果如下图所示&#xff1a; 这个原型模板是用中继器制作的&#xff0c;所以使用也很简单&#xff0c;只需要在中继器表格里填写对应…

python学opencv|读取图像(三十一)缩放图像的三种方法

【1】引言 前序学习进程中&#xff0c;我们至少掌握了两种方法&#xff0c;可以实现对图像实现缩放。 第一种方法是调用cv2.resize()函数实现&#xff0c;相关学习链接为&#xff1a; python学opencv|读取图像&#xff08;三&#xff09;放大和缩小图像_python opencv 读取图…

Elasticsearch:使用全文搜索在 ES|QL 中进行过滤 - 8.17

8.17 在 ES|QL 中引入了 match 和 qstr 函数&#xff0c;可用于执行全文过滤。本文介绍了它们的作用、使用方法、与现有文本过滤方法的区别、当前的限制以及未来的改进。 ES|QL 现在包含全文函数&#xff0c;可用于使用文本查询过滤数据。我们将回顾可用的文本过滤方法&#xf…

Java 0114学习总结

1.如何解决线程安全问题 当多个线程共享一个资源时&#xff0c;则可能出现线程安全问题。java中解决线程安全的方式有三种&#xff1a; ①同步代码快 ②同步方法 ③Lock锁 1.1同步代码块 synchronized(锁对象){ 需要同步的代码。 } ①synchronized 同步的意思; ②锁…

【Unity-Animator】通过 StateMachineBehaviour 实现回调

StateMachineBehaviour 简介 StateMachineBehaviour是一个基类&#xff0c;所有状态脚本都派生自该类。它可以在状态机进入、退出或更新状态时执行代码&#xff0c;而无需编写自己的逻辑来测试和检测状态的变化。这使得开发者可以更方便地处理状态转换时的逻辑&#xff0c;例…

解决 VSCode 调试时 Python 文件出现相对路径报错问题‘FileNotFoundError’

文章目录 1. 问题描述2. 解决方法 1. 问题描述 在使用 VSCode 进行 Python 开发时&#xff0c;遇到一个的问题&#xff1a;在调试模式下&#xff0c;程序无法读取文件或路径&#xff0c;导致File Not Found Error 错误。然而&#xff0c;当不使用调试模式而是直接运行 Python 文…

OpenCV的TIF红外可见光融合算法

一、简介 首先TIF是Two-Scale Image Fusion的缩写&#xff0c;论文《Two-Scale Image Fusion of Infrared and Visible Images Using Saliency Detection (TIF)》&#xff0c;作者在论文中提到TIF算法主要通过以下三个步骤实现融合&#xff1a; 图像分解&#xff0c;图像分解使…

scrapy爬取图片

scrapy 爬取图片 环境准备 python3.10scrapy pillowpycharm 简要介绍scrapy Scrapy 是一个开源的 Python 爬虫框架&#xff0c;专为爬取网页数据和进行 Web 抓取而设计。它的主要特点包括&#xff1a; 高效的抓取性能&#xff1a;Scrapy 采用了异步机制&#xff0c;能够高效…

Sentaurus TCAD学习笔记:transform指令

目录 一、transform指令简介二、transform指令的实现1.cut指令2.flip指令3.rotate指令4.stretch指令5.translate指令6.reflect指令 三、transform指令示例 一、transform指令简介 在Sentaurus中&#xff0c;如果需要对器件进行翻转、平移等操作&#xff0c;可以通过transform指…

国内源快速在线安装qt5.15以上版本。(10min安装好)(图文教程)

参考文章&#xff1a;Qt6安装教程——国内源-CSDN博客 1、在国内源上下载qt在线安装工具 NJU Mirror 2、 将下载好的在线安装工具&#xff0c;放到C盘根目录&#xff0c; 2.1 打开windows Powershell&#xff08;WinX&#xff09;&#xff0c;下边那个最好。 输入两条指令&a…

LSA更新、撤销

LSA的新旧判断&#xff1a; 1.seq&#xff0c;值越大越优先 2.chksum&#xff0c;值越大越优先 3.age&#xff0c;本地的LSA age和收到的LSA age作比较 如果差值<900s&#xff0c;认为age一致&#xff0c;保留本地的&#xff1a;我本地有一条LSA是100 你给的是400 差值小于…

istio-proxy oom问题排查步骤

1. 查看cluster数量 cluster数量太多会导致istio-proxy占用比较大的内存&#xff0c;此时需检查是否dr资源的host设置有配置为* 2. 查看链路数据采样率 若采样率设置过高&#xff0c;在压测时需要很大的内存来维护链路数据。可以调低采样率或增大istio-proxy内存。 检查iop中…

nexus搭建maven私服

说到maven私服每个公司都有&#xff0c;比如我上一篇文章介绍的自定义日志starter&#xff0c;就可以上传到maven私服供大家使用&#xff0c;每次更新只需deploy一下就行&#xff0c;以下就是本人搭建私服的步骤 使用docker安装nexus #拉取镜像 docker pull sonatype/nexus3:…

【声音场景分类--论文阅读】

1.基于小波时频图特征在声音场景分类 基于小波时频图特征在声音场景分类任务中的表现 2.增强增强高效音频分类网络 https://arxiv.org/pdf/2204.11479v5 https://github.com/Alibaba-MIIL/AudioClassfication 音频分类网络如图4所示。在此阶段&#xff0c;主要重点是建立一…

基于springboot果蔬供应链信息管理平台

基于Spring Boot的果蔬供应链信息管理平台是一种集成了先进信息技术和果蔬供应链管理理念的综合性系统。 一、背景与意义 随着人们生活水平的提高和对健康饮食的重视&#xff0c;果蔬市场需求不断增长。然而&#xff0c;果蔬供应链涉及多个环节&#xff0c;包括种植、采摘、加…

RNN之:LSTM 长短期记忆模型-结构-理论详解-及实战(Matlab向)

0.前言 递归&#xff01;循环神经网络Recurrent Neural Network 循环神经网络&#xff08;又称递归神经网络&#xff0c;Recurrent Neural Network&#xff0c;RNN&#xff09;。是一种用于处理序列数据的神经网络结构&#xff0c;具有记忆功能&#xff0c;能够捕捉序列中的时…

kafka原理和实践

Kafka是当前分布式系统中最流行的消息中间件之一&#xff0c;凭借着其高吞吐量的设计&#xff0c;在日志收集系统和消息系统的应用场景中深得开发者喜爱。本篇就聊聊Kafka相关的一些知识点。主要包括以下内容&#xff1a; Kafka简介 Kafka特点Kafka基本概念Kafka架构Kafka的几…