☰
Linux应急响应实战手册:从入侵排查到痕迹清除的完整流程
2026/9/29 21:47:45 网站建设 项目流程

📌写在前面

“服务器被黑了怎么排查?”“Linux入侵后怎么溯源?”“怎么找到黑客留的后门?”

当服务器被入侵,时间就是一切。你需要在最短时间内完成:判断入侵方式、确定影响范围、清除后门、恢复系统。每一个环节都考验着你对Linux系统的理解。

我第一次处理Linux入侵事件是在凌晨3点被叫醒,一台Web服务器被挂了挖矿木马。从排查进程、定位恶意文件、分析定时任务到清除后门,整个过程花了4个小时。那次经历让我深刻意识到——应急响应不是临场发挥,而是平时积累的体现。

今天我把Linux应急响应的完整知识整理出来:排查流程、工具使用、后门清除、日志分析、防御加固。看完这篇,你再遇到入侵事件就不会手忙脚乱。

⚠️ 注意:本文仅用于安全运维和防御目的。


一、应急响应流程

标准流程

1. 接到报警 → 2. 初步判断 → 3. 隔离止损 → 4. 入侵排查 → 5. 证据固定 → 6. 清除后门 → 7. 恢复业务 → 8. 复盘改进

黄金原则

原则说明
先隔离再分析断网但不关机(保留内存证据)
证据优先先固定证据再清理
从外到内先查网络再查系统
从上到下先查进程再查文件

二、账号排查

检查异常账号

# 查看所有用户cat/etc/passwd|grep-vnologin|grep-vfalse# 查看有sudo权限的用户cat/etc/sudoersgrep-r"ALL=(ALL)"/etc/sudoers /etc/sudoers.d/# 查看UID为0的账号(root权限)awk-F:'$3==0 {print $1}'/etc/passwd# 查看最近创建的用户ls-lt/home/ last-f/var/log/wtmp|head-20# 查看当前登录用户wwholast|head-20# 检查SSH公钥后门cat/root/.ssh/authorized_keyscat/home/*/. ssh/authorized_keys# 检查密码文件修改时间ls-la/etc/passwd /etc/shadow

检查账号异常

# 查看空口令账号awk-F:'($2==""){print $1}'/etc/shadow# 查看可登录账号awk-F:'($7!="nologin" && $7!="false"){print $1}'/etc/passwd# 检查/etc/passwd是否被篡改(对比已知正常版本)diff/etc/passwd /etc/passwd.bak# 检查隐藏用户(UID大于1000的异常用户)awk-F:'$3>=1000 {print $1,$3}'/etc/passwd

三、进程排查

查看异常进程

# 查看所有进程(按CPU排序)psaux--sort=-%cpu|head-20# 查看所有进程(按内存排序)psaux--sort=-%mem|head-20# 查看进程树pstree-p# 查看网络连接netstat-tunlpss-tunlp# 查看PID对应的程序路径ls-la/proc/*/exe2>/dev/null|grep-i"deleted"# 查看进程的命令行forpidin$(ls/proc/|grep-E'^[0-9]+$');docmd=$(cat/proc/$pid/cmdline2>/dev/null|tr'\0'' ')if[-n"$cmd"];thenecho"PID$pid:$cmd"fidone# 使用top实时监控top-c

排查挖矿木马

# 查找高CPU进程psaux--sort=-%cpu|head-10# 查看可疑进程的完整路径ls-la/proc/$(pgrep-fkdevtmpfsi)/exe2>/dev/nullls-la/proc/$(pgrep-fkinsing)/exe2>/dev/null# 常见挖矿进程名psaux|grep-iE"xmrig|kinsing|kdevtmpfsi|minerd|cnrig|stratum"# 查看进程的工作目录ls-la/proc/*/cwd2>/dev/null# 查看进程打开的文件lsof-p<PID>

杀掉恶意进程

# 杀掉指定进程kill-9<PID># 杀掉指定名称的进程kill-9$(pgrep-fmalicious_name)# 如果进程被systemd管理,需要先停服务systemctl stop malicious.service systemctl disable malicious.service

四、网络排查

检查异常连接

# 查看所有TCP连接netstat-antpss-antp# 查看所有UDP连接netstat-anupss-anup# 查看监听端口netstat-tunlpss-tunlp# 查看已建立的连接(排查外连)netstat-antp|grepESTABLISHED ss-antp|grepESTABLISHED# 查看异常的对外连接(非内网网段)netstat-antp|grepESTABLISHED|grep-v"127.0.0.1"|grep-v"10\."|grep-v"172\."|grep-v"192\.168\."# 查看路由表route-niproute# 查看DNS配置cat/etc/resolv.confcat/etc/hosts

