
写在前面“服务器被黑了怎么排查”“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-rALL(ALL)/etc/sudoers /etc/sudoers.d/# 查看UID为0的账号root权限awk-F:$30 {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:$31000 {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-ideleted# 查看进程的命令行forpidin$(ls/proc/|grep-E^[0-9]$);docmd$(cat/proc/$pid/cmdline2/dev/null|tr\0 )if[-n$cmd];thenechoPID$pid:$cmdfidone# 使用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-iExmrig|kinsing|kdevtmpfsi|minerd|cnrig|stratum# 查看进程的工作目录ls-la/proc/*/cwd2/dev/null# 查看进程打开的文件lsof-pPID杀掉恶意进程# 杀掉指定进程kill-9PID# 杀掉指定名称的进程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-v127.0.0.1|grep-v10\.|grep-v172\.|grep-v192\.168\.# 查看路由表route-niproute# 查看DNS配置cat/etc/resolv.confcat/etc/hosts抓包分析# 使用tcpdump抓包tcpdump-ieth0-nnport80-wtraffic.pcap tcpdump-ieth0-nnhost192.168.1.100 tcpdump-ieth0-nnport 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--stateenabled# 检查系统命令是否被替换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-ipassword\|key\|backdoor# 检查PAM后门ls-la/lib/security/ dpkg--verifylibpam-modules# Debianrpm-Vpam# RedHatWeb Shell检测# 查找Web目录下的PHP文件find/var/www-name*.php-typef2/dev/null# 查找可疑特征find/var/www-name*.php-execgrep-leval\|system\|exec\|passthru\|shell_exec\|assert{}\;# 查找最近修改的Web文件find/var/www-mtime-7-name*.php-typef2/dev/null# 查找一句话木马grep-rneval($_/var/www/2/dev/nullgrep-rnassert($_/var/www/2/dev/null计划任务后门# 检查所有定时任务crontab-l-urootcrontab-l-uwwwforuserin$(cut-d:-f1/etc/passwd);doecho$usercrontab-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--allRootkit检测# 安装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-qfilename||echo[!] 可疑模块:$moddone七、日志分析重要日志文件日志文件说明/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登录成功grepAccepted/var/log/auth.loggrepAccepted password/var/log/secure# SSH登录失败grepFailed password/var/log/auth.loggrepInvalid user/var/log/auth.log# 统计爆破IPgrepFailed password/var/log/auth.log|awk{print $(NF-3)}|sort|uniq-c|sort-rn|head-20# 查看root登录记录greproot/var/log/auth.log|grep-iAccepted\|session opened# 查看新增用户grepuseradd/var/log/auth.loggrepnew user/var/log/secure# 查看sudo使用记录grepsudo/var/log/auth.log# 查看命令历史cat/root/.bash_historycat/home/*/.bash_history# 查看Web日志中的攻击行为grep-iunion\|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 rkhunterchkrootkitRootkit检测apt install chkrootkitchkconfig服务管理apt install chkconfiglsof文件/进程关联apt install lsoftcpdump抓包分析apt install tcpdumpnetstat网络状态系统自带processdig进程分析需下载Lynis安全审计apt install lynis一键排查脚本#!/bin/bashecho Linux应急响应排查报告 echo时间:$(date)echoecho 1. 系统信息 uname-aechoecho 2. 异常用户 awk-F:$30 {print $1}/etc/passwdechoecho 3. 当前登录 wechoecho 4. 高CPU进程 psaux--sort-%cpu|head-10echoecho 5. 网络连接 ss-antp|grepESTABLISHEDechoecho 6. 定时任务 crontab-l2/dev/nullcat/etc/crontab2/dev/nullechoecho 7. SSH公钥 cat/root/.ssh/authorized_keys2/dev/nullechoecho 8. 最近修改文件 find/-mtime-1-typef2/dev/null|grep-v-E^/(proc|sys|run)|head-20echoecho 9. SUID文件 find/-perm-4000-typef2/dev/nullechoecho 排查完成 九、防御加固系统加固清单加固项说明修改SSH端口非22端口禁用root远程登录PermitRootLogin no密钥登录禁用密码登录防火墙配置只开必要端口fail2ban防爆破最小权限用户权限最小化日志审计开启auditd定期更新yum/apt update文件监控AIDE/Tripwire入侵检测部署HIDSSSH加固# /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_historyRootkitrkhunter、chkrootkit 记住应急响应的黄金法则——先隔离止损再分析排查证据要固定清理要彻底。————————————————