V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
newshbb
V2EX  ›  程序员

STUN (webrtc) 服务有啥好的 DDOS 防御方案吗?

  •  1
     
  •   newshbb · 291 天前 · 2306 次点击
    这是一个创建于 291 天前的主题,其中的信息可能已经有所发展或是发生改变。
    24 条回复    2024-02-06 14:05:23 +08:00
    kkk9
        1
    kkk9  
       291 天前   ❤️ 1
    😅对付 dd 的解决方案主要都是烧钱,烧钱,还是 TMD 烧钱。(或者像南山必胜客从各种渠道掌握证据直接上门送礼)
    huahsiung
        2
    huahsiung  
       291 天前   ❤️ 1
    udp 源 IP 可以伪造。彻底解决只能上硬件防火墙。
    huahsiung
        3
    huahsiung  
       291 天前   ❤️ 1
    tcp 可以用状态防火墙过滤大部分,防护起来的成本比 udp 少很多。udp 是无状态的,只能从分析数据包来防御。
    xsen
        4
    xsen  
       291 天前
    STUN 禁掉 UDP 、只允许 TCP
    newshbb
        5
    newshbb  
    OP
       291 天前
    @huahsiung 请问有什么 ddos 厂商可以搞定吗?像 cloudflare
    huahsiung
        6
    huahsiung  
       291 天前   ❤️ 1
    @newshbb 面向国外的话国外的高防机器比较多,价格也不是很离谱。cloudflare 也有类似的 Spectrum ,Magic Transit 。

    面向国内的话,高防 IP 价格比较离谱。可以去找有高防的机房,这个比找高防服务器便宜很多。

    另外也可以看看百度云加速( Cloudflare 的国内前妻 [已离婚] ),京东云星盾( Cloudflare 的国内现妻 [在婚状态] )。
    他们都有部分 Cloudflare 的技术。
    j4fun
        7
    j4fun  
       291 天前
    tcp 和 udp 的 nat 类型不一定一样啊=。=
    dhb233
        8
    dhb233  
       291 天前   ❤️ 1
    攻击最多的就是游戏,一般都是商业上的竞争。要么就是硬抗(花钱买高防),要么就想法隐藏自己,给攻击增加难度(一般攻击都是买的攻击流量,不会有很高明的手法)。
    flyqie
        9
    flyqie  
       291 天前   ❤️ 1
    STUN 实在不行就用公共服务器吧。

    turn 没办法,只能标准防护。
    iqoo
        10
    iqoo  
       291 天前   ❤️ 1
    不能完全防住,但有缓解的方案。比如使用动态端口,前后端使用约定的算法,根据当前时间计算出端口号,并且端口白名单在云防火墙上设置,这样不符合的数据包直接被云防火墙过滤,不占入带宽/入流量。

    同样的思路,还可以用敲门数据包,而且 webrtc 可以预先发一个带自定义数据的敲门 UDP 包(比如 https://github.com/EtherDream/js-port-knocking )用于认证。

    前端用 js/wasm 做好算法的混淆,可以过滤中小规模的垃圾流量。当然大流量直接把 IP 打进运营商黑洞的,那是无解的。
    leaflxh
        11
    leaflxh  
       291 天前   ❤️ 1
    国内找高防机房,镇江 枣庄 武汉 徐州很多地方都有,几百到几千一月,比阿里便宜,但效果不确定,没用过
    dmanbu
        12
    dmanbu  
       291 天前   ❤️ 1
    除了流量清洗,没啥好方案
    newshbb
        13
    newshbb  
    OP
       291 天前
    @iqoo 我的客户端是开源的,很难搞
    newshbb
        14
    newshbb  
    OP
       291 天前
    @huahsiung 我们是面向国外,没想到 ddos 来的这么快
    newshbb
        15
    newshbb  
    OP
       291 天前
    @flyqie 我们不是标准 STUN ,我们是自己写的
    fuckfaker
        16
    fuckfaker  
       291 天前   ❤️ 1
    饿,之前自己用 ebpf+xdp 框架写了个 ddos 防御的工具,简单粗暴,某 ip 连接频率超过阈值,直接在 xdp 那里把所有的网络请求全部丢弃
    dhb233
        17
    dhb233  
       291 天前   ❤️ 1
    @fuckfaker DDoS 都是直接带宽打满,根本不给你清洗的机会。主机上看到的那点流量,已经是丢了很多包的,网络已经不可用了。。
    dhb233
        18
    dhb233  
       291 天前   ❤️ 1
    @newshbb 国外的攻击更多,有些面向国内提供服务的,可以封禁所有国外网段,高防都提供这种清洗方式。你如果是面向国外提供服务,那这种方式都没用了。

    基本上是打几天 UDP 反射放大攻击,一般都是几百 G 的攻击,如果防不住,就一直打。如果防住了,就改用肉鸡打 4 层或者 7 层的攻击,如果再抗住了,他们也会歇几天
    newshbb
        19
    newshbb  
    OP
       290 天前
    @dhb233 我这里还没有把带宽打满的程度,更像是肉鸡,所有流量都是伪装成正常流量,只是消息频率比正常的高一些,客户端是开源的,攻击者很明显是看了源代码写的攻击软件。我已经清洗几万个 ip ,然后丢到 nfttables 的 ipset 里,现在情况好了点
    newshbb
        20
    newshbb  
    OP
       290 天前
    @fuckfaker 我现在还是用 nftables 的 ipset 来搞,也想写 ebpf+xdp ,能够有开源推荐吗?演示代码也可以
    network127001
        21
    network127001  
       290 天前
    1.上 CDN ,可以保护源站不被攻击,一般厂商都有高防方案,国外当然找 CF ,akamai 了
    2.源站上硬件 waf 、防火墙、负载均衡、ddos 清洗设备、入侵防御等等~~~或者丢高防机房
    3. 长亭有个开源 waf 可以试试看,雷池
    fuckfaker
        22
    fuckfaker  
       290 天前   ❤️ 1
    @newshbb 我用的 bcc+xdp 做的,当时是为了给我们的操作系统加一个 ddos 防御,做的比较粗糙,思路就是记录每个 ip 每秒的连接次数,超过阈值,就加黑名单里,黑名单 ip 的包直接在 xdp 那里直接丢掉
    RatioPattern
        23
    RatioPattern  
       290 天前   ❤️ 1
    楼上一堆人瞎建议,STUN 服务没法上 CDN ,上了就没用了。

    要么自己买高防服务器,机房自己带宽够大有清洗能帮过滤。

    如果按你说的已经看过源码了根据你的应用层协议伪造数据包攻击了,那基本上外面商用方案没有一个有用的,都会被 bypass ,你的选择目前只有


    买高防服务器(但不依赖他们的过滤,依赖的是他们机房的大带宽,如果机房厚道的话,有 500G 的入口带宽那基本上你就当能有 300G 有效防御),然后你自己要在服务器的应用层加点跟防火墙(你目前的 nftables 就可以)联动封禁的机制,那只要 300G 以内你的程序能处理的过来,就可以当做没事了。如果 300G 以上,你只能多部署几个不同高防服务商的节点,这样流量打过来客户端有个切换机制不用某个节点就是,如果对方仍然死追不放,把你节点全部打死,那对方攻击花费的成本一定比你高,那这个事情,有钱就是大爷了有钱鸡巴硬就无解了




    PS>理论上来说如果大于 500G ,你的高防服务商都会被宽带运营商那边黑洞了,所以他的清洗也没用,500G 当 300G 是因为高防服务商不只为你服务,上高防的隔壁租户如果是游戏那基本也是天天被打的必须要有折扣。
    newshbb
        24
    newshbb  
    OP
       289 天前
    @RatioPattern 谢谢,我终于可以解释给客户我为啥不上 CF ,天天 BB CF ,烦死了。
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5449 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 50ms · UTC 03:26 · PVG 11:26 · LAX 19:26 · JFK 22:26
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.