抓包分析

# 使用tcpdump抓包tcpdump-ieth0-nnport80-wtraffic.pcap tcpdump-ieth0-nnhost192.168.1.100 tcpdump-ieth0-nn'port 53 or port 443'-wdns_https.pcap# 查看实时流量iftop-nnethogs

五、文件排查

检查异常文件

# 查找最近修改的文件find/-mtime-1-typef2>/dev/null|head-50find/-mmin-30-typef2>/dev/null# 查找SUID/SGID文件find/-perm-4000-typef2>/dev/nullfind/-perm-2000-typef2>/dev/null# 查找隐藏文件find/-name".*"-typef2>/dev/null|grep-v"^/proc"|head-50# 查找可执行文件(非系统目录)find/tmp /var/tmp /dev/shm-typef-executable2>/dev/null# 查找最近创建的文件find/-ctime-1-typef2>/dev/null|grep-v-E"^/(proc|sys|run)"|head-50# 检查定时任务crontab-lcat/etc/crontabls-la/etc/cron.d/ls-la/etc/cron.daily/ls-la/var/spool/cron/cat/var/spool/cron/*

检查关键目录

# 检查临时目录ls-la/tmp /var/tmp /dev/shm# 检查启动项ls-la/etc/init.d/ls-la/etc/rc.localls-la/etc/systemd/system/ systemctl list-unit-files--state=enabled# 检查系统命令是否被替换rpm-Va# CentOS/RHELdpkg--verify# Ubuntu/Debian# 对比关键命令的MD5md5sum /bin/ls /bin/ps /bin/netstat /bin/login

六、后门检测与清除

SSH后门

# 检查SSH配置cat/etc/ssh/sshd_config|grep-v"^#"|grep-v"^$"# 检查authorized_keysfind/-nameauthorized_keys2>/dev/nullcat/root/.ssh/authorized_keyscat/home/*/.ssh/authorized_keys# 检查SSH wrapper后门file/usr/sbin/sshd strings /usr/sbin/sshd|grep-i"password\|key\|backdoor"# 检查PAM后门ls-la/lib/security/ dpkg--verifylibpam-modules# Debianrpm-Vpam# RedHat

Web Shell检测

# 查找Web目录下的PHP文件find/var/www-name"*.php"-typef2>/dev/null# 查找可疑特征find/var/www-name"*.php"-execgrep-l"eval\|system\|exec\|passthru\|shell_exec\|assert"{}\;# 查找最近修改的Web文件find/var/www-mtime-7-name"*.php"-typef2>/dev/null# 查找一句话木马grep-rn"eval($_"/var/www/2>/dev/nullgrep-rn"assert($_"/var/www/2>/dev/null

计划任务后门

# 检查所有定时任务crontab-l-urootcrontab-l-uwwwforuserin$(cut-d:-f1/etc/passwd);doecho"===$user==="crontab-l-u$user2>/dev/nulldone# 检查系统级定时任务cat/etc/crontabls-la/etc/cron.d/cat/etc/cron.d/*ls-la/etc/cron.hourly/ls-la/etc/cron.daily/# 检查systemd timersystemctl list-timers--all

Rootkit检测

# 安装rkhunteraptinstallrkhunter# Debianyuminstallrkhunter# RedHat# 扫描rootkitrkhunter--checkrkhunter--check--sk# 安装chkrootkitaptinstallchkrootkit# 扫描chkrootkit# 检查内核模块lsmodcat/proc/modules# 检查异常内核模块lsmod|grep-v"^Module"|awk'{print $1}'|whilereadmod;domodinfo$mod2>/dev/null|grep-q"filename"||echo"[!] 可疑模块:$mod"done

七、日志分析

重要日志文件

日志文件说明
/var/log/auth.log认证日志(Debian)
/var/log/secure认证日志(RedHat)
/var/log/syslog系统日志
/var/log/messages系统消息
/var/log/audit/audit.log审计日志
/var/log/nginx/access.logNginx访问日志
/var/log/apache2/access.logApache访问日志
~/.bash_history命令历史

日志分析命令

