返回首页

Linux 服务器入侵应急响应完整清单与实战指南

📅 创建于 2026-07-01 🔄 更新于 2026-07-01 📝 563 字

Linux 服务器入侵应急响应完整清单与实战指南

来源:四海风闻 | 发布日期:2026-06-29

凌晨服务器被黑,CPU 占满、异常登录告警、入侵者已留下后门。这种极端场景下,保持冷静并执行标准化流程才是最快的恢复路径。

核心原则:断网不关机,保护好现场。 很多人第一反应是重启——这是最错误的操作,会销毁所有现场证据。正确的做法是先断网隔离(保留内网通道用于排查),再一步步取证、清理、修复。


第一步:快速止损——断网隔离

立即断开外网连接,但保留内网连接以便排查。在防火墙或交换机层封禁服务器 IP,仅在隔离内网环境中操作。

# 1. 立即断开外网(保留内网连接用于排查)
iptables -A INPUT -s 0.0.0.0/0 -j DROP
iptables -A OUTPUT -d 0.0.0.0/0 -j DROP
# 或者在交换机/防火墙上封禁该服务器IP

封完外网后立即检查当前登录会话,找到可疑连接直接踢出:

# 2. 检查当前登录用户
w
who
last | head -20

# 3. 踢出可疑连接(如 pts/1)
pkill -kill -t pts/1

第二步:取证——保护现场

在清理恶意进程之前,先保存当前所有证据。这些快照是后续入侵分析和取证的核心依据。

保存系统状态快照

# 保存当前进程快照(树形结构,方便分析父子关系)
ps auxf > /tmp/ps_snapshot.txt

# 保存网络连接(antlp = all numeric tcp listening 程序名)
netstat -antlp > /tmp/netstat_snapshot.txt
ss -antlp >> /tmp/netstat_snapshot.txt

# 保存登录日志
last > /tmp/last_log.txt
lastb > /tmp/failed_login.txt

# 保存当前用户
who > /tmp/current_users.txt

检查可疑进程

# 查看 CPU 异常进程(-b 单次模式,-n 1 采一次)
top -c -b -n 1 | head -20

# 查看隐藏进程:对比 ps 输出和 /proc 目录
ps aux | awk '{print $2}' | sort > /tmp/ps_pids.txt
ls /proc | grep -E '^[0-9]+$' | sort > /tmp/proc_pids.txt
diff /tmp/ps_pids.txt /tmp/proc_pids.txt

# 查看异常定时任务
crontab -l
cat /etc/crontab
ls -la /etc/cron.d/

diff 出来的内容如果 ps 中有但 /proc 中不存在,或者 /proc 中有但 ps 中不存在,即说明存在进程级隐藏——恶意程序常通过 hook(如 adore-ng rootkit)隐藏进程。


第三步:清理——斩草除根

在确认入侵证据已保存后,开始排查所有后门和持久化手段。

查找后门和恶意脚本

# 查找最近一天修改的文件(排除 /proc 虚拟文件系统)
find / -mtime -1 -type f 2>/dev/null | grep -v proc

# 查找 SUID 程序(常见提权手段)
find / -perm -4000 -type f 2>/dev/null

# 查找 SGID 程序
find / -perm -2000 -type f 2>/dev/null

# 检查 SSH 公钥(常被留做永久后门)
cat ~/.ssh/authorized_keys
cat /root/.ssh/authorized_keys

# 检查启用的系统服务(找出伪装服务的恶意程序)
systemctl list-unit-files --type=service | grep enabled

清理恶意进程

# 找到挖矿病毒常见进程名(如 kdevtmpfsi)
ps aux | grep -i kdevtmpfsi

# 查看进程详情(替换 PID 为实际值)
ls -l /proc/PID/exe
cat /proc/PID/cmdline

# 结束进程
kill -9 PID

# 删除恶意文件(常见隐藏路径)
rm -f /tmp/.X11-unix/.rsync/c

第四步:修复——堵住漏洞

清理完恶意程序后,必须分析入侵途径,堵住攻击者进来的入口。

检查入侵途径

# 检查弱口令账户(UID >= 1000 的普通用户)
awk -F: '$3>=1000 {print $1}' /etc/passwd

# 检查 sudo权限(找出意外授权的账户)
cat /etc/sudoers | grep -v "^#" | grep -v "^$"

# 检查 SSH 配置
grep "PermitRootLogin\|PasswordAuthentication" /etc/ssh/sshd_config

# 检查开放的监听端口
netstat -tlnp

加固 SSH

# 修改 SSH 配置并重启
vim /etc/ssh/sshd_config

# 关键加固项:
# Port 2222                  # 改默认端口
# PermitRootLogin no         # 禁止 root 登录
# PasswordAuthentication no  # 禁用密码登录(仅密钥登录)
# MaxAuthTries 3             # 限制认证尝试次数

systemctl restart sshd

安装基础防护

# 安装 fail2ban(防暴力破解)
yum install -y fail2ban
systemctl enable fail2ban
systemctl start fail2ban

# 安装 rkhunter(Rootkit 检测)
yum install -y rkhunter
rkhunter --check

应急响应检查清单

以下表格覆盖入侵排查的核心检查项,可对照逐条执行:

检查项 命令 风险等级
异常进程 ps auxf, top 🔴 高
网络连接 netstat -antlp 🔴 高
登录日志 last, lastb 🟡 中
定时任务 crontab -l, /etc/cron* 🔴 高
SSH 公钥 ~/.ssh/authorized_keys 🔴 高
最近修改文件 find / -mtime -1 🟡 中
SUID 程序 find / -perm -4000 🟡 中

第五步:复盘——防止再次发生

入侵处理后,必须完成以下复盘步骤:

写应急响应报告模板

## 事件概述
- 时间:2026-06-29 03:15
- 服务器:prod-web-01
- 影响范围:CPU 异常 100%,挖矿进程

## 入侵分析
- 入侵途径:SSH 弱口令
- 恶意程序:/tmp/.systemd-service
- 持久化手段:crontab 定时任务

## 处理过程
1. 03:20 断网隔离
2. 03:25 取证保存
3. 03:35 清理恶意进程
4. 03:45 修复漏洞并加固
5. 04:00 恢复服务

## 改进措施
- [ ] 全网弱口令扫描
- [ ] 部署入侵检测系统
- [ ] 完善监控告警规则

安全意识三原则

原则 要义
断网不关机 保留现场证据,排查才有依据
处理完立即改密码 入侵者可能记录了旧密码,不换等于门没锁
必须复盘 同样的弱点不能再被利用第二次

服务器安全不是等出了事才处理,而是平时就要做好准备。日常加固比事后补救成本低得多。


关联页面

页面关联点
linux-mining-virus-investigation-guide挖矿病毒专项排查(从告警到清除的完整流程)
server-security-hardening-checklist新机器上线前必做 20 项安全加固(防患于未然的基线)
ssh-brute-force-protection-guideSSH 暴力破解防护实战(Fail2ban + 密钥加固)
server-performance-four-dimensions服务器性能监控策略(快速发现异常指标)