关于本站CDN遭到山西联通 IP 刷流量的说明
综述
根据经验和网友们的分析,攻击应该是PCDN用户为了均衡流量人为刷下载流量导致的。作为临时措施,本站在攻击发生期间19:50-23:00将关闭CDN服务,并屏蔽了有关IP/IP段。由此导致的访问体验下降请谅解。
如果你也是站长,为了你的网站安全,建议屏蔽以下IP段。(阿里云屏蔽时要选择真实建连IP,原因见下文分析)
221.205.168.0/23 60.221.231.0/24 211.90.146.0/24 122.195.22.0/24 118.81.184.0/23 124.163.207.0/24 124.163.208.0/24 183.185.14.0/24 36.35.38.0/24 60.221.195.0/24 60.220.182.0/24
下面是更加具体的被打过程和分析。
时间线
7月6日
针对本站的首次攻击发生在7月6日,由于站长外出,直到第二天才发现。
攻击在19:50准时开始,23:00准时结束。攻击的IP大约有十几个,均为山西太原联通(211.90.146.0/24)这一网段下的(这一信息还是后来才知道的)。由于早在6月我的网站就遭遇过更大规模的攻击,因此有一定应对措施,但攻击还是导致站长106GB的流量损失。
本以为这只是一次普通的攻击,结果....(其实当时看到就打了3个小时还在想怎么还有这么善良的攻击者??)
7月7日
由于站长次日就要到外地办(wan)事(shua),便留心看了一眼CDN统计数据,正好看到正在进行的攻击...
想简单分析一下攻击的情况,而阿里云默认提供的访问日志(离线日志)只包含X-Forwarded-For中的IP,而显然,攻击者伪造了这个header中的值。想要拿到真实的攻击IP(即阿里云说的,和CDN节点建立连接的IP,叫建连IP),只能通过创建实时日志,而这一功能单独收费。。。不得不说阿里云圈钱确实有一套。
攻击的IP只有一个,但是仍为山西太原联通(221.205.168.0/23)这一网段下的。事情就有些蹊跷了。但此时仍未引起站长太多关注(因为6月的攻击太严重,站长已经有阴影了。这种级别的真没引起关注)。为了次日到外地办(wan)事(shua)时网站能平安,站长直接就把CDN给关了。(事实证明虽然这会导致网站的访问体验下降,但确实有效。。)
7月8日-7月9日
由于CDN被站长直接关了,因此即使有攻击,也是相当于对阿里云的攻击了。(也就是不关我事哈哈哈)
7月10日
说来也巧,站长刚从外地回来,在逛v2ex时恰巧看见了
才发现不止是我,居然很多人都遭到了这一离谱的“攻击”。而在登录控制台,开启CDN服务后...
还在打,还在打。。。
分析实时日志后,并综合网络上的信息,对IP段
118.81.184.0/23 (山西太原联通)
进行了封禁处理。本以为就可以告一段落了,但但但...
7月11日
IP的封禁起了作用,本日虽有攻击,但没有很大影响。
同时,站长也发现了这次攻击的规模似乎超出想象的大。似乎整个中文互联网的CDN服务都被攻击了
https://rapidsu.cn/articles/7638
https://luotianyi.vc/8335.html
https://mp.weixin.qq.com/s/cl_ZAZ1PpP1NIT1UXa7PeQ
https://www.landiannews.com/archives/104853.html
7月12日
这一天,站长的网站没有被攻击,站长还天真的以为这一事情就告一段落了。
7月13日
凡事都不能高兴的太早。。。
这一次,居然又双叒叕换了IP,攻击IP变为了 60.221.195.0/24(山西临汾联通)
大无语。。。。。。。。。。
并且比较神经的是,在屏蔽了新IP后,他居然会提高QPS继续刷,根本不带停的...
于是,大聪明站长想到了一个天才的应对措施---直接关了CDN😀😀😀
7月14日
即本文的创作之日,现在还未到时间,不知道又会有什么新惊喜。。。
20240715更新:攻击如期而至,IP仍为 60.221.195.0/24(山西临汾联通)
但是大聪明站长的关CDN策略也确实有效[狗头]
7月15日
20240716更新:攻击如期而至,IP仍为 60.221.195.0/24(山西临汾联通)
另外,目前有人向警方报案的也得到了意料之中的答复:处理不了
7月16日-7月21日
20240728更新:整整六天没有发生任何攻击,可能是在调整吧。
7月22日
20240728更新:攻击居然又双叒叕来了,IP仍为 60.221.195.0/24(山西临汾联通)
7月23日
20240728更新:攻击持续,IP再度更新,变为 60.220.182.0/24(山西长治联通)
由于一些原因,主动防御出现了故障,导致了17GB的流量损失。
7月24日
20240728更新:攻击持续,IP来源仍为 60.220.182.0/24(山西长治联通)
7月25日-至今
再一次进入了没有攻击的休息时间,不知道是不是又会在6天后继续。。
不得不佩服山西联通的处理速度,一个月过去了,丝毫没有任何改善,这也加深了我对这件事联通知情并默许的认定。
202409更新:已经两个月没有新攻击发生了。可以基本认定这轮攻击已经结束。最终还是网友向工信部投诉联通才解决的😅(具体投诉过程见本文评论区)
分析&结论
综合来看,攻击者首先会用一个外地的IP扫描你网站的所有文件,然后挑选一个体积比较大的文件,然后在每天 19:50 左右开始,到 23:00 间不断请求这个文件,消耗流量。
而这一现象的发生显然和PCDN和省间宽带流量结算政策的实施有关。
这里简单介绍梳理一下PCDN和互联网的爱恨情仇,不想看可以跳过。
PCDN: 本应是伟大发明的构思
简单来说,PCDN就是P2P+CDN。英文全称:Peer to Peer Content Delivery Network,中文全称:点对点内容分发网络。
传统CDN,都是一个服务器,N个客户端。所有客户端,都去服务器下载数据。
P2P的话,A用户下载一部分,B用户也下载了一部分。然后,A用户和B用户之间,互相分享对方已有的数据。这样的话,减轻了服务器的压力。
除了APP层面可以实现PCDN,不少路由器也带有PCDN的功能,为了鼓励用户用带PCDN功能的路由器,不少厂商都会给用户分成。
众所周知,大陆的CDN都是运营商的服务器,因此,用户自己搭建节点直接影响了运营商的饭碗。并且国内家宽是亏本价格售卖的。所以运营商一直就在严厉打击PCDN。
加上自从2024年起,各运营商都实施了省间宽带流量结算的政策,即当A省的带宽服务于B省用户时,A省需要按流量向B省结出费用。
PCDN显然为重度传出类型的,自然会被运营商百般封杀。
当然,由于现在互联网流量都加密了,运营商检测PCDN用户的方法也很简单粗暴:看用户的上下行流量比例。当上传明显多于下载时,运营商就会认为这个家庭宽带为PCDN用户,并封禁。
而PCDN用户们为了防止被封,也找到一个简单粗糙的办法:刷下载流量。
开始是刷各种镜像网站,后来又利用bt种子的漏洞刷 Bittorrent 网络。
https://fast.v2ex.com/t/1029736
bt的漏洞被修复后,PCDN用户仍未满足,开始刷境内的CDN,一开始是大公司的,7月以来变为针对所有人开刷。
但是,这次真的只是PCDN用户的锅吗?
一些猜测
这类流量攻击时间规律,每天 19:50 左右开始,23:00 准时结束。且基本全部来自山西联通。
在尝试向山西联通客服举报这些IP后,截止目前,仍未收到任何回复。
虽然这样有些阴谋论,但是,综合之前一些省份对省间宽带流量结算政策的反应,加上PCDN用户竟然能灵活运用如此多不同的山西联通IP网段,我们于是提出一个大胆的设想:山西联通是否和这一现象也有联系呢?
总结
这篇文章本来不是很想写的,但是这一攻击居然能从月初持续到现在,并且让站长产生了222.04GB的流量费用,确实让人感到愤怒。
文章不少内容是综合(copy)网上内容而成的,在这里一并谢谢了。
最后推荐各位站长每天晚上一定要检查自己网站的流量,推荐看看
https://www.dogecloud.com/announcement/26
一直在更新攻击的来源IP段,可以及时防护。
(作为站长之前推荐过的CDN“小厂”多吉云,跟我们的大厂阿里云真的是对比鲜明,前者在帮助用户想解决方案,而后者在推荐你买WAF。。。。)
(另外,其实腾讯云同样作为大厂,也有在想解决方案,只能说:so aliyun, **** you!!!)
版权声明:
作者:Toms Project
链接:https://blog.projectoms.com/pages/1363.html
来源:Toms Project 官方博客
文章版权归作者所有,未经允许请勿转载。
巴塔哥尼亚
不应该啊,你这技术分享型的博客,又不用提供软件下载,刷流量也轮不到你啊,你是放了附件提供下载么?附件一般扔网盘就是了,给个链接出来,整个WordPress没什么大文件可言,js、css文件也就几十KB,就算人家用脚本刷html页面,效率也是相当低的,他们完全有更多更好的选择,我个人没有使用CDN,用的阿里的全站加速(DCDN,跟CDN差不多),由于我源站硬件配置相当低,有几次服务器推送消息过来资源占用率高,发现宝塔面板工具都连不上了,事后一查,发现是同一个IP在遍历博客的所有页面,看样子应该是文章采集器,最开始几次我都是在DCDN后台手动屏蔽IP(你说的阿里查建联真实IP日志要收费,但是我在DCDN的离线日志是直接可以看到的,不知道是不是CDN和DCDN业务规则不一样?不过CDN业务默认都会把真实IP包含在http请求头里面提交给源站的,但要在nginx或者apache里面加代码才能提取到,不然nginx日志里面记录的都是CDN节点的IP),这样搞了几次就很烦了,每次都是事后亡羊补牢,人家IP很多,而且根本不是一个网段的,国外的都有,后面我就在源站上装了个WAF防火墙(阿里自己CDN下面也有WAF和DDOS高防,但是都要钱),自己调了下规则,后面就基本没发生过类似的事情了,有高频访问的异常请求就会自动封IP,才算是解决了这个事情。
Toms Project@巴塔哥尼亚
可能文章忘提了:是博客的图片被刷了。有些图片我是截的长图,并且webp用的阿里云的oss。看请求记录刷的人是去掉图片处理的参数了,请求一次将近1mb
巴塔哥尼亚@Toms Project
明白了,原来是图片,如果是这样的话你就没办法从源站进行防护了,图片在OSS,但是方法也有,毕竟事后找工信也只能亡羊补牢,自己的流量包白白浪费了,阿里的OSS本身自带高防,但那个费用太贵了,最低开7天、10块钱一个小时,7天要一千六百八,你的OSS应该也是放在CDN之后的吧,这样可以避免泄露OSS源站,你可以开启CDN自带的WAF防火墙,是增值业务,但那个便宜,WAF规则里面设置高频扫描封禁,还可以直接封禁任何一个省、国家的IP,不用你自己去翻日志找网段,以后再遇到类似的情况可以参考这个。
耕读君
实测投诉工信部有用。我的实际操作——把IP和统计的攻击次数写清楚,工信部会转交运营商,之后山西联通回访确认,并通知技术后台封禁IP。我在博客上记录了这次CDN被盗刷的经历,希望大家都主动去投诉,不能被人一直欺负。
Toms Project@耕读君
谢谢分享!之前举报了一次(可能地方错了,不是工信部)没人理,再试试你的方法
耕读君@Toms Project
这年头的运营商,必须得有人在后面拿鞭子抽了才会动
liutao91
我7月7日开始到现在断断续续刷了我150多G了,服了
耕读君
谢谢分享!我的4个博客都遭殃了,1TB流量包被刷光。设置流量限制、删除被盗刷的文件也没用,免费的请求数消耗光之后继续扣费。阿里云真的是不作为,连频次控制这些都要联系客服开通,所有文档都在甩锅用户,撇清账单责任,可能根本看不上我们这些小虾米吧。