# SSH登录成功grep"Accepted"/var/log/auth.loggrep"Accepted password"/var/log/secure# SSH登录失败grep"Failed password"/var/log/auth.loggrep"Invalid user"/var/log/auth.log# 统计爆破IPgrep"Failed password"/var/log/auth.log|awk'{print $(NF-3)}'|sort|uniq-c|sort-rn|head-20# 查看root登录记录grep"root"/var/log/auth.log|grep-i"Accepted\|session opened"# 查看新增用户grep"useradd"/var/log/auth.loggrep"new user"/var/log/secure# 查看sudo使用记录grep"sudo"/var/log/auth.log# 查看命令历史cat/root/.bash_historycat/home/*/.bash_history# 查看Web日志中的攻击行为grep-i"union\|select\|script\|alert\|cmd\|exec"/var/log/nginx/access.log|head-20# 统计访问IP TOP10awk'{print $1}'/var/log/nginx/access.log|sort|uniq-c|sort-rn|head-10# 查找异常时间段访问awk'{print $4}'/var/log/nginx/access.log|cut-d: -f1,2|sort|uniq-c|sort-rn

八、应急响应工具

工具清单

工具功能安装
rkhunterRootkit检测apt install rkhunter
chkrootkitRootkit检测apt install chkrootkit
chkconfig服务管理apt install chkconfig
lsof文件/进程关联apt install lsof
tcpdump抓包分析apt install tcpdump
netstat网络状态系统自带
processdig进程分析需下载
Lynis安全审计apt install lynis

一键排查脚本

#!/bin/bashecho"===== Linux应急响应排查报告 ====="echo"时间:$(date)"echo""echo"=== 1. 系统信息 ==="uname-aecho""echo"=== 2. 异常用户 ==="awk-F:'$3==0 {print $1}'/etc/passwdecho""echo"=== 3. 当前登录 ==="wecho""echo"=== 4. 高CPU进程 ==="psaux--sort=-%cpu|head-10echo""echo"=== 5. 网络连接 ==="ss-antp|grepESTABLISHEDecho""echo"=== 6. 定时任务 ==="crontab-l2>/dev/nullcat/etc/crontab2>/dev/nullecho""echo"=== 7. SSH公钥 ==="cat/root/.ssh/authorized_keys2>/dev/nullecho""echo"=== 8. 最近修改文件 ==="find/-mtime-1-typef2>/dev/null|grep-v-E"^/(proc|sys|run)"|head-20echo""echo"=== 9. SUID文件 ==="find/-perm-4000-typef2>/dev/nullecho""echo"===== 排查完成 ====="

九、防御加固

系统加固清单

加固项说明
修改SSH端口非22端口
禁用root远程登录PermitRootLogin no
密钥登录禁用密码登录
防火墙配置只开必要端口
fail2ban防爆破
最小权限用户权限最小化
日志审计开启auditd
定期更新yum/apt update
文件监控AIDE/Tripwire
入侵检测部署HIDS

SSH加固

# /etc/ssh/sshd_configPort2222# 修改端口PermitRootLogin no# 禁止root直接登录PasswordAuthentication no# 禁止密码登录MaxAuthTries3# 最大认证次数AllowUsers user1 user2# 限制登录用户# 重启SSHsystemctl restart sshd

学习资源

Linux应急响应是安全运维人员必备的核心技能。当入侵事件发生时,快速排查、精准定位、有效处置,这些能力需要在日常工作中不断积累和演练。

从账号排查到进程分析,从后门检测到日志溯源,每一个环节都需要对Linux系统有深入理解。掌握这些技能不仅能用于应急响应,更是日常安全运维的基础。

如果你对网络安全和应急响应感兴趣,想系统学习更多知识——包括入侵检测、恶意软件分析、渗透测试、CTF实战等——可以参考下面整理的完整学习资料包。

内容涵盖:

从零基础到实战进阶,200+节视频课程,配套工具和靶场环境,涵盖攻防对抗全生命周期。

🐵这些东西我都可以免费分享给大家,需要的可以点这里自取👉:网安入门到进阶资源


总结

排查维度核心命令
账号/etc/passwd、w、last
进程ps aux、pstree、lsof
网络netstat、ss、tcpdump
文件find、ls -la
定时任务crontab -l、/etc/cron.d/
日志/var/log/auth.log、bash_history
Rootkitrkhunter、chkrootkit

🔒 记住:应急响应的黄金法则——先隔离止损,再分析排查,证据要固定,清理要彻底。

————————————————

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询