服务器被植入后门,如何通过端口扫描发现隐藏进程?
当服务器被植入后门时,恶意进程通常会伪装成正常服务,或利用 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),否则 lsof 和 netstat 可能看不到所有进程。
分步操作:从端口扫描到进程定位
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),让 netstat 和 ss 输出不完整。
此时需要专用工具:
# 安装 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 ),再次执行端口扫描确认端口消失。
然后:
- 检查 crontab:
crontab -l和/var/spool/cron/。 - 检查 systemd 服务:
systemctl list-units --type=service --state=running | grep -E '^\s',重点关注可疑名称。 - 检查开机启动项:
systemctl list-unit-files | grep enabled。 - 更新所有软件包,修改所有密码(SSH、数据库、FTP 等)。
- 安装 Fail2ban 或 WAF,配置防火墙只放行必要端口。
如果你正在处理服务器被植入后门的情况,建议先按本文步骤完整执行,再根据自己的环境做微调;
遇到异常时优先回看避坑和高频问题部分。
安全运维是一场持久战,定期扫描、日志审计和最小权限原则比事后补救更重要。