上一篇 下一篇 分享链接 返回 返回顶部

服务器突然多了陌生进程?先别急着删除,这套排查方法更稳妥

发布人:Minchunlin 发布时间:2026-06-15 09:59 阅读量:256

服务器运行一段时间后,管理员可能会在任务管理器、topps 列表里发现一些从未见过的进程。它可能占用较高的 CPU,也可能名称奇怪、运行目录异常,甚至不断向外建立网络连接。

遇到这种情况,很多人的第一反应是立即结束进程或删除文件。但在没有确认进程来源之前,直接处理可能导致网站中断、数据库异常,也可能破坏入侵痕迹。

陌生进程不一定是病毒。系统服务、监控程序、网站组件、自动更新任务,都可能产生不熟悉的进程。正确做法是先判断它“从哪里来、正在做什么、是否会再次启动”,再决定如何处理。

先看服务器出现了什么异常

以一台 A5IDC 香港三网服务器为例,配置为 E3-1245 V3、16GB 内存、240GB SSD,接入30M CN2+CMIN2+CU三网优化线路,主要运行企业网站、PHP 后台和 MySQL 数据库。

日常监控中发现服务器负载突然升高,CPU 使用率长期接近100%,但网站访问量并没有明显增加。通过 top 查看后,发现一个不熟悉的进程持续占用多个CPU线程。

这时不要只根据进程名称判断。恶意程序可能伪装成 systemdkworkermysql 等正常名称,而部分正常程序的名称本身也可能比较陌生。

排查重点应放在以下几个方面:

  • 进程由哪个用户启动

  • 可执行文件保存在哪里

  • 父进程是谁

  • 启动了多长时间

  • 正在访问哪些文件

  • 是否存在异常网络连接

  • 结束后是否会自动恢复

Linux服务器如何查看陌生进程

首先可以通过 tophtop 找出CPU、内存占用异常的进程,并记录对应的PID。

top

假设发现异常进程PID为 2684,可以继续查看完整启动命令:

ps -fp 2684

或者查看更详细的信息:

ps -p 2684 -o pid,ppid,user,lstart,etime,cmd

这里需要重点关注 PPID,也就是父进程编号。如果陌生进程由 Nginx、PHP-FPM、Java 或某个业务脚本启动,可能与网站程序有关;如果它的父进程异常、启动链路混乱,或者直接由临时目录中的脚本启动,就需要提高警惕。

接着查看进程对应的可执行文件:

readlink -f /proc/2684/exe

正常系统程序通常位于:

/usr/bin/
/usr/sbin/
/bin/
/sbin/

如果进程文件位于以下目录,则需要重点排查:

/tmp/
/var/tmp/
/dev/shm/
/home/某个网站目录/uploads/

这些目录并不是一定有问题,但经常被攻击者用于保存临时脚本、挖矿程序或下载器。

还可以查看进程当前打开的文件:

lsof -p 2684

如果程序不断读取网站配置、SSH密钥、数据库文件,或者操作与其业务无关的目录,风险会明显增加。

检查进程是否存在异常网络连接

部分恶意进程本身CPU占用并不高,但会持续连接外部服务器、接收命令或上传数据。因此,网络连接也是判断进程性质的重要依据。

可以执行:

ss -antp

只查看指定进程的连接:

lsof -Pan -p 2684 -i

需要关注的情况包括:

  • 持续连接多个陌生海外IP

  • 连接非常规高位端口

  • 短时间建立大量外连

  • 向外发送大量数据

  • 监听业务中未使用的端口

不过,连接外部IP并不等于恶意行为。CDN、对象存储、邮件接口、支付接口、软件更新和监控平台都可能产生外连。判断时要结合业务用途、目标IP和程序来源综合分析。

检查进程是否会自动启动

结束一个进程并不代表问题已经解决。如果它由计划任务、系统服务或网站后门自动拉起,几秒钟后就可能重新运行。

Linux服务器可以检查系统服务:

systemctl list-units --type=service --state=running
systemctl status 服务名称

检查当前用户和系统计划任务:

crontab -l
cat /etc/crontab
ls -la /etc/cron.d/
ls -la /etc/cron.hourly/
ls -la /etc/cron.daily/

还需要查看常见启动位置:

/etc/systemd/system/
/usr/lib/systemd/system/
/etc/rc.local
/root/.bashrc
/root/.profile

如果发现计划任务每分钟执行一次陌生脚本,或者 systemd 服务指向 /tmp/dev/shm 等目录中的文件,通常具有较高风险。

Windows服务器如何排查

Windows服务器可以先在任务管理器中查看进程名称、CPU占用、内存占用和运行用户,然后右键选择“打开文件所在的位置”。

正常系统进程通常位于:

C:\Windows\System32\
C:\Windows\SysWOW64\
C:\Program Files\

如果一个伪装成系统服务的程序运行在用户临时目录、下载目录或网站上传目录,需要进一步确认其来源。

