Linux 主机应急排查速查清单
admin
2026-10-27 01:54
64人看过
免费
# Linux主机应急排查速查清单(蓝队DFIR,可直接复制执行)
## 前置原则(必看)
1. **先取证再操作**:不要随意重启、不要覆盖日志;先导出日志、进程、网络快照。
2. **禁止直接删除可疑文件**:先备份+计算SHA256哈希,留存IOC。
3. **排查顺序:登录日志 → 进程网络 → 持久化后门 → 恶意文件 → 账号后门 → 清理溯源**。
4. 区分发行版:RHEL/CentOS用`/var/log/secure`;Debian/Ubuntu用`/var/log/auth.log`。
---
## 一、第一步:系统基础信息(锁定入侵时间)
```bash
# 系统运行时间、重启记录
uptime
last
last reboot
lastlog
# 查看当前时间(防止篡改系统时间)
date
timedatectl
# 查看历史命令(攻击者会清空.bash_history)
cat ~/.bash_history
cat /root/.bash_history
```
重点:突然异常重启、陌生登录时间、命令记录被清空。
---
## 二、第二步:登录与审计日志(溯源入侵入口,最高优先级)
### 1)核心日志文件
| 系统 | 认证日志 | 系统日志 |
|---|---|---|
| CentOS/RHEL | `/var/log/secure` | `/var/log/messages` |
| Ubuntu/Debian | `/var/log/auth.log` | `/var/log/syslog` |
### 2)高频检索命令(直接复制)
```bash
# 查看所有成功登录(重点看IP、账号)
grep "Accepted password" /var/log/secure
grep "session opened" /var/log/auth.log
# 暴力破解:大量登录失败
grep "Failed password" /var/log/secure
# 查看sudo提权行为
grep "sudo" /var/log/secure
# 导出全部日志做取证(保存到外置目录)
cp -r /var/log /tmp/log_backup
journalctl --since="24小时前" > system_log.txt
```
### 3)登录行为排查
```bash
# 查看所有登录记录
last -f /var/log/wtmp
# 查看登录失败记录
faillog
# 查看当前在线用户
w
who
```
---
## 三、第三步:异常进程+网络连接(发现木马、反弹Shell)
### 1)进程排查(找隐藏进程、木马)
```bash
# 完整进程列表(显示命令行,最关键)
ps auxf
# 查看进程树
pstree -p
# 查看进程对应的可执行文件路径(PID替换为实际值)
ls -l /proc/[PID]/exe
readlink /proc/[PID]/exe
# 查找无文件进程、可疑脚本
ps aux | grep -E "bash|python|nc|curl|wget|base64|/tmp"
```
可疑特征:进程路径在`/tmp、/var/tmp、/dev/shm`;命令行带Base64、反弹Shell、网络下载脚本。
### 2)网络连接(外联C2、后门端口)
```bash
# 推荐新版命令(优先使用ss)
ss -antulnp
# 传统netstat
netstat -antulnp
# 只看已建立的外联TCP连接
ss -ant | grep ESTABLISHED
# 查找监听端口、陌生端口
lsof -i
```
重点:陌生公网IP外联、非常规端口监听、PID对应程序在临时目录。
### 3)查杀隐藏进程(rootkit)
```bash
# 检查被隐藏的进程
ps -ef | awk '{print $2}' | sort -n | uniq > pid.txt
ls /proc | grep -E '^[0-9]+$' | sort -n > proc.txt
diff pid.txt proc.txt
```
---
## 四、第四步:持久化后门排查(Linux最核心排查项,按顺序检查)
### 1)Cron定时任务(最常用持久化)
```bash
# 查看所有用户的定时任务
crontab -l
crontab -u root -l
# 系统级定时任务(高危)
ls -l /etc/cron.* /etc/crontab
# 批量检索恶意命令(wget/curl/nc/bash/python/tmp)
grep -rE "wget|curl|nc|bash|python|/tmp|base64" /etc/cron* 2>/dev/null
```
### 2)Systemd服务(现代服务器主流后门)
```bash
# 查看开机自启服务
systemctl list-unit-files --type=service | grep enabled
# 查看所有运行中的服务
systemctl list-units --type=service --state=running
# 查看服务配置文件(找出恶意service)
systemctl cat 服务名
# 查找非系统自带的service文件
find /etc/systemd/system -name "*.service" -mtime -7
```
### 3)Shell初始化脚本(登录即执行后门)
```bash
# 全局配置(所有用户生效)
cat /etc/profile
cat /etc/bashrc
cat /etc/profile.d/*.sh
# 用户级配置(root与普通用户)
cat ~/.bashrc
cat ~/.bash_profile
cat ~/.profile
cat ~/.zshrc
```
攻击者常在末尾追加`curl | bash`远程执行脚本。
### 4)SSH后门(留后门账号、免密登录)
```bash
# 检查SSH公钥(重点!免密后门)
cat ~/.ssh/authorized_keys
ls -l ~/.ssh/
# 检查SSH配置文件
grep -E "PermitRootLogin|PasswordAuthentication" /etc/ssh/sshd_config
# 检查SSH后门账号
grep ssh /etc/passwd
```
### 5)高级持久化(rootkit级)
1. **LD_PRELOAD 动态库劫持**
```bash
echo $LD_PRELOAD
ls /etc/ld.so.preload
```
2. **内核模块后门**
```bash
lsmod
find /lib/modules -name "*.ko" -mtime -7
```
3. **Udev规则、PAM认证后门、rc.local**
```bash
cat /etc/rc.local
ls /etc/udev/rules.d/
ls /etc/pam.d/
```
---
## 五、第五步:恶意文件排查(木马、webshell、挖矿程序)
### 1)高危目录(攻击者最爱存放恶意文件)
`/tmp、/var/tmp、/dev/shm、/root、/home/*、/usr/local/bin`
```bash
# 查看临时目录所有文件(含隐藏文件,如.. 隐藏文件夹)
ls -la /tmp /var/tmp /dev/shm
# 查找近7天新建的可执行文件
find /tmp -type f -executable -mtime -7
find / -type f -name "*.sh" -o -name "*.py" -mtime -7 2>/dev/null
# 查找SUID提权后门(高危)
find / -perm -u+s -type f 2>/dev/null
```
### 2)WebShell排查(Web服务器)
```bash
# 查找一句话木马关键词
grep -rE "eval|assert|base64_decode|system|exec" /var/www 2>/dev/null
find /var/www -name "*.php" -mtime -3
```
### 3)文件取证(计算哈希)
```bash
sha256sum 恶意文件 > ioc_hash.txt
stat 恶意文件 # 记录创建/修改时间
```
---
## 六、第六步:账号与权限后门排查
```bash
# 列出所有系统用户
cat /etc/passwd
# 列出所有特权账号(UID=0,除root外均为后门)
awk -F: '$3==0 {print}' /etc/passwd
# 查看sudo权限配置
cat /etc/sudoers
ls /etc/sudoers.d/
# 检查空密码账号
awk -F: '$2=="" {print $1}' /etc/shadow
```
---
## 七、第七步:日志清理痕迹排查
攻击者常用:`> /var/log/secure`、`rm -rf /var/log/*`、清空history
```bash
# 检查日志文件是否被清空(大小为0)
find /var/log -size 0 -type f
# 检查命令历史是否被清空
ls -la ~/.bash_history
```
---
## 八、应急处置流程(标准化执行步骤)
1. **隔离主机**:断开外网,仅保留内网取证;不要直接关机。
2. **证据保全**:导出日志、进程快照、网络连接、恶意文件哈希。
3. **溯源入口**:从auth.log登录记录定位攻击IP、入侵时间。
4. **清除持久化**:删除恶意cron、systemd服务、rc脚本、SSH公钥。
5. **清理恶意程序**:删除木马、挖矿程序、webshell;卸载恶意内核模块。
6. **账号加固**:重置所有账号密码,删除UID=0后门账号,关闭不必要SSH免密。
7. **全网狩猎**:把IOC(IP、域名、文件哈希)推送至SIEM,扫描全网主机。
8. **恢复业务**:确认威胁彻底清除后再恢复服务。
---
## 九、一键批量取证脚本(复制直接运行,导出全部证据)
```bash
#!/bin/bash
mkdir -p /tmp/evidence
# 日志
cp -r /var/log /tmp/evidence/logs
journalctl > /tmp/evidence/system_journal.txt
# 进程网络
ps auxf > /tmp/evidence/process.txt
ss -antulnp > /tmp/evidence/network.txt
# 持久化项
crontab -l > /tmp/evidence/cron.txt
systemctl list-unit-files --type=service > /tmp/evidence/systemd.txt
cat /etc/profile /etc/bashrc ~/.bashrc > /tmp/evidence/shell_rc.txt
# 账号信息
cat /etc/passwd /etc/shadow > /tmp/evidence/account.txt
# 导出IOC
find /tmp /var/tmp /dev/shm -type f -executable > /tmp/evidence/suspicious_files.txt
```
---
## 十、常见应急误区
1. ❌ 发现入侵直接重启:丢失进程、网络连接等动态证据。
2. ❌ 只查杀文件,不清理cron、systemd等持久化:重启后门再次复活。
3. ❌ 忽略LD_PRELOAD、内核模块、PAM这类高级后门。
4. ❌ 不校验UID=0账号,容易漏掉隐藏root后门。
版权声明:倡导尊重与保护知识产权。未经许可,任何人不得复制、转载或以其他方式使用本站原创内容。