我的网站被攻击了,被干掉了 120G 流量,还在持续攻击中...

你好,我是悟空。

背景

前几天,我正在用 Typora 写笔记时,发现图片无法自动上传到七牛云上了,然后登录到七牛云管理后台,发现已经欠费 20 多块钱了,CDN服务因欠费停了,导致我的网站 passjava.cn 上的所有图片都无法访问。

很奇怪,我用的都是免费的 10G 流量,很少会出现欠费的情况,怀疑是网站被攻击了。于是检查了最近网站的访问情况,吓我一跳,7天时间被访问了 123G 流量,14 万个独立 IP,可以肯定的是被肉鸡服务器攻击了。

今天又看了下流量,发现还在攻击。

数据如下:

07-30 22:00~08-06 10:00 持续攻击了 61 万次,120G CDN 流量,难受 -_-

08-07 17:00~08-11 17:00 持续攻击了 41 万次,全部报403 错误,也没有造成 CDN 流量。因为在 08-08 18:00 开启了防盗链,所以攻击失败,舒服^_^

我的网站也恢复了,可以查看:www.passjava.cn

处理过程

初步排查

查看了访问日志,就是一大堆肉鸡服务器不断地访问网站的 5 张图片,造成了大量 CDN 流量,因为按量付费,所以超了很多钱。如下图所示,访问日志中可以看到很多不同的 IP,持续访问网站的图片。

处理方案

迅速建了个工单,找七牛云的工程师看看怎么整。

工程师回复如下:

"

方案:在 控制台 - cdn - 统计分析 - 日志分析 中看 top访问情况,比如高频访问的URL和客户端IP。

根据top访问数据将非预期的来源IP、ua等拉黑处理下。

然后看了下高频访问的 ip,都是随机的,没什么规律,应该就是大量肉鸡服务器攻击的。所以用黑名单的方式是没办法限制这些肉鸡服务器的 IP 的,只能另寻方案。

工程师回复可以采取防盗链的方式。

防盗链

防盗链方案:

  • 1:referer防盗链: 只有携带了相应 referer 请求头的 http请求才能访问资源,但是对于技术来说,referer都是可以伪造的,存在一定的风险。
  • 2:时间戳防盗链,url带着e和token参数访问,e为过期时间,但是只要捕获到了url就可以访问资源了,只适用于访问xx次的场景。
  • 3:回源鉴权,这个你们可以尝试下,每次访问cdn图片时,会携带你们自己定义的访问参数去你们自己的服务器上鉴权,只有你们服务器鉴权通过,返回 httpcode=200 ,才会将图片资源给用户访问,否则无法返回图片。
  • 4:IP黑白名单,这个适合某一个网段内的ip访问资源,不适合官网使用,只有在 ip 白名单中的用户才可以访问你们的图片。
  • 5:UA黑白名单,通过 User-Agent 字段的值来允许或者阻止特定用户访加速域名。

目前只有方案 1 比较合适。

"

方案 1:referer防盗链: 只有携带了相应 referer 请求头的 http请求才能访问资源,但是对于技术来说,referer都是可以伪造的,存在一定的风险。

于是按照操作开启了 referer 防盗链。如下图所示,开启了白名单,并且不允许空 Referer。

选择"否",这样的话,只有携带了相应 referer 请求头的 http请求才能访问资源。

简单来说,就是我把网站中的一张图片的链接,直接 copy 到浏览器的地址栏中然后回车,是访问不到的,会报 403 Forbidden 的错误。

我检查了下,攻击我的网站的方式确实是没有携带 referer 请求头的 http 请求。如下图所示,Top 1 的请求中的 Referer 为 "-",表示没有携带 referer。

选择不允许空 Referer 后,就可以拦截这种不带 Referer 的请求了。

带来的麻烦

设置了不允许空 Referer 后,我发现在 Typora 工具中的添加的网站图片无法加载了,因为 Typora 在访问图片时没有携带 Referer 去访问网站图片。

然后通过 AI 找到了一种解决方案,原理如下图所示。

Nginx 配置

将本地 8888 端口的请求添加 Referer 后,再访问 CDN 域名。

Proxifier

拦截 typora 中访问 cdn 图片的请求,并将请求发送给本地的 8888 端口。

进程劫持

总结

(1)7 天内我的网站 passjava.cn 被肉鸡刷掉 120 G CDN 流量,七牛云直接欠费 20 多元。

(2)开启 referer 防盗链后,攻击流量瞬间 403,但 Typora 里的图片也挂了。

(3)用 Nginx+Proxifier 给本地请求加 referer,既挡住攻击又让笔记图片正常显示。

相关推荐
C_心欲无痕18 分钟前
有限状态机在前端中的应用
前端·状态模式
C_心欲无痕24 分钟前
前端基于 IntersectionObserver 更流畅的懒加载实现
前端
candyTong30 分钟前
深入解析:AI 智能体(Agent)是如何解决问题的?
前端·agent·ai编程
期待のcode34 分钟前
Java虚拟机的运行模式
java·开发语言·jvm
程序员老徐37 分钟前
Tomcat源码分析三(Tomcat请求源码分析)
java·tomcat
柳杉39 分钟前
建议收藏 | 2026年AI工具封神榜:从Sora到混元3D,生产力彻底爆发
前端·人工智能·后端
狮子座明仔40 分钟前
Engram:DeepSeek提出条件记忆模块,“查算分离“架构开启LLM稀疏性新维度
人工智能·深度学习·语言模型·自然语言处理·架构·记忆
weixin_4624462342 分钟前
使用 Puppeteer 设置 Cookies 并实现自动化分页操作:前端实战教程
运维·前端·自动化
a程序小傲1 小时前
京东Java面试被问:动态规划的状态压缩和优化技巧
java·开发语言·mysql·算法·adb·postgresql·深度优先
仙俊红1 小时前
spring的IoC(控制反转)面试题
java·后端·spring