救救我!网站遭受大规模伪装 UA 恶意流量攻击

救救我!网站遭受大规模伪装 UA 恶意流量攻击

昨天发了篇日志,我说疑似是 OneAV 插件(微步木马扫描)引发的内耗,导致博客流量、负载高居不下。后来我把该插件删除了,博客就访问正常了,睡了一觉起来发现……仍然有持续不断的流量消耗,反正比平常高不少。

然后我开始排查,试了很多办法,比如启用 WAF 屏蔽境外流量、在 Nginx 配置中禁止空 UA 访问、用 iptables 添加各种限速和封锁规则……结果,全都没用。最离谱的是:无论是网络流量监控,还是服务器 access/error 日志,完全查不到任何可疑请求(常规的漏扫司空见惯,我都认得)。流量就是源源不断地涌进来,但后台记录一片“风平浪静”。对我这个只是折腾 WordPress 的互联网爱好者来说,已经完全超出我的知识理解范畴了。

然后我接着检查是不是博客程序本身被篡改,或者插件被污染。于是我逐个排查,先停用所有插件,再更换主题,甚至直接清空前端内容,但问题依旧。

最终我只能把博客 Kevin's Space 整站停掉——只有在彻底关站的情况下,流量才明显下降。而奇怪的是,同服务器上其他网站完全不受影响,说明攻击目标就是我的博客本身,而不是整个服务器。

