服务器带宽被恶意程序占用,教你一键定位
现象与准备
当服务器带宽被恶意程序占满时,网站访问会变得异常缓慢甚至完全中断。
本文将教你如何一键定位并清理这些恶意进程,恢复服务器的正常网络服务。
你需要用 SSH 客户端(如 Xshell、Putty 或终端)登录服务器。
接着安装流量监控工具 iftop 和 nethogs,运行以下命令(以 CentOS/Ubuntu 为例):
# CentOS/RHEL 7+
yum install -y epel-release && yum install -y iftop nethogs
# Ubuntu/Debian
apt update && apt install -y iftop nethogs
如果使用宝塔面板,也可以在“软件商店”搜索 iftop 插件一键安装。
安装后即可进入定位环节。
一键定位:三种命令快速找出恶意进程
方法一:iftop 看 IP 流量
运行 iftop -i eth0(将 eth0 替换为你的主网卡名称,可通过 ip addr 查看)。
界面上方显示每个连接的带宽占用,按 T 查看累计流量,按 P 暂停刷新。
如果发现大量数据发往陌生IP,很可能就是恶意程序。
方法二:nethogs 按进程排序
nethogs 更直观:运行 nethogs eth0,会列出所有进程的实时流量。
例如:
PID USER PROGRAM SENT RECEIVED
1234 root /tmp/.x 1.2 MB/s 0.5 MB/s
重点关注位于 /tmp、/dev/shm 或随机目录下的进程,基本就是恶意程序。
方法三:ss 结合 lsof 精确查找
先通过 ss -tup 查看所有外连对应的 PID,再用 lsof -p PID 查看进程路径,或直接 ls -l /proc/PID/exe 快速定位可执行文件。
ss -tup | grep ESTAB
ls -l /proc/1234/exe
清除与防复活
找到恶意进程后,执行:
kill -9 PID # 强制终止
rm -rf /tmp/.x # 删除恶意文件
但很多恶意程序会 写定时任务或注册系统服务 自动复活,必须彻底清理:
- 检查
/etc/crontab和crontab -l,删除包含恶意脚本的条目。 - 查看
/var/spool/cron/下各用户的定时任务,同样删除。 - 排查
/etc/systemd/system/或/etc/init.d/中新增的服务文件,执行systemctl disable 服务名并删除文件。 - 检查
/etc/rc.local中的启动命令。
建议再运行 chkrootkit 或 rkhunter 扫描一遍系统后门。
避坑指南与常见问题
Q:iftop 显示很多IP但看不到进程名?
A:改用 nethogs 或 ss -tup 配合 lsof 查看。
Q:kill 后带宽又跑满怎么办?
A:说明有守护进程未清除。重复上一步,重点检查定时任务和服务文件。
Q:误杀了系统进程如何恢复?
A:用 ps aux 确认名字再杀。如果不慎终止了关键服务(如 sshd),立即重启服务器或运行 systemctl restart sshd。
避坑提醒: 不要用 pkill -f 匹配字符串 批量杀进程,可能误伤正常程序。
根据 PID 逐一确认最安全。
验证结果
清理完成后,运行 iftop 或 nethogs 观察带宽是否回落。
登录云服务商控制台的“监控”页面,对比清洗前后的带宽曲线。
同时用 top 查看 CPU 占用是否下降。
如果仍有异常,重复定位步骤,检查是否有新进程产生。
如果你正在处理服务器带宽被恶意程序占用的问题,建议先按本文步骤完整执行,再根据自身环境微调;
遇到异常时优先回看定时任务和隐藏进程部分。