你们是怎么防止云服务被刷的,例如对象存储

2023-11-27 10:39:31 +08:00
 SculptureSand
其实我有几个可行的思路

先简单说下我会用到的云服务

我准备写一个文件分享网站,类似文叔叔、轻松传、空投

前端:Vue3 ,部署到 Vercel
后端:Flask ,部署到函数计算 FC(阿里云)
存储:对象存储 OSS(阿里云)
数据库:SQLite ,部署到文件存储 NAS(阿里云)

已知阿里云默认无法暂停 OSS 、函数计算,OSS 支持单链接限速,除此外只有访问相关的限制

一旦被刷,只能依靠不靠谱告警

我的解决方案

1. API 网关+云监控(可选)
2. OpenAPI+自写监控
函数计算里写一个检测,一旦达到检测值则调用 OpenAPI ,关闭对应 DNS 解析,达到更危险的值则删除服务(前提做好备份)

这两种方式都是低成本对抗恶意盗刷,采取的做法是暂停、删除服务,适合个人开发者和不考虑可用性的项目

除此外有什么好的方式吗,DDOS 防护、WAF 防护、其他防护,低需数百,高则数万每月,实在不是个人开发者能考虑的
8264 次点击
所在节点    云计算
59 条回复
bianhui
2023-11-27 13:46:10 +08:00
没看懂。如果你自己和自己朋友用,加个密码不就行了么。如果给公众用,限制下 ip 就行了。
weibin0227
2023-11-27 13:59:27 +08:00
@vueli 这个真是人才 不怕被删吗?
GeekGao
2023-11-27 14:16:18 +08:00
说个都没提到的点吧:每次发起下载请求前要获取有失效期限的 access token ,发起请求的过程中就可以对来源用户或 IP 做合法性校验(例如是不是重复请求该文件多次、是不是某个时间段内被异常大量的请求、IP 信誉或者 header 存在问题等等,甚至还可以在 js 侧增加 captcha 只有通过验证码的才可以继续执行请求 accees token 过程)

当然,这些可能需要你自己写 nginx 模块实现或者用 apisix 、kong 这类的可以容易实现插件的网关。
Masoud2023
2023-11-27 15:38:12 +08:00
看了个分享说可以造一个轮子发 token ,每次访问 cdn 时候都发 token 下去,同#43 ,不知道实际效果怎么样
zoharSoul
2023-11-27 15:42:41 +08:00
@pol #1 没用
hiceo
2023-11-27 15:56:19 +08:00
我准备搞个公益图床,用 tg 当网盘,图片限制 10M ,文件限制 50M ,应该足够用了
hiceo
2023-11-27 15:57:04 +08:00
用的海外服务器流量无限制,挂个 cf ,用优选 ip ,够用就行
element90
2023-11-27 16:03:03 +08:00
防盗链,但这个仅对 web 图片有效。

如果是文件分享的话,可以加一个请求授权流程,每次都向你的服务请求授权链接,然后你可以按需要给 oss 文件生成有时效的访问 URL ,这样你可以在你的服务端做相关的检查了
lishei
2023-11-27 16:10:07 +08:00
@weibin0227 为什么要怕,找多个免费的接口上传多份,删了就换一个源
coreki
2023-11-27 17:03:07 +08:00
@leaflxh 你这几个 oss 防刷建议还挺不错,特别是禁止国外 ip 这点
myqoo
2023-11-27 18:06:41 +08:00
@leaflxh 建议不错,不过还是很难避坑。

1. 用腾讯云/阿里云的 CDN ,回源 OSS 。同时 OSS 必须设置私有访问(防 OSS 被刷爆)

> 虽然 CDN 比 OSS 便宜,但每 GB 也要几毛钱。每天被刷个几十几百 TB 还是很肉疼的。

2. CDN 开启禁止国外 IP 访问(国外带宽大,用个几台 vps 就可以刷爆 CDN 。增加攻击门槛)

> 国内现在很多都是千兆带宽,攻击者搞些肉鸡就可以使劲刷。如果利用 HTTP/TCP 漏洞的话,甚至百兆带宽也可以刷出万兆带宽的效果。

3.开 Referer 检查,禁止空 Referer (防止别人用工具一键刷爆,但作用有限)

> 这种只是防基于 web 的恶意刷(类似之前 gfw 的 great cannon 这种),基于本地程序的请求就无效了。

