服务器被植入后门,如何通过端口扫描发现隐藏进程?

当服务器被植入后门时,恶意进程通常会伪装成正常服务,或利用 rootkit 隐藏自身。
对新手来说,最直观的线索就是异常的网络连接和监听端口
本文从端口扫描切入,一步步教你找到那些躲在暗处的进程。

后门入侵的常见信号

服务器出现以下现象,就要警惕后门:

  • CPU 或内存持续走高,但找不到对应进程。
  • 系统莫名对外发起大量连接(如海外 IP)。
  • ps aux 看不到可疑进程,但网络流量异常。
  • 防火墙规则被篡改,日志中出现陌生 IP 登录成功记录。

出现任何一条,都应立即中断常规业务,启动排查流程。

准备必要的排查工具

绝大多数 Linux 发行版默认已安装以下工具,建议先确认版本:

netstat -V 2>/dev/null || echo "需要安装 net-tools"
ss --version
lsof -v 2>/dev/null || echo "需要安装 lsof"

如果缺失,使用系统包管理器安装:

  • CentOS/RHEL:yum install -y net-tools lsof
  • Ubuntu/Debian:apt install -y net-tools lsof

确保你有 root 权限sudo -i),否则 lsofnetstat 可能看不到所有进程。

分步操作:从端口扫描到进程定位

1. 列出所有监听端口

netstat -tulpn | grep LISTEN

参数说明:-t TCP,-u UDP,-l 只显示监听,-p 显示进程 PID/名称,-n 不解析域名。
也可以使用新版替代命令:

ss -tulpn | grep LISTEN

输出示例:

tcp   LISTEN  0  128  0.0.0.0:22    0.0.0.0:*   users:(("sshd",pid=1234,fd=3))
tcp   LISTEN  0  128  0.0.0.0:8080  0.0.0.0:*   users:(("java",pid=5678,fd=5))

记录所有端口号,特别是 非标准端口(如 4444、31337、65535 等)或 不认识的进程名

2. 针对可疑端口深入调查

假设发现一个端口 12345,进程名 [kworker](正常内核工作线程不会监听端口,很可能是伪装)。
使用 lsof 查看该端口详情:

lsof -i :12345

输出包含进程 PID、用户、文件描述符等。
记录 PID,然后查看该进程的可执行文件:

ls -l /proc//exe

如果指向 /tmp/dev/shm 或隐藏目录(如 .cache),极可能是后门
再查看进程启动方式:

ps -ef | grep  | grep -v grep
cat /proc//cmdline | tr '\0' ' '

若启动命令是 /bin/bash -c ... 或直接调用 Python/Perl 脚本,很可能就是恶意进程。

3. 验证是否为 rootkit 隐藏

有些高级后门会拦截系统调用(如 getdents),让 netstatss 输出不完整。
此时需要专用工具:

# 安装 chkrootkit 或 rkhunter
sudo yum install -y chkrootkit   # CentOS
sudo apt install -y chkrootkit   # Ubuntu
chkrootkit -q

如果输出包含 INFECTED 或可疑路径,说明存在内核级后门,需立即断开网络并寻求专业处理。

新手最容易踩的坑

  • 只查 TCP 忽略 UDP:很多后门(如 DNS 隧道、ICMP 后门)使用 UDP,务必同时查看。
  • 没注意高端口或随机端口:后门可能使用 49152-65535 动态端口,不要认为“高端口就是安全的”。
  • 被进程名迷惑:攻击者喜欢起名类似 [kworker][ksoftirqd]httpd 等,结合路径和资源占用判断。
  • 忘记检查 IPv6:有的后门只监听 :: 地址,netstat 默认也会显示,但新手可能误以为是正常服务。
  • 杀死进程后不清理残留文件:后门常包含启动脚本(crontab、systemd 服务),需要同时清理。

如何验证清理效果并加固系统

找到并终止后门进程后(kill -9 ),再次执行端口扫描确认端口消失。
然后:

  1. 检查 crontab:crontab -l/var/spool/cron/
  2. 检查 systemd 服务:systemctl list-units --type=service --state=running | grep -E '^\s',重点关注可疑名称。
  3. 检查开机启动项:systemctl list-unit-files | grep enabled
  4. 更新所有软件包,修改所有密码(SSH、数据库、FTP 等)。
  5. 安装 Fail2ban 或 WAF,配置防火墙只放行必要端口。

如果你正在处理服务器被植入后门的情况,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
安全运维是一场持久战,定期扫描、日志审计和最小权限原则比事后补救更重要。

分享到:
上一篇
Docker 容器启动失败,如何查看日志排查?
下一篇
宝塔面板安装后 Nginx 无法启动,教你排查配置文件
1
系统公告

泽御云五一特惠活动🔥

泽御云持证合规运营,资质齐全可查,长久稳定! 五一限时多重福利同步开启: ✅ 香港 2 核 2G 云服务器超值拼团,低价入手团长免费 ✅ 4 核 4G 多机房年付拼团,性价比拉满 ✅ 内蒙古新区限时 7 折(zeyuyunnmg)特惠,专属优惠码锁价续费 ✅ 全站通用 75 折优惠,老用户充值享专属赠金 官方站点:zeyuyun.com 合规资质齐全|售后有保障|活动限时错过不再有
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意