还可以使用 PowerShell 查看进程路径:

Get-CimInstance Win32_Process |
Select-Object ProcessId, ParentProcessId, Name, ExecutablePath, CommandLine

查看网络连接及关联进程:

Get-NetTCPConnection |
Select-Object LocalAddress, LocalPort, RemoteAddress, RemotePort, State, OwningProcess

Windows还应重点检查:

  • 任务计划程序

  • 系统服务

  • 注册表启动项

  • 用户启动目录

  • IIS网站目录中的异常脚本

  • 最近新增的管理员账户

不要只依赖杀毒软件的扫描结果。未报毒只能说明当前特征库没有识别出来,并不能完全证明文件安全。

如何判断进程是否可信

判断陌生进程时,可以按照“来源、行为、权限、持久化”四个方向进行分析。

1. 来源是否清楚

检查程序是否由系统软件包、运维面板、监控工具或业务程序安装。Linux可以查询文件属于哪个软件包:

Debian、Ubuntu系统:

dpkg -S /usr/bin/程序名称

CentOS、Rocky Linux系统:

rpm -qf /usr/bin/程序名称

如果程序不属于任何已安装软件包,也没有明确的业务来源,就要继续调查。

2. 行为是否符合业务

数据库进程占用内存较高可能是正常现象,但一个图片处理程序长时间占满全部CPU,就不太合理。

判断时应结合服务器用途。例如企业网站服务器通常会运行 Nginx、PHP-FPM、MySQL、Redis、监控Agent等服务。突然出现持续高负载的陌生二进制文件,显然不符合正常业务特征。

3. 权限是否过高

查看进程是否以 rootSYSTEM 或管理员权限运行。权限越高,潜在影响越大。

但需要注意,很多正常系统服务也必须使用高权限。因此,高权限只能说明风险较高,不能单独作为恶意判断依据。

4. 是否存在持久化行为

如果结束进程后立即重新出现,说明背后可能存在守护进程、计划任务、系统服务或网站后门。

此时应先找到重新启动它的源头,而不是反复执行 kill -9

不要急着直接删除文件

发现可疑进程后,建议先记录以下信息:

ps -fp 2684
readlink -f /proc/2684/exe
lsof -p 2684
ss -antp
sha256sum /可疑文件路径

同时保存相关系统日志、登录日志、网站访问日志和计划任务内容。

如果业务允许,可以先通过防火墙限制可疑外连,或者暂时将服务器隔离,避免数据继续外泄。然后再停止进程:

kill 2684

如果普通停止无效,再考虑:

kill -9 2684

直接使用 kill -9 不会给程序清理资源和写入状态的机会,因此不建议作为第一步操作。

对于已经确认的恶意文件,还需要同时清理其启动项、计划任务、下载脚本、关联账户和网站后门,否则文件很可能再次出现。

发现恶意进程后还要检查什么

恶意进程往往只是表面现象。即使将它删除,也要继续查找攻击入口。

建议重点检查:

  • SSH或远程桌面是否存在陌生登录

  • 是否新增了系统用户或管理员账户

  • 网站程序是否存在文件上传漏洞

  • CMS、插件和运行环境是否长期未更新

  • SSH密码是否过于简单

  • 数据库或管理面板是否暴露公网

  • 网站目录是否出现近期新增或被修改的文件

  • 防火墙是否开放了不必要的端口

  • 密钥、数据库密码和API凭据是否可能泄露

Linux可以查看近期登录:

last
lastb

查看近期修改的文件:

find /网站目录 -type f -mtime -3

这里的 -mtime -3 表示查找最近三天内修改过的文件。实际排查时应根据异常发生时间调整范围。

什么情况下建议重装系统

如果只是某个业务脚本配置错误,找到来源并修复即可,不需要重装服务器。

但出现以下情况时,应认真考虑备份必要业务数据后重装系统:

  • root或管理员权限已经被获取

  • 核心系统命令被替换

  • 存在多个无法确认来源的后门

  • 日志被大量删除或篡改

  • 无法确定攻击者修改了哪些文件

  • 清理后恶意进程反复出现

重装时不要直接将整个旧系统目录复制回来。应只备份经过检查的数据库、配置文件和业务数据,并重新安装运行环境、修改所有密码和密钥。

总结

服务器出现陌生进程时,最重要的不是马上结束它,而是先确认进程的启动用户、执行路径、父进程、网络连接和自动启动方式。

一个相对完整的排查顺序是:

发现资源异常,记录PID;查看启动命令和文件路径;检查父进程与网络连接;排查计划任务和系统服务;保存日志与文件哈希;限制风险后再停止进程;最后追查攻击入口并修复。

服务器安全排查不能只看进程名称,也不能只依赖一次病毒扫描。将进程行为、系统日志、网络连接和业务用途结合起来,才能更准确地区分正常服务、配置异常和真正的恶意程序。

目录结构
全文