服务器带宽跑满排查,定位恶意爬虫与CC攻击

服务器带宽突然跑满,最直接的表现是网站打开变慢、SSH 连接卡顿,甚至完全无法访问。
这种情况通常不是硬件故障,而是流量异常。
本文按“看清流量→定位来源→判断类型→处理封禁→验证效果”的顺序,带零基础用户一步步排查恶意爬虫与 CC 攻击。

先确认:带宽是不是真的被占满了

登录服务器后,不要急着装软件,先用系统自带命令看整体流量。

# 查看网卡实时流量,按 Ctrl+C 退出
sar -n DEV 1 5

如果系统没有 sar,可以用 cat /proc/net/dev 查看累计字节数,间隔几秒执行两次,对比 eth0ens33 的接收和发送字节差值。

更直观的方式是安装 iftop

# CentOS/AlmaLinux
 yum install iftop -y
# Ubuntu/Debian
 apt install iftop -y
# 运行,-P 显示端口,-n 不解析域名
iftop -P -n

iftop 界面顶部会显示实时总带宽,下面列出连接对端的 IP 和流量。如果某个外部 IP 或某一小段 IP 段持续占据大量上行或下行流量,基本可以锁定异常来源。

从 Nginx 日志里找出高频访问者

iftop 只能看到 IP,要判断是爬虫还是 CC 攻击,需要结合 Web 日志。
以宝塔面板环境为例,日志路径通常在 /www/wwwlogs/ 下。

# 统计访问量最高的前 20 个 IP
awk '{print $1}' /www/wwwlogs/你的域名.log | sort | uniq -c | sort -rn | head -20

如果某个 IP 的请求数远高于其他 IP,比如单 IP 几分钟内出现上万次请求,就属于异常。
继续看这个 IP 在请求什么:

# 查看该 IP 的请求 URL 和 User-Agent
grep '可疑IP' /www/wwwlogs/你的域名.log | awk '{print $7}' | sort | uniq -c | sort -rn | head

判断依据:

  • 请求集中在搜索页、动态接口或登录页,且 URL 参数不断变化,偏向 CC 攻击。
  • User-Agent 是空、常见爬虫库名称,或伪装成搜索引擎但反查 IP 不属于对应搜索引擎,偏向恶意爬虫。
  • 请求间隔极短、并发高,但每个请求都带完整浏览器头,可能是模拟正常用户的 CC 攻击。

用防火墙和 Nginx 限制异常流量

确认恶意 IP 后,先临时封禁,再配置限流规则。

方法一:firewalld 直接封 IP

firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="可疑IP" reject'
firewall-cmd --reload

方法二:Nginx 限制单 IP 请求频率

nginx.confhttp 块中加入:

limit_req_zone $binary_remote_addr zone=perip:10m rate=10r/s;

在需要保护的 serverlocation 块中引用:

limit_req zone=perip burst=20 nodelay;
limit_req_status 429;

保存后执行 nginx -t 测试配置,
nginx -s reload 生效。rate=10r/s 表示每个 IP 每秒最多 10 个请求,
超过就返回 429,
适合拦截大多数 CC 攻击。

方法三:宝塔面板操作路径

如果使用宝塔,可以在“网站→设置→配置文件”中直接加入上面的 limit_req 指令,或在“安全”页面手动拉黑 IP。
宝塔的 Nginx 防火墙插件也提供 CC 防护开关,可按提示设置周期和频率。

避坑:别把正常用户和搜索引擎误封

封禁和限流时,有几个容易踩的坑:

  • 不要直接封整个 C 段。 很多正常用户和 CDN 节点可能在同一段,封 /24 会误伤。
  • 先观察再永久封禁。 建议先用 reject 临时封 1 小时,确认没有影响业务后再写入永久规则。
  • 限流阈值不要设太低。 正常用户打开一个网页可能并发加载图片、CSS、JS,rate 设成 1r/s 会误伤,建议从 10r/s 或 20r/s 开始测试。
  • 检查是否有 CDN。 如果网站套了 CDN,Nginx 日志里看到的 IP 可能是 CDN 回源 IP,直接封禁会影响所有用户。此时应查看 X-Forwarded-For 头,并在 Nginx 中配置 real_ip 模块。
  • 保留日志。 封禁前把异常 IP 和请求样本保存到单独文件,方便后续分析或向服务商反馈。

处理完怎么验证有没有生效

执行封禁和限流后,按下面几步复查:

  1. 再次运行 iftop -P -n,观察总带宽是否回落到正常水平。
  2. awk 统计日志,确认高频 IP 的请求数明显下降或消失。
  3. 从外部网络访问网站,测试打开速度是否恢复。
  4. 查看 Nginx 错误日志 tail -f /www/wwwlogs/你的域名.error.log,确认没有大量 429 或 403 影响正常访问。

如果带宽仍然跑满,但日志里没有明显高频 IP,需要检查服务器是否被入侵、是否在对外发起攻击,或是否有其他服务占用带宽,可用 netstat -ntu 查看异常外连。

常见疑问

问:iftop 显示流量大,但 Nginx 日志请求量不高,是什么原因?

可能是非 HTTP 流量,比如邮件服务、DNS 查询、被入侵后对外发包。
iftop -P 看端口,如果大量流量走 25、53 或非常见高位端口,优先排查服务器安全。

问:封了 IP 之后,对方换 IP 继续攻击怎么办?

单 IP 封禁只能应急。
建议同时启用 Nginx 限流,并考虑接入 CDN 或高防 IP,在边缘层过滤流量。
如果攻击持续,保留日志联系服务器商协助处理。

问:限流规则会不会影响百度、Google 抓取?

如果搜索引擎抓取频率较高,可能触发 429。
可以在 Nginx 中用 map 判断 User-Agent,对已知搜索引擎爬虫单独放行,但要注意 UA 可以伪造,必要时结合 IP 反查验证。

分享到:
上一篇
裸金属服务器和云服务器优缺点对比
下一篇
服务器安全基线加固,关闭不必要端口与服务
1
系统公告

泽御云中秋国庆双节活动上线:新购8折,拼团3.99元起

尊敬的用户:
泽御云“月满中秋·礼贺国庆”双节活动现已开启,活动时间为2026年9月23日至10月10日。 活动期间可享以下福利:
1. 常规云服务器新购使用优惠码“泽御中秋国庆同乐”,符合条件的订单享8折优惠。
2. 香港精品云服务器5人拼团低至3.99元,部分4核4G套餐3人拼团年付388元,续费同价。
3. 新用户购买年付云服务器,符合活动规则可赠送2个月使用时长。
4. 老用户续费季度赠15天,续费年度赠2个月;活动期间升级配置免收配置迁移手续费。
5. 推荐好友成功下单,符合条件的推荐人可获赠7天服务器使用时长。
6. 活动期间享宕机补偿标准翻倍、简单网站迁移协助及技术工单优先处理权益。
温馨提示:优惠码不适用于拼团套餐、活动轻量产品、年付订单及续费订单;拼团套餐为独立特价活动,不与赠时类福利叠加。赠送时长不可折现、退款或跨账户转移,具体规则以活动页面说明为准。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意