Linux 应急响应排查速查命令表
| 现象 | 命令 | 作用 |
|---|---|---|
| 系统负载高 / CPU 飙升 | top -c -o %CPU |
按 CPU 使用率排序,查看高消耗进程及完整命令行 |
| `ps aux --sort=-%cpu | head -10` | |
pidstat 1 5 |
每秒采样一次,连续 5 次,观察各进程 CPU 动态变化 | |
| 内存异常占用 | free -h |
查看内存整体使用情况(总量、已用、可用) |
| `ps aux --sort=-%mem | head -10` | |
smem -p -s rss |
更精确统计进程实际物理内存(含共享库) | |
| 可疑网络连接 | netstat -antup |
显示所有 TCP/UDP 连接、监听端口及对应进程 PID |
ss -tunp |
替代 netstat,快速列出带进程名的网络连接 | |
lsof -i |
列出所有打开的网络连接及对应程序 | |
lsof -i :<端口号> |
查看指定端口的连接详情 | |
| 异常外连 IP | `netstat -ant | awk '/ESTABLISHED/{print $5}' |
| `ss -tunp | grep ESTAB | |
| 可疑进程 | ps auxf |
树状显示进程关系,发现异常子进程 |
pstree -p |
进程树展示,便于识别恶意进程派生关系 | |
ls -l /proc/<PID>/exe |
查看进程对应的可执行文件路径 | |
cat /proc/<PID>/cmdline |
获取进程完整启动命令(含参数) | |
strace -p <PID> |
实时跟踪进程的系统调用,发现恶意行为 | |
| 隐藏进程 | `ps -e -o pid,cmd | grep -v '^ *PID' |
| `cat /proc/[0-9]*/status | grep -E "^(Pid | Name)"` | |
| 异常登录 / 用户 | last |
查看近期所有登录记录(包括重启) |
lastb |
查看失败的登录尝试(暴力破解痕迹) | |
who |
当前登录的用户及其终端、时间 | |
w |
更详细的当前登录用户及活动 | |
| `cat /etc/passwd | grep -E "/bin/bash$"` | |
grep ':x:0:' /etc/passwd |
检查是否存在除 root 外的 UID=0 用户 | |
awk -F: '$3==0 {print $1}' /etc/passwd |
同上,更简洁 | |
| 历史命令异常 | history |
查看当前用户执行过的命令历史 |
cat ~/.bash_history |
直接读取 bash 历史文件 | |
grep -i wget ~/.bash_history |
搜索历史中的下载操作 | |
grep -i curl ~/.bash_history |
搜索 curl 命令痕迹 | |
| 定时任务(后门持久化) | crontab -l |
查看当前用户的 cron 任务 |
crontab -u root -l |
查看 root 用户的 cron 任务 | |
ls -la /etc/cron* |
检查系统级 cron 目录(cron.d, cron.daily, hourly 等) | |
cat /etc/crontab |
查看系统主 crontab 文件 | |
cat /var/spool/cron/crontabs/* |
查看所有用户的 crontab 文件(Debian/Ubuntu 路径) | |
cat /var/spool/cron/* |
(CentOS/RHEL 路径) | |
| 开机启动项 / 服务后门 | `systemctl list-unit-files | grep enabled` |
ls -la /etc/systemd/system/multi-user.target.wants/ |
查看多用户模式下的自启服务软链接 | |
chkconfig --list |
(旧 sysvinit)查看所有运行级服务状态 | |
cat /etc/rc.local |
检查 rc.local 中的自启命令(常见后门位置) | |
ls -la ~/.config/autostart/ |
检查桌面环境自启动项(针对图形界面) | |
| 文件篡改 / 木马文件 | find / -type f -mtime -1 -ls |
查找最近 1 天内修改过的文件 |
find / -name "*.jsp" -mtime -2 |
按扩展名+修改时间查找(Webshell 常见) | |
find / -perm -4000 -type f -ls |
查找 SUID 文件(提权后门) | |
stat <文件路径> |
查看文件修改时间、访问时间、属性变化 | |
| `md5sum <文件> | diff - <(cat 原始md5)` | |
ls -la /tmp /var/tmp /dev/shm |
检查常见临时目录是否有可疑执行文件 | |
find / -type f -size +10M -exec ls -lh {} \; |
查找大文件(可能为加密容器或数据打包) | |
| SSH 后门 / 密钥 | cat ~/.ssh/authorized_keys |
查看当前用户的 SSH 授权公钥(异常入口) |
| `cat /etc/ssh/sshd_config | grep -E "(PermitRootLogin | PasswordAuthentication | |
find / -name "id_rsa" -o -name "id_dsa" 2>/dev/null |
搜索私钥文件位置 | |
| Webshell 排查 | find /var/www/ -name "*.php" -mtime -3 |
查找最近 3 天新创建的 PHP 文件 |
grep -r "eval(" /var/www/html/ |
在 Web 目录搜索常见恶意函数 | |
grep -r "base64_decode" /var/www/html/ |
搜索 base64 解码(混淆 WebShell 常用) | |
grep -r "system(" /var/www/html/ |
搜索命令执行函数 | |
find /var/www/ -type f -name "*.jsp" -exec grep -l "getRuntime" {} \; |
搜索 Java WebShell 特征 | |
| 日志分析 | tail -f /var/log/messages (或 /var/log/syslog) |
实时跟踪系统日志 |
grep "Failed password" /var/log/secure (CentOS) |
查看 SSH 登录失败记录 | |
grep "Accepted password" /var/log/auth.log (Ubuntu) |
查看成功的 SSH 登录 | |
| `grep -E "([0-9]{1,3}.){3}[0-9]{1,3}" /var/log/secure | cut -d: -f4` | |
journalctl -u sshd --since "1 hour ago" |
使用 systemd 日志查看 SSH 服务最近 1 小时记录 | |
last -f /var/log/wtmp.1 |
查看历史 wtmp 日志(被轮转的) | |
| 内核模块 / Rootkit | lsmod |
列出已加载的内核模块,排查可疑 ko |
modinfo <模块名> |
查看模块详细信息(路径、依赖) | |
cat /proc/modules |
原始格式的已加载模块列表 | |
rkhunter -c |
运行 Rootkit Hunter(需安装) | |
chkrootkit |
另一款 Rootkit 扫描工具 | |
| 环境变量 / 动态链接劫持 | echo $PATH |
查看当前 PATH 路径,确认是否存在异常目录 |
cat /etc/ld.so.preload |
检查动态链接器预加载文件(常见用户态 Rootkit) | |
ldd /bin/ls |
查看 ls 命令依赖的共享库,判断是否被劫持 | |
| 进程隐藏 / 替换系统命令 | which ps which netstat |
确认命令路径是否被篡改(例如指向 /tmp) |
type ps |
查看 ps 是内部命令还是别名/文件 | |
alias |
检查是否存在命令别名劫持(如 ls 别名隐藏文件) | |
busybox ps (若安装了 busybox) |
使用静态编译的 busybox 执行,绕过被替换的系统命令 | |
| 系统资源异常(IO/带宽) | iotop -o |
查看正在进行磁盘 IO 的进程(需 root) |
nethogs |
按进程实时显示网络带宽占用 | |
iftop |
显示主机与外部 IP 的实时流量详情 | |
| 清理与恢复辅助 | kill -9 <PID> |
强制终止可疑进程 |
chattr -i <文件> |
移除不可变属性,以便删除被锁定的后门文件 | |
rm -rf <可疑文件> |
删除恶意文件 | |
systemctl disable <恶意服务> |
禁用自启的服务 | |
crontab -r |
清空当前用户的 cron 任务(谨慎使用) |
使用建议
- 以上命令多数需要
root权限,建议先sudo -i切换到 root 用户。 - 排查前先对关键数据进行备份(如
dd或tar),避免破坏证据链。 - 发现可疑进程或文件后,谨慎使用
kill或rm,先确认影响范围。 - 若进程或文件无法删除,检查是否被
chattr +i锁定、内核模块挂钩或位于/proc/等特殊路径。 - 生产环境操作需谨慎,必要时先隔离主机再排查。