4.设置单 IP QPS ,设置单线程下行带宽峰值。QPS 以视单页面最大的资源数为主(防止几个 IP 刷爆 CDN 。增加攻击门槛)

> 虽然每个 CDN 节点可限速,但同时对所有节点刷就统计不过来了。(可能在统计周期的延迟里,就欠下不少钱了)

最后点比较有意义,及时下线止损。国内带宽垄断导致的超高攻击费用最终还是用户买单。
Liang
2023-11-27 22:51:42 +08:00
双十一买了台 99 元 3m 的 ecs ,做 oss 内网反代
SculptureSand
2023-11-27 23:19:18 +08:00
感谢上面几个长文回复,我注册时间太短,没法多次 @,字数好像也有限制,写了好多只能删了。
另外,我 OSS 是私有,用签名 URL 去发布。网站公开,但是不做 SEO 不宣传不会火起来,不限制路人使用
这个被我选为毕业设计,求职也有用处,同时我自己也有需求,这个项目对我来说肯定有理由
今天已经实现了用 OpenAPI 控制 DNS 解析,之后还会尝试最狠的,就是达到极大量时直接删除服务(例如直接删掉存储桶或者函数,当然,会做备份)
SculptureSand
2023-11-28 01:11:55 +08:00
@myqoo 半夜回来看了一眼,这种盗刷手段也太吓人了
Goat121
2023-11-28 01:19:03 +08:00
你反正不套 CDN ,也谈不上啥访问速度,那换 aws 啊,为啥要抱死阿里云?国内的带宽流量这一块贵得要死,特别是阿里云最坑爹。只有千日做贼,哪有千日防贼,你本身没啥访问,结果防贼的精力比开发还多,一个不小心还是可能几大万出去了,图啥?

tg 上一大堆 VISA 虚拟信用卡的,aws 代充的,随便找个就搞定 aws 充值了。还有个更便宜的 linode,大概只有 aws 一半的价格,和 S3 的接口也是一样的,不过这个充值支持可能没那么多了。

总之,不是商业项目速度要求很高,服务器必须在国内的话,完全不需要国内 XX 云。举个例子吧,基础款的 4c8g 服务器,阿里云和 aws 价格相差不大,但是阿里云带宽 100M ,aws 是 10G 。阿里云一被 ddos 就黑洞模式(不得不佩服阿里的造词能力,实际上就是不愿意拿自己网络给你扛 DDOS 把服务器直接关机且几小时内无法恢复,愣是掰了个高大上的名字黑洞模式出来),aws 是无上限的硬扛 ddos 。 具体到 oss 费用,阿里云光国内都是 aws 的 3 倍左右,国外更是高到离谱,你再怎么防,光是国外肉鸡在你检测到之前刷那一波流量也够你受了
Goat121
2023-11-28 01:36:44 +08:00
而且你都准备遭攻击就删服务了,说明也不是啥重要数据,那为啥还要用 oss?直接写硬盘不香么,又便宜一大截。
还有 cloudflare 完全可以套一个,虽然国内的 cf 慢了点,也总比没有好,最重要的是,他免费啊!不但免费给你用还免费提供无上限的 ddos 防护,不香么
SculptureSand
2023-11-28 11:38:39 +08:00
@Goat121
cloud flare mark 了,查询了下可以防护后端,我以前以为只能防前端,感谢

这和 API 网关有些类似

我用阿里云的理由有二,一是我熟悉阿里云、腾讯云,不同云厂商间理念不太一样,文档风格也不同,除非经验老道,切一个云厂商挺费劲的。二是阿里云这边几个服务我确定能支持我的项目,并且均为按量付费,没有门槛费。
我做各种防护不会耗太大精力,都是基础内容
OSS 默认支持万兆上下,速度不慢了

各种服务、数据肯定做好备份才删,这是最终策略。不代表数据不重要
另外我的网站功能是 A 用户上传文件得到取件码,持有取件码的任意用户可下载该文件

如果直接放硬盘,权限不好控制。而且似乎回归到安装个 NextCloud 了,直接能实现我的所有功能

当然这不是否定你,aws 我也 mark 了,说不定我其他项目就用到了,只是这次不适合我。再次感谢
GarethChu
2023-11-30 11:27:04 +08:00
@leaflxh mark 了
nicoljiang
360 天前
https://www.bitiful.com/ 可以试试我们的服务

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/995478

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX