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

209 天前
 waytodelay

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

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

麻烦各位巨佬指导下

2693 次点击
所在节点    程序员
25 条回复
gongxuanzhang
209 天前
ddos?除了钞能力有解吗
muzi996
209 天前
云服务有自带的 doss 防火墙,本地的话好像只有加机器了
huali70531
209 天前
如果要保证服务不中断:
硬件上花钱购买 WAF 防火墙
加验证码,检测来源请求头,IP 地址判断是否是常用客户 IP 地区拦截请求。增加 IP 计数,对于高频 IP 地址,拉黑整个 IP 网段。
临时提升服务器硬件和带宽

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


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

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

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

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

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

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

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

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

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

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

会损失一部分用户体验

可以考虑先对高风险 IP 进行限制,比如国外 IP ,访问频率过高的 IP

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

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

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

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

© 2021 V2EX