Linux 应急响应过程中常用命令汇总:从发现到溯源的实战指南
服务器被入侵、网站被挂马、流量异常飙升……遇到这些情况时,每一分钟都很关键。作为一名运维或安全工程师,掌握一套完整的 Linux 应急响应命令,能帮你快速定位问题、控制影响、收集证据。
本文按应急响应的常见流程,整理了大量实战命令,从信息收集、进程排查、网络连接、日志分析、文件排查、账户审计、持久化清理到最终加固,覆盖完整闭环。建议收藏,关键时刻直接翻出来用。
一、应急响应前的准备
1.1 先保护好现场
在动手排查之前,有几件事必须注意:
- • 不要随意重启服务器:重启会清空内存中的关键证据。
- • 先拍照/截图保存异常现象:比如异常进程、可疑文件、当前登录用户等。
- • 优先使用只读方式收集证据:避免修改文件时间戳。
- • 准备一台干净的机器用于分析:把可疑样本拖下来单独分析。
1.2 记录当前环境
先快速记录系统基础信息,方便后续对比。
# 系统版本cat /etc/os-releaseuname -a# 当前时间和运行时间dateuptime# 当前登录用户whowlast# 当前 shell 历史history
二、网络连接排查
攻击者入侵后通常会建立反向 Shell、下载恶意程序、连接 C2 服务器。网络连接是最先要看的地方。
2.1 查看当前网络连接
# 查看所有 TCP/UDP 连接ss -antup# 只看 ESTABLISHED 连接ss -antup | grep ESTAB# 按端口统计连接数ss -ant | awk '{print $4}' | cut -d: -f2 | sort | uniq -c | sort -rn# 查看监听端口ss -tlnp2.2 查看路由和网卡
# 路由表ip routeroute -n# 网卡信息ip addrifconfig# ARP 表arp -aip neigh
2.3 追踪网络包
# 抓包保存到文件tcpdump -i eth0 -w /tmp/capture.pcap# 只抓特定端口tcpdump -i eth0 port 8080 -w /tmp/port8080.pcap# 实时查看可疑 IP 通信tcpdump -i eth0 host 192.168.1.100
2.4 查看防火墙状态
# iptablesiptables -L -n -v# firewalldfirewall-cmd --list-all# ufwufw status verbose
三、进程与服务排查
3.1 查看运行中的进程
# 按 CPU/内存排序显示进程tophtop# 查看所有进程的详细信息ps aux# 查看进程树pstree -p# 查看某个用户的进程ps -u www-data -f
3.2 定位可疑进程
# 查看占用 CPU 最高的进程ps aux --sort=-%cpu | head -20# 查看占用内存最高的进程ps aux --sort=-%mem | head -20# 查看没有父进程的进程(可能是孤儿进程)ps -ef | awk '$3 == 1 {print $0}'# 查看隐藏进程ps -ef | awk '{print $2}' | sort -n | uniq > /tmp/ps.pidsls /proc | grep -E '^[0-9]+$' | sort -n | uniq > /tmp/proc.pidsdiff /tmp/ps.pids /tmp/proc.pids3.3 查看进程对应的文件
# 查看进程启动命令ls -l /proc/<PID>/exe# 查看进程打开的文件lsof -p <PID># 查看进程的环境变量cat /proc/<PID>/environ | tr '\0' '\n'# 查看进程的启动时间和命令行ps -eo pid,ppid,lstart,cmd
3.4 查看计划任务
攻击者常通过 crontab、systemd timer 等方式维持持久化。
# 当前用户的计划任务crontab -l# 系统级计划任务ls -la /etc/cron*cat /etc/crontab# 查看所有用户的 crontabfor user in $(cat /etc/passwd | cut -f1 -d:); do echo "--- $user ---"; crontab -u $user -l 2>/dev/null; done# systemd timersystemctl list-timers --all
3.5 查看开机启动项
# systemd 服务systemctl list-unit-files --type=service | grep enabled# 传统 init.dls -la /etc/rc.d/ /etc/init.d/# 各运行级别启动脚本ls -la /etc/rc*.d/
四、用户与权限排查
4.1 查看用户账户
# 查看所有用户cat /etc/passwd# 查看所有组cat /etc/group# 查看有 root 权限的用户awk -F: '$3 == 0 {print $1}' /etc/passwdgrep -E 'sudo|wheel' /etc/group# 查看可以免密 sudo 的用户cat /etc/sudoerscat /etc/sudoers.d/*4.2 查看登录记录
# 最近登录的用户lastlastlog# 失败的登录尝试lastb# 查看 SSH 登录日志grep -i "accepted" /var/log/securegrep -i "accepted" /var/log/auth.log# 查看登录失败记录grep -i "failed password" /var/log/securegrep -i "failed password" /var/log/auth.log
4.3 查看当前在线用户
whowusers
五、文件系统排查
5.1 查找近期修改的文件
# 最近 24 小时内修改的文件find / -mtime -1 -type f 2>/dev/null# 最近 1 小时内修改的文件find / -mmin -60 -type f 2>/dev/null# 最近 7 天内新增的可执行文件find / -type f -mtime -7 -perm /111 2>/dev/null# 查看 /tmp、/dev、/var/tmp 等敏感目录find /tmp /var/tmp /dev/shm -type f -mmin -60 2>/dev/null
5.2 查找可疑文件
# 查找没有属主的文件find / -nouser -o -nogroup 2>/dev/null# 查找 SUID/SGID 文件find / -type f
-ls 2>/dev/null# 查找隐藏文件find / -name ".*" -type f 2>/dev/null | head -50# 查找可疑脚本find / -type f $ -name "*.sh" -o -name "*.py" -o -name "*.pl" $ -mtime -1 2>/dev/null
5.3 文件完整性检查
# 计算文件哈希md5sum /path/to/filesha256sum /path/to/file# 批量计算目录下文件哈希find /bin /sbin /usr/bin /usr/sbin -type f -exec md5sum {} \; > /tmp/baseline.md5# 用 rpm 检查系统文件是否被篡改(RPM 系统)rpm -Va# 用 dpkg 检查(Debian/Ubuntu)dpkg -V5.4 查找 WebShell/木马
# 查找 webshell 常见特征find /var/www -type f $ -name "*.php" -o -name "*.jsp" -o -name "*.asp" -o -name "*.aspx" $ -exec grep -lE "eval|assert|base64_decode|shell_exec|passthru|system|exec" {} \;# 用 clamav 扫描clamscan -r /var/www/# 用 yara 规则扫描yara -r /path/to/rules /var/www/
六、日志分析
6.1 常见日志路径
# 认证日志/var/log/secure # CentOS/RHEL/var/log/auth.log # Debian/Ubuntu# 系统日志/var/log/messages/var/log/syslog# Web 服务日志/var/log/nginx//var/log/apache2//var/log/httpd/# SSH 日志/var/log/secure/var/log/auth.log
6.2 日志分析常用命令
# 查看日志末尾实时输出tail -f /var/log/secure# 按时间范围筛选awk '/2026-07-01 10:00:00/,/2026-07-01 12:00:00/' /var/log/secure# 统计 IP 访问次数cat /var/log/nginx/access.log | awk '{print $1}' | sort | uniq -c | sort -rn | head -20# 查找 POST 请求grep '"POST' /var/log/nginx/access.log# 查找状态码 200 以上的请求grep -E '" [4-5][0-9][0-9] ' /var/log/nginx/access.log# 查找异常 UAgrep -iE "sqlmap|nmap|masscan|gobuster|dirbuster" /var/log/nginx/access.log6.3 journalctl 查询
# 查看所有日志journalctl# 查看 SSH 服务日志journalctl -u sshd# 查看指定时间段的日志journalctl --since "2026-07-01 10:00:00" --until "2026-07-01 12:00:00"# 查看内核日志journalctl -k
七、内存与系统信息排查
7.1 内存使用情况
free -hcat /proc/meminfovmstat 1 5
7.2 磁盘使用情况
df -hdu -sh /var/log/*lsblkfdisk -l
7.3 加载的内核模块
lsmodmodinfo <module_name>
7.4 查看系统调用和动态链接
# 查看程序依赖ldd /path/to/binary# strace 追踪系统调用strace -p <PID># ltrace 追踪库函数调用ltrace -p <PID>
八、持久化后门排查
8.1 检查 SSH 密钥
# 查看各用户 authorized_keyscat /root/.ssh/authorized_keysls -la /home/*/.ssh/cat /home/*/.ssh/authorized_keys# 检查已知主机cat /etc/ssh/ssh_known_hosts
8.2 检查环境变量与别名
# 全局环境变量cat /etc/profilecat /etc/bashrccat /etc/environment# 用户环境变量cat ~/.bashrccat ~/.bash_profilecat ~/.bash_aliases# 当前 shell 别名alias
8.3 检查 PAM 后门
# 查看 PAM 配置文件ls -la /etc/pam.d/cat /etc/pam.d/sshdcat /etc/pam.d/system-auth# 检查 pam 模块是否被替换rpm -Vf /etc/pam.d/* 2>/dev/null
8.4 检查 LD_PRELOAD 劫持
# 查看全局预加载库cat /etc/ld.so.preload# 查看进程环境变量中的 LD_PRELOADcat /proc/<PID>/environ | tr '\0' '\n' | grep -i preload
九、常用分析工具
9.1 在线查杀与威胁情报
# VirusTotal 命令行查询(需安装 vt-cli)vt file <hash>vt url <url># 本地威胁情报匹配curl -s https://urlhaus-api.abuse.ch/v1/urls/recent/limit/10/
9.2 进程内存 Dump
# 生成进程内存转储gcore -o /tmp/dump <PID># 从内存中提取字符串strings /tmp/dump.<PID> | grep -iE "password|token|http|curl|wget"
9.3 文件取证工具
# 查看文件类型file /path/to/file# 查看 ELF 文件信息readelf -a /path/to/binary# 反编译或查看字符串strings /path/to/binaryobjdump -d /path/to/binary
十、应急响应后的清理与加固
10.1 清理恶意内容
# 终止恶意进程kill -9 <PID># 删除恶意文件rm -f /path/to/malware# 清理可疑定时任务crontab -e# 禁用可疑 systemd 服务systemctl stop <service>systemctl disable <service>
10.2 修改凭据
# 修改 root 密码passwd root# 修改所有用户密码for user in $(awk -F: '$3 >= 1000 {print $1}' /etc/passwd); do echo "$user:NewStrongP@ssw0rd" | chpasswd; done# 撤销可疑 SSH 密钥> /root/.ssh/authorized_keys10.3 加固建议
# 关闭密码登录,改用密钥PasswordAuthentication noPermitRootLogin no# 限制登录用户AllowUsers admin ops# 更新系统和软件yum update -yapt update && apt upgrade -y# 开启审计auditctl -w /etc/passwd -p wa -k user_changesauditctl -w /etc/shadow -p wa -k password_changes
十一、推荐应急响应流程图
一个完整的应急响应流程通常如下:
- 1. 接报:确认告警真实性,收集初步信息。
- 2. 隔离:必要时断网或限制出网,防止横向移动。
- 3. 取证:保存内存、进程、网络、日志等关键证据。
- 4. 分析:按本文命令逐步排查,定位入侵路径。
- 5. 清理:删除恶意文件、关闭后门、修复漏洞。
- 6. 恢复:验证系统干净后恢复业务。
- 7. 加固:补齐安全短板,防止再次入侵。
- 8. 复盘:输出事件报告,总结经验。
总结
Linux 应急响应没有一招制胜的绝招,靠的是清晰的思路 + 熟练的命令 + 完整的证据链。本文整理的命令覆盖了从发现到溯源再到加固的全流程,建议你:
- • 收藏本文,遇到应急情况直接按流程排查。
- • 在平时建立好系统基线(文件哈希、正常进程、正常连接)。
- • 应急响应时保持冷静,先保护现场,再逐步分析。
安全是一场持久战,愿你的服务器永远不被打扰。
如果这篇文章对你有帮助,欢迎点赞、收藏、转发,让更多运维和安全同行少走弯路。