V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
• 请不要在回答技术问题时复制粘贴 AI 生成的内容
annoygaga
V2EX  ›  程序员

CDN 被恶意请求攻击,平白无故烧去很多费用,如何防御?

  •  1
     
  •   annoygaga · 4 天前 · 4437 次点击

    如题

    具体情况:楼主昨天一个小博客服务(挂了 aws cloudfront )忽然烧去一些钱,具体分析是一个区域(平台分析的最细粒度)针对单一的一个图片( CDN 域名)疯狂的请求(请求数令人发指),在短短的时间里烧去免费额度和部分额外费用,而且貌似平台也没有什么防御(平台说默认开启 WAF + ddos 防御,但看上去并没有,我甚至怀疑是 aws 计费出了问题)。

    之前以为开启了 CDN ,流量请求就还算安全,目前来看然并卵啊,还是需要进一步搞不少东西。

    问题:CDN 感觉是完全暴露在外面的,被 DDoS 有什么防御手段吗?以及有什么规则可以配置么?(我看了一下 aws sheild advanced 的费用实在是有点贵。其实不是很理解目前 cdn 成本如此高昂的情况下如何处理。)

    类似情况大家是如何处理的?

    以及有没有更好的 cdn 供应商(目前是 aws cloudfront )

    73 条回复    2025-02-18 15:18:36 +08:00
    lnbiuc
        1
    lnbiuc  
       4 天前   ❤️ 1
    使用免费 cdn
    使用 cloudflare
    gaobh
        2
    gaobh  
       4 天前 via iPhone
    换成 cf
    ZeroClover
        3
    ZeroClover  
       4 天前
    DDoS 很多时候本来实际攻击的就是账单,攻击成本远远低于防御成本

    CloudFront 没什么比较好的防止刷流量的方法

    纯服务海外就 Cloudflare
    annoygaga
        4
    annoygaga  
    OP
       4 天前
    @lnbiuc 其实没看懂 cf 的 pricing
    annoygaga
        5
    annoygaga  
    OP
       4 天前
    @gaobh 其实没看懂 cf 的价格,他的价格是如何?相比其他 cdn ,会不会有意外的费用
    annoygaga
        6
    annoygaga  
    OP
       4 天前
    @ZeroClover 见识到了,搞得我有点后怕,api 服务还可以拒绝服务,静态文件 cdn 妥妥爆刷流量啊,cf 会有意外费用吗?
    gaobh
        7
    gaobh  
       4 天前
    @annoygaga #5 默认选免费的就行了,CDN 是永远免费的,R2 这种只有超量了才收费
    vfx666
        8
    vfx666  
       4 天前 via iPhone
    可以根据来源 ip 屏蔽。比如屏蔽美国 ip
    ZeroClover
        9
    ZeroClover  
       4 天前
    @annoygaga #6 Self-serve 层级大部分服务不是按量计费的,如果你只是服务静态文件怎么都不会有额外费用的

    静态文件部分情况下其实可以做签名校验,签名里面可以包含允许访问的 IP 、有效期等等,可以一定程度上降低脚本小子的攻击影响,但是也不可能完全阻挡就是了
    shiny
        10
    shiny  
       4 天前   ❤️ 1
    @annoygaga 默认免费,不开订阅收费项就永远不会收费。需要留意是开订阅的时候可能在免费额度内,但可能用超产生流量。担心的话可以不用这类功能,如果已经开了,在“管理帐户 > 账单 > 订阅”里取消。默认的 CDN 是不需要订阅的。去年 11 月买了 cf 的股票,现在涨了 85%
    annoygaga
        11
    annoygaga  
    OP
       4 天前
    @gaobh 如果 cf 这么直接,那其他家 cdn 还有饭吃吗。。。应该有什么约束条件吧
    annoygaga
        12
    annoygaga  
    OP
       4 天前
    @vfx666 其实不是很懂这种规则在哪配,cloudfront 的这种规则,同时怎么配置最便宜,aws 的意外支出实在是太多了
    annoygaga
        13
    annoygaga  
    OP
       4 天前
    @ZeroClover 我的场景是静态文件,但如果 cloudflare 如此方便,其他家 cdn 不是没饭吃了,应该有什么约束条件吧,至少网络费用需要?网络费用我也没在 cloudflare 看到
    gaobh
        14
    gaobh  
       4 天前
    @annoygaga #11 没有,大家都用它
    annoygaga
        15
    annoygaga  
    OP
       4 天前
    @shiny cloudflare 的流量费用我貌似没找到,被 aws 流量搞怕了,很怕这种意外的费用,cloudflare 有什么约束么?
    annoygaga
        16
    annoygaga  
    OP
       4 天前
    @gaobh 今晚就切!
    shiny
        17
    shiny  
       4 天前
    @annoygaga 只用 CDN 就不会有额外开销,印象中有人甚至一天有 TB 级别都没收费。赛博菩萨的称号不是随随便便来的。之前只见过一个 case ,是做赌博类的网站,说 cf 的人找他说,不买企业版就会封号。原因是这种类型让 cf 有额外成本。https://www.infoq.com/news/2024/06/cloudflare-service-change-impact/
    annoygaga
        18
    annoygaga  
    OP
       4 天前
    @shiny 我这次攻击就是上了 TB 级别( cloudfront free 额度就有 TB ),所以好奇 cloudflare 大 TB 级别也免费吗?
    shiny
        19
    shiny  
       4 天前
    @annoygaga 前提是不滥用,不会删号,免费,可以参考别人的说法,例如这个帖子里提到 /t/967085 一个月 1PB 都没收费。
    当然不排除 cf 的商务找上门来让你充值,但是偶尔被 cc 的量肯定不会有这种担心。可以了解下为什么他们的流量费用这么低,是有商业模式的。
    LnTrx
        20
    LnTrx  
       4 天前
    境外最优解决方案就是 Cloudflare ,CDN 可以不绑任何支付方式使用。商业网站可能会收钱,个人、开发者目前没听说过要收的。可以抗 TB 级流量。

    境内参看 https://www.v2ex.com/t/1106902
    yidev
        21
    yidev  
       4 天前
    动态输出, 先判断是不是恶意请求
    annoygaga
        22
    annoygaga  
    OP
       4 天前
    @shiny 感觉吊打 cloudfront
    annoygaga
        23
    annoygaga  
    OP
       4 天前
    @LnTrx 如果是大 TB 级别呢?这次攻击就是 TB 级别的
    annoygaga
        24
    annoygaga  
    OP
       4 天前
    @yidev cdn 怎么搞动态输出?
    xmdbb
        25
    xmdbb  
       4 天前
    没用过 aws 的,但是不应该有的配置吗?
    国内的都有支持配置请求阈值,同 IP 达到一定阈值自动屏蔽该 IP 。
    我不确认你说的疯狂请求令人发指具体是什么体量,如果单从请求终端就能区分出请求频次过密的话那不是 CDN 配置下就好了吗?
    普通的 CDN 被 DDOS 时起到的是保护源站的作用,同时避免源站 IP 露出。
    yidev
        26
    yidev  
       4 天前
    @annoygaga 用你的后端语言输出图片. 不要直接把图片的真实路径暴露出来.
    XiLingHost
        27
    XiLingHost  
       4 天前
    cloudflare 和一大堆 AS 相互 peering ,而且和很多厂商都签了流量联盟,所以抗 DDoS 能力相当强
    lnbiuc
        28
    lnbiuc  
       4 天前
    @annoygaga #4 free
    annoygaga
        29
    annoygaga  
    OP
       4 天前
    @xmdbb 我搜了半天,貌似没找到,好像就是没什么好办法,如果有办法,则比较昂贵(起步 3k 美金, aws shield advanced)
    annoygaga
        30
    annoygaga  
    OP
       4 天前
    @yidev 这么搞是不是就失去 cdn 的意义了
    annoygaga
        31
    annoygaga  
    OP
       4 天前
    @XiLingHost 主要是价格,被这次搞怕了,非常不想有意料外的付费
    annoygaga
        32
    annoygaga  
    OP
       4 天前
    @lnbiuc 完完全全 free 么?这次可能几个 TB 的流量,也 free 吗?
    flyqie
        33
    flyqie  
       4 天前 via Android
    cloudflare 赛博菩萨的美名不是开玩笑的。。

    他家 cdn 这块你要是不手动升级的话真的不收费。
    jalena
        34
    jalena  
       4 天前
    是不是这个网段:114.226.31.0

    如果是这个网段直接打工信部投诉,这种 PCDN 真是日了狗的
    vrabe
        35
    vrabe  
       4 天前
    WAF 要另外開 $5/月
    不然就要開 Cloudwatch
    epiphyllum
        36
    epiphyllum  
       4 天前   ❤️ 1
    用 Cloudflare CDN 挂图片还是有限制的。如果传输的流量中图片等媒体内容的占比多得不成比例的话,Cloudflare 还是可能会清退用户。
    要“免费”绕过这个限制的话,图片等媒体/二进制文件必须挂在它们家的 R2 (对象存储)或者 Workers (类似于云函数/Serverless )这样的服务上。

    详情见:
    https://www.cloudflare.com/service-specific-terms-application-services/#content-delivery-network-free-pro-or-business


    对于上面的其他网友提到的一些例子:
    1. 被 DDoS 攻击消耗了几 TB 流量都还没被清退
    - 对于除了图片之外的网站/网页内容的确有不计量的 DDoS 防御,例如: https://limbopro.com/archives/2106.html

    2. /t/967085 中有人称“跑了 1PB 流量”
    - 这一例子是通过作弊取得的 Cloudflare WARP VPN 账户的流量余额,VPN 和 CDN 完全不是一种产品
    epiphyllum
        37
    epiphyllum  
       4 天前
    补图(
    ringcrl
        38
    ringcrl  
       4 天前 via iPhone
    用 edgeone pages 不收费
    lnbiuc
        39
    lnbiuc  
       4 天前
    @annoygaga #32 按照他们的说法来是的,而且短时间不一定会被刷这么多,检查到 ddos 应该会返回 javascript 挑战,也能防御一定攻击
    ragnaroks
        40
    ragnaroks  
       4 天前
    上 CF 的最大作用是攻击方可能看你上了 CF 就不攻击你了
    lnbiuc
        41
    lnbiuc  
       4 天前
    @ringcrl 请问是流量费用也不收吗
    frankies
        42
    frankies  
       4 天前
    1 ,个人小博客没任何必要用 CDN ;
    2 ,实在想用就用 cloudflare 免费版。
    mytsing520
        43
    mytsing520  
       4 天前
    AWS CloudFront 根据访客 IP 地址来源地区细分流量费,根据 AWS 官网报价,如访客 IP 位于香港、台湾、印尼、菲律宾、新加坡、韩国、泰国、马来西亚和越南,单价最高,日本、澳大利亚和新西兰次之,你可以看一下是否来自上述区域。

    至于 CloudFlare ,如果你的业务流量小于 10TB/月,则 Free 版本订阅足够可以支持你的业务场景,业务流量更高的,就要购买商业版本订阅,而他们的商业版本订阅最终也是按照访客来源计费。
    tlerbao
        44
    tlerbao  
       4 天前
    我记我腾讯云被恶意刷了一次以后。我找客服把钱要回来了

    然后设置了限额,比如超出 1G 就马上关停哈哈
    pwinner
        45
    pwinner  
       4 天前 via iPhone
    @annoygaga 他说的 TB 级流量是每秒几个 Tbps ,不知道你的理解是不是有出入,静态资源是完全免费的,而且你不需要提供支付方式就能用,还能坑你不成
    annoygaga
        46
    annoygaga  
    OP
       4 天前
    @flyqie 听起来 aws cloudfront 应该毫无优势了。。。我主要是被这种意外的花费搞怕了,生怕有什么不懂的,我之前还以为 cloudfront 流量多了缓存价格便宜,然并卵,比正常流量还贵
    annoygaga
        47
    annoygaga  
    OP
       4 天前
    @vrabe 但我看我开了 waf 啊,没有任何用,都 allow 了
    annoygaga
        48
    annoygaga  
    OP
       4 天前
    @epiphyllum 我其实就是静态文件,非常淳朴的需求,我主要也是被意料外花费搞怕了,以前以为 cloudfront 花不了什么钱( free tier 很多),这次教做人了,而且流量费用特别贵,还没有阶梯
    annoygaga
        49
    annoygaga  
    OP
       4 天前
    @mytsing520 是的,来自这个区域,费用还是 0.12$/GB ,太肉痛了,而且并不存在流量越大流量越便宜,实在是太昂贵了,给我搞怕了,我主要是好奇 CloudFlare 会不会有什么意料外的花费,这次真的 ptsd 了
    annoygaga
        50
    annoygaga  
    OP
       4 天前
    @tlerbao aws 貌似没有任何这种限制
    annoygaga
        51
    annoygaga  
    OP
       4 天前
    @pwinner 其实主要是被这次搞得 ptsd 了,以前也以为 aws cloudfront 便宜( free tier 1TB 流量,以为用不完)一次攻击干回原型,而且 cloudfront 费用还不存在阶梯,跑了多少流量就烧多少,现在对这些产品都留个心眼
    8355
        52
    8355  
       4 天前
    cdn 除了 cloudflare 不敢用的
    mytsing520
        53
    mytsing520  
       4 天前
    @annoygaga AWS CloudFront 当然是流量越大越便宜,但这指的是单价。当然如果你自身业务流量很大,可以和 AWS 去申请特殊折扣。国内 CDN 厂商也是如此。
    annoygaga
        54
    annoygaga  
    OP
       4 天前
    @mytsing520 我这次并不是,可能还没有大到那么夸张,但作为一个小博客,已经难以承受
    wolffcat
        55
    wolffcat  
       4 天前 via Android
    那就是不用 cdn
    wolffcat
        56
    wolffcat  
       4 天前 via Android
    CDN 我暂时看腾讯这边,我实际在 22 年使用中没发现安全功能,请求限制多实现在回源应用这边,根据 cookie 回源带的 IP 做限制,但刷缓存流量这事你只有不用 CDN 能解决,除非你配置 CDN 上的回源鉴权,每回一次源都鉴权看得我想吐,一个小博客还不至于
    wolffcat
        57
    wolffcat  
       4 天前 via Android
    小博客静态到 GitHub 才是王道
    wolffcat
        58
    wolffcat  
       4 天前 via Android
    wolffcat
        59
    wolffcat  
       4 天前 via Android
    乐乐
    iseki
        60
    iseki  
       4 天前 via Android
    cloudflare 免费版的主要问题是大陆网络的连通性和速率、延迟都不高。其他的限制,不能托管视频。至于图片什么的只要你的规模没大得离谱他们的销售不回来找你麻烦的。

    @annoygaga
    YaNanGe
        61
    YaNanGe  
       3 天前
    歪一下,不是很懂好奇下,为啥那些搞 PCDN 的不去刷镜像系统类的 BT 流量勒?
    hzzhzzdogee
        62
    hzzhzzdogee  
       3 天前
    @epiphyllum #36 静态资源挂 r2/worker 会影响访问质量吧?
    deetincelle
        63
    deetincelle  
       3 天前
    想问一下 aws 好像是信用卡绑定, 先用后付的? 我目前也有一个 demo 项目想部署, 但是怕美元账单
    sn0wdr1am
        64
    sn0wdr1am  
       3 天前
    cloudflare
    huaerjiefangyang
        65
    huaerjiefangyang  
       3 天前
    你好,可以联系下,我是做 cdn 这块的,sendo000
    leenhawk2
        66
    leenhawk2  
       2 天前
    @YaNanGe 有的,软件镜像站是传统老怨种了
    Yanlongli
        67
    Yanlongli  
       2 天前
    小站都是不开收费 CDN ,直接顶,流量又不高
    sodadev
        68
    sodadev  
       2 天前
    @vfx666 现在都是随机 IP 了 不一定是哪里的 你这个没办法 黑名单也只是仅仅一少部分
    vfx666
        69
    vfx666  
       2 天前 via iPhone
    @sodadev 最简单粗暴的,屏蔽所有国外 ip
    chenhongron
        70
    chenhongron  
       2 天前
    @annoygaga 用了 CF 的 CDN 发现国内有很多地方打不开
    ories
        71
    ories  
       2 天前
    试试 报警 找网警 最管用物理制裁
    zkw111
        72
    zkw111  
       2 天前
    建议用 cf ,我搞了一个 docker 代理,每天流量 5TB ,百万请求
    hack2012
        73
    hack2012  
       1 天前
    别用 aws 会有很多隐藏费用。用 cf
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   1170 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 25ms · UTC 23:07 · PVG 07:07 · LAX 15:07 · JFK 18:07
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.