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

被问到个题目,同一时间段有大量恶意请求打到系统,可以做什么措施

  •  
  •   waytodelay · 55 天前 · 2426 次点击
    这是一个创建于 55 天前的主题,其中的信息可能已经有所发展或是发生改变。

    好久之前面试被问到,同一时间段有大量恶意请求打到系统,可以做什么措施,这些 ip 都是不固定的,系统负载有限,影响到正常请求了。

    这个应该从什么方面回答? 我只能想到事前做好限流降级,但是这个也没办法保证正常的使用吧? 还有 ip 黑名单感觉也没办法用上。 验证码这个倒是可以使用。

    麻烦各位巨佬指导下

    25 条回复    2024-04-28 16:06:49 +08:00
    gongxuanzhang
        1
    gongxuanzhang  
       55 天前
    ddos?除了钞能力有解吗
    muzi996
        2
    muzi996  
       55 天前
    云服务有自带的 doss 防火墙,本地的话好像只有加机器了
    huali70531
        3
    huali70531  
       55 天前
    如果要保证服务不中断:
    硬件上花钱购买 WAF 防火墙
    加验证码,检测来源请求头,IP 地址判断是否是常用客户 IP 地区拦截请求。增加 IP 计数,对于高频 IP 地址,拉黑整个 IP 网段。
    临时提升服务器硬件和带宽

    如果可以保证服务中断:
    关服务器。


    如果说不想花钱还想保证服务不中断,当对面是吃素长大的吗?
    dapang1221
        4
    dapang1221  
       55 天前
    什么请求,TCP 还是 UDP 还是 ICMP ,TCP 的话是规则的 http 报文还是恶意 payload ,什么叫打到系统,打到什么系统,请求的 API 接口还是渲染的网页还是静态资源。不同级别有不同级别的应对方式
    dapang1221
        5
    dapang1221  
       55 天前   ❤️ 7
    UDP 的 ddos:上硬件防火墙,从机房清洗,或者上高防做转发
    http 报文:接口限速熔断、增加校验、加签名、时间戳、登录校验,防止重放
    恶意 payload/cc:上 waf ,软硬都行
    网页:做静态化
    静态资源:cdn 分流
    能想到的基本都在这了
    waytodelay
        6
    waytodelay  
    OP
       55 天前
    @huali70531 他说 ip 都是不固定的,没有什么明显特征
    waytodelay
        7
    waytodelay  
    OP
       55 天前
    @gongxuanzhang
    @muzi996
    @huali70531
    @dapang1221

    比如说是电商系统,短时间内有很大的量来下单什么的,不过是不正常的流量
    jsjejejdjdjhh
        8
    jsjejejdjdjhh  
       55 天前 via iPhone   ❤️ 1
    我来回答你,这个不是 ddos ,属于 cc 攻击,用脚本发起的攻击,用虚拟 ip 模仿真实用户访问,然后目的就是消耗服务器资源,cpu 和带宽,这种还是上防护解决比较好,你单纯设置策略防不住的,现在 cc 攻击模仿的和真人没什么区别了,策略做不好还会把真实用户误封了。
    jsjejejdjdjhh
        9
    jsjejejdjdjhh  
       55 天前 via iPhone
    防护可以考虑上 cf ,但是国内电商的话可能延迟会有点问题,但是大厂不推荐。
    cdlnls
        10
    cdlnls  
       55 天前 via Android   ❤️ 1
    这里应该指的是 cc 攻击,如果是 ddos 的话,可能直接被黑洞了。

    解决方法估计只能加钱,上 waf 上高防 加机器硬抗。不加钱的方案,配置个频率控制来限流,可能能用但是作用也有限。

    加验证码应该不太行,别人其他的不刷,就刷你获取验证码的接口,这样压力可能也不小。

    要想降低影响,可以看情况把服务分开部署,被攻击的时候不至于影响到其他业务。
    lcy630409
        11
    lcy630409  
       55 天前
    加验证码 用第三方的 比如极验 阿里云之类的 ,把压力转移
    Lixiaobai233
        12
    Lixiaobai233  
       55 天前
    顶个验证码,加个 waf ,大厂有很多现成的方案,加钱就是了。
    当然,关机也不是不行。
    cus
        13
    cus  
       55 天前
    开摆
    zdking08135
        14
    zdking08135  
       55 天前   ❤️ 2
    分两种情况,一种是对着 IP 瞎鸡儿发包,一种是尝试构造异常请求。

    如果是瞎鸡儿发包这种,设计的比较完善的交互协议,本身就有做强校验的。一般是在分两种情况。

    如果是自有的二进制协议,适用于 app 请求场景,这种本身伪造的难度就很高。
    一般是发到网络的请求包就带加密了,伪造协议无法正常交换密钥,在接入层解密的时候就会失败。

    如果是公开协议,比如 http ,这一类很容易通过脚本构造请求包,
    这类解决方式一般是在前端代码中混淆嵌入密钥和算法,然后给请求生成签名。
    计算签名时,携带时间戳和随机数,然后接入层校验的时候就能拦截掉。
    这类校验逻辑无上下文状态,节点很容易 scaling 。

    实际业务中,除非是对内部实现有了解的人,否则很难通过非端环境构造合法报文。
    大的系统都有专门的接入层,只负责协议加解密转发之类的,节点数远多于业务节点数,请求进接入层之前还要走 LB 。真正打垮接入层很难,成本极高。

    如果是异常请求,但是通过了校验,比如别人拿了客户端代码改了直接发包。
    这种就只能上验证码之类的了。
    epiphyllum
        15
    epiphyllum  
       55 天前   ❤️ 1
    不知道这段文字有什么问题,看图片吧(希望它能正常显示
    fatigue
        16
    fatigue  
       54 天前
    @waytodelay 电商系统下单需要账号吧,他账号够多就随他下呗,现在账号都绑定手机号啥的
    inktiger
        17
    inktiger  
       54 天前
    两种方式,
    1 、第一种网络无授权的 url 请求,使用钞能力,上防御,加机器。
    2 、下单的大量请求,肯定要依托账号,对账号做限制,下单使用图形验证码。控制虚拟手机号的购买。
    codegenerator
        18
    codegenerator  
       54 天前   ❤️ 1
    这个问题太笼统了,可以分很多种情况
    当然也有可能面试官希望你能主动跟他交流
    xuanbg
        19
    xuanbg  
       54 天前
    能区分就上流量清洗,无法区分就上机器硬扛
    leaflxh
        20
    leaflxh  
       54 天前
    加验证码(手势/物体识别/数字字母)

    会损失一部分用户体验

    可以考虑先对高风险 IP 进行限制,比如国外 IP ,访问频率过高的 IP
    xiyy02
        21
    xiyy02  
       54 天前
    @leaflxh 这个只对写请求有意义,读请求每个都验证会被骂死的
    wanguorui123
        22
    wanguorui123  
       54 天前
    Cloudflare 验证码
    mengzhuo
        23
    mengzhuo  
       54 天前   ❤️ 1
    不知道面啥,架构的话应该是,韧性和高可用啊
    按层解,IP/TCP/HTTP ,防火墙什么的前面楼层说了很多了
    按系统解,横向,降级,标记限流,分流
    按业务解,根据业务、用户、服务重要性优先级提供服务
    huali70531
        24
    huali70531  
       53 天前
    @waytodelay 加钱!!!
    waytodelay
        25
    waytodelay  
    OP
       53 天前
    @fatigue 只是打个比方,他也没说是什么系统。而且感觉他问的有点太笼统了
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2794 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 45ms · UTC 14:36 · PVG 22:36 · LAX 07:36 · JFK 10:36
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.