我用 iftop 工具看了一下实时流量,结果非常震惊:即使没有任何人访问我的网页(我停掉了所有其他网站和后台应用,只保留 Kevin's Space 的首页),流量依然在不断涌入!

而且这些访问根本不像正常用户。我随便查了几个 IP,发现很多都伪装成国内某些知名 IT 企业的反代服务器,表面上看像是“可信流量”,但一查就暴露了真实位置,有的是爱尔兰的,有的是法国的,甚至还有北美、东南亚、非洲的——遍布全球。从这些特征来看,基本可以确定这些是“伪装 UA + 全球分布 + 高并发探测”组合攻击,目的是啥目前还不明确,但绝对不是误访问那么简单。


此后我又在宝塔后台进一步“自救”——设置了访问频率限制、单 IP 并发上限、总流量阈值等各种防护措施,试图堵住这些恶意请求。但很遗憾,这些手段几乎没有起作用,攻击依旧稳定输出,甚至毫无波动,像是精准控制过的一样。

我又转向 Cloudflare,希望通过它的 CDN 和安全防护做一道“外墙”。我开启了基本防火、开启 JS Challenge,甚至尝试把整个站点设置为“仅限受信用户访问”模式……但也没起到作用!?

救救我!网站遭受大规模伪装 UA 恶意流量攻击
Cloudflare 日志

最后,我决定从源头卡住——直接在 Nginx 做了配置,强制所有流量必须经过 Cloudflare,服务器只接收来自 Cloudflare 官方 IP 段的请求,其他一律拒绝(403)。别说,你真别说——流量立马就下来了。但这么做的恶果是,我自己也访问不了了,看日志能看到所有正常流量器的流量也都没了……清洗完了。

经过一番资料查阅和配置检查,我基本确认:我的 Nginx 配置逻辑没问题,Cloudflare 的设置流程也都走对了。但奇怪的是,大陆地区的大部分正常访问却全部被拦成了 403,而一些海外访客反倒可以正常加载网站。

这就非常诡异了。结合前面被攻击的情况来看,我开始怀疑——Cloudflare 可能将大陆用户误判为攻击源。可能是之前的大量恶意流量“污染”了行为特征,或者我的站点在某种攻击模型中触发了防御策略。为了修复这一点,我又尝试了 Cloudflare 提供的验证码插件(Turnstile),想着给正常用户一个验证通道,但结果也不理想。

救救我!网站遭受大规模伪装 UA 恶意流量攻击
加了个 HTML 验证

最后,我用了一个你大概已经体验的“土办法”——写了一个纯 HTML 的验证码页面,强制所有访问本站的用户,必须先跳转到验证页,输入验证码之后,才能访问他们原本想打开的页面

我知道,这种方式非常“原始”,也确实影响用户体验——别说 SEO 了,连我自己测试都觉得麻烦。但没办法,它实用啊!!!更重要的是,以我目前的能力和资源,也确实想不到比这更有效、更可靠的方式了。相比被持续刷流量、服务器负载爆表、CF 误判正常用户,我宁愿牺牲点交互体验,至少网站能稳定运行下来。


目前网站终于恢复可访问状态了,虽然恶意流量依然持续在打……这段时间,我还顺手把阿里云服务器宽带限制在了 2MB/s,意外发现——只要搭配好 CDN,跑几个 WordPress 小站其实也挺够用的。所以,以后我也不打算升太高。

现在我开始着手处理这批恶意流量的具体来源。我依然用“土办法”:自己写了个脚本,实时记录访问日志(IP、UA、来源),再手动分析出那些可疑段,逐个加入服务器防火墙黑名单。

#!/bin/bash

LOGFILE="/root/visitor-log.txt"
INTERFACE=$(ip route get 8.8.8.8 | awk '{print $5}')

echo "[*] 开始监听接口:$INTERFACE,日志输出至 $LOGFILE"

touch "$LOGFILE"

sudo stdbuf -oL tcpdump -i "$INTERFACE" port 80 or port 443 -nn -l \
| awk '{print $3}' \
| while read raw_ip; do
    # 提取纯净 IP(去除端口或多余内容)
    ip=$(echo "$raw_ip" | grep -oE '([0-9]{1,3}\.){3}[0-9]{1,3}')
    
    # 跳过空或内网地址
    [[ -z "$ip" ]] && continue
    [[ "$ip" =~ ^(127|10|192\.168|172\.(1[6-9]|2[0-9]|3[0-1]))\. ]] && continue

    # 反查域名
    hostname=$(dig +short -x "$ip" | sed 's/\.$//')
    
    # 写入日志
    if [ -z "$hostname" ]; then
        echo "$(date '+%F %T') => $ip" >> "$LOGFILE"
    else
        echo "$(date '+%F %T') => $ip ($hostname)" >> "$LOGFILE"
    fi
done

通过以上脚本,能生成形如下边的流量日志,在短短半小时内,日志中累计记录了超过 40,000 条访问记录,数据量惊人!这进一步印证了——我的网站当前确实正在承受一波持续、高频、分布式的恶意流量攻击

接下来我会对这些日志做一轮高频 IP 提取,把那些反复刷请求的地址拉出来,加进防火墙黑名单。这完全是一项纯体力活,而且肯定会有误封——正常用户可能也被波及……有没有更好的办法?兄弟们,救救我!

2025-06-03 14:04:37 => 124.90.71.75
2025-06-03 14:04:38 => 117.152.144.104
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 124.90.71.111
2025-06-03 14:04:38 => 167.94.138.36 (scanner-06.ch1.censys-scanner.com)
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 167.94.138.36 (scanner-06.ch1.censys-scanner.com)
2025-06-03 14:04:38 => 40.77.190.150 (msnbot-40-77-190-150.search.msn.com)
2025-06-03 14:04:38 => 100.100.30.25
2025-06-03 14:04:39 => 167.94.138.36 (scanner-06.ch1.censys-scanner.com)
2025-06-03 14:04:39 => 100.100.30.25
2025-06-03 14:04:39 => 167.94.138.36 (scanner-06.ch1.censys-scanner.com)
2025-06-03 14:04:39 => 167.94.138.36 (scanner-06.ch1.censys-scanner.com)
2025-06-03 14:04:39 => 167.94.138.36 (scanner-06.ch1.censys-scanner.com)
2025-06-03 14:04:39 => 121.229.156.124 (sogouspider-121-229-156-124.crawl.sogou.com)
2025-06-03 14:04:39 => 167.94.138.36 (scanner-06.ch1.censys-scanner.com)
2025-06-03 14:04:39 => 167.94.138.36 (scanner-06.ch1.censys-scanner.com)
2025-06-03 14:04:39 => 121.229.156.124 (sogouspider-121-229-156-124.crawl.sogou.com)
2025-06-03 14:04:39 => 121.229.156.124 (sogouspider-121-229-156-124.crawl.sogou.com)
2025-06-03 14:04:39 => 121.229.156.124 (sogouspider-121-229-156-124.crawl.sogou.com)
2025-06-03 14:04:39 => 121.229.156.124 (sogouspider-121-229-156-124.crawl.sogou.com)
2025-06-03 14:04:39 => 121.229.156.124 (sogouspider-121-229-156-124.crawl.sogou.com)
2025-06-03 14:04:39 => 100.100.30.25
2025-06-03 14:04:39 => 121.229.156.124 (sogouspider-121-229-156-124.crawl.sogou.com)
「救救我!网站遭受大规模伪装 UA 恶意流量攻击」有 9 条评论
  • hary
    06/18/2025 at 22:24

    你这是阿里云服务器直接裸奔啊,反正备案,推荐你用多吉云CDN试一下

    • 的头像
      Kevin
      06/18/2025 at 22:38

      我用的七牛,懒得换了;
      本文对我战遭遇的描述并不准确,我后来研究透了,应该是 syn flood,https://www.shephe.com/website/syn-flood-attack-prevention-automation-script/

      • hary
        06/18/2025 at 22:39

        你是静态文件套的七牛吧,我看博客域名还是裸奔

        • 的头像
          Kevin
          06/18/2025 at 22:41

          是的,域名没有cdn,直接到源站的

          • hary
            06/18/2025 at 22:46

            我的是请求的主域名下的两个文件,尽管现在都删了,还在请求,主站套了CDN,CDN消耗掉十几个G流量,看主机流量还不到1个G

            • 的头像
              Kevin
              06/18/2025 at 22:48

              不一样,不一样,我这是IP巨多,数千到万个不同的IP,每个IP同时发起N次,或者是连续发起请求,每个请求只有几十~几百字节,拉高服务器负载,网站还查不到日志???

              • hary
                06/18/2025 at 22:51

                确实,你这更像是大量肉鸡疯狂请求,疯狂占用服务器负载,导致雪崩,流量倒不是很多了

  • 的头像
    橘林听风橘长
    06/05/2025 at 22:20

    感觉惊心动魄啊,攻击者的动机是啥?可惜我还没你懂,帮不了你啥~看来个人站长还都得学一些运维知识才行。现在网站恢复了吗。我访问非常正常

    • 的头像
      Kevin
      06/05/2025 at 22:55

      说来你可能不信,这几篇日志所提,全是我现学的(当然其实也没学,跟着gpt做就行)……???
      话说回来,到目前为止,攻击(也就是持续不断的访问)仍然在继续,不过我似乎找到了中和的方法,
      所以把网站放开了

      而且我发现,低带宽下,网站一样跑……不升上去了

发表评论

请输入关键词…