内容简介:来源内容来源于公司内部技术分享<DDos
来源
内容来源于公司内部技术分享< 前端原发性DDos防御与应对方案 >
DDos
要知道DDos是什么?首先得了解Dos,拒绝服务攻击( denial-of-service attack )亦称洪水攻击,是一种网络攻击手法,其目的在于使目标计算机的网络或系统资源耗尽,使服务暂时中断或停止,导致其正常用户无法访问。那么什么又是DDos呢?当黑客使用网络上两个或以上被攻陷的计算机作为“僵尸”向特定的目标发动“拒绝服务”式攻击时,称为分布式拒绝服务攻击( distributed denial-of-service attack )
前端原发性
那什么又是前端原发性DDos呢? 由前端逻辑漏洞产生的DDos。现在服务基本都是基于C/S,简单的逻辑一般通过客户端调用服务端接口,也可以将数据通过消息系统推到客户端即可满足。但是有些需求,为了更好的用户体验,实时性,在实现上有推拉结合,错误重试等方式。在复杂的实现下,往往会引发漏洞。再者客户端与服务端数据同步必须有一次交互,网站流量比较大时,自己的客户端便成了“僵尸”,疯狂攻击自家服务器。
典型场景
长链接消息触发并发请求
接口请求失败,触发重试的并发请求
所有秒杀型,发生大量并发的应用场景
DDos导致结果
1. 服务器
CPU 负载高
资源无法释放,如 TCP 连接数
进程堆积,如 PHP,
资源耗尽
可能引起雪崩:大流量下,若一个内部服务出现性能瓶颈,直接会导致上游服务阻塞,短时间内故障扩散
2. 客户端
刚开始是一部分用户能打开,一部分打不开。随着时间越长,越来越多用户打不开,最后所有服务都不可用。
请求 pending ,响应极慢,等待时间长
最后页面完全打不开或接口不通
遇到的事故
事故1: 某次活动中,客户端收到长链会回调服务端接口,结果消息触发次数多,再加上直播间用户量比较大,形成一个n*m量级访问,单位时间内有8kw请求,最后异常流量原来来自自己。
事故2: 之前开发的一个功能,客户端收到长链消息会自动下载应用包。游戏首发日运营同事为了效果,加快长链消息下发速度,导致机房短时间流量跑满。
防御与应对方案
1. 前端防御
-
没有并发就是限制并发最好的方法
-
避免失败重试,设置重试上限,松散重试
-
优化业务逻辑,可以将部分计算放到客户端,减少客户端请求接口的次数
-
静态缓存, CDN 、 CMS
-
长链下发数据,前提要符合长链的技术应用标准
-
松散请求,均匀分布在 0~15s 之内处理完。15s是一个经验值,考虑到实时性这个可以动态调整,比如在直播间可以根据直播间人数,还有服务可承受的qps来计算。
-
如果 15s 还处理不完,应该优化接口性能或扩容。比如收到长链之后发请求,要充分评估服务的承载能力
-
轮询不是恶魔,合理使用轮询替代长链请求,能获得更好的性能
2. 接入层防御
-
重大活动,流量预估,提前扩容
-
请求频率限制, nginx limit
-
设置后端服务接口超时,一般是 1~2 秒
-
使用高性能代理, nginx 、 lua
-
避免代理 80 端口的应用
-
增加缓存, fastcgi-cache 、 varnish
-
小心缓存穿透
-
避免接口臃肿,一个接口请求多个后端服务
-
接口臃肿的坏处:容易引起雪崩效应
-
按需调用资源,最小权限原则
3. 架构层防御
-
流量控制、熔断机制
-
快速扩容,自动扩容
原则
追求经济性,设计合理。提前预防,从容应对。
总结
前端原生性DDos是在完成业务功能中常常被忽略的问题,危害又很严重。是客户端,服务端两方面的问题,但是等到客户端发版了,那就只能靠服务器端扩容(web页面的话可以直接上线)。因为可能大量的逻辑在客户端。所以在业务遇到类似情况时,首先,必须意识到潜在隐患。再者,就是一起优化技术实现逻辑。最后再考虑机器扩容。
微信公众号 :
溜溜技术
简介:
来自各大移动互联网服务端 程序员 的思想碰撞平台 。技术、逻辑、思辩、进步、创新。有没有干货,拉出来溜溜!
投稿联系 :
oscersong007
长按二维码, 发现惊喜
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Web Caching
Duane Wessels / O'Reilly Media, Inc. / 2001-6 / 39.95美元
On the World Wide Web, speed and efficiency are vital. Users have little patience for slow web pages, while network administrators want to make the most of their available bandwidth. A properly design......一起来看看 《Web Caching》 这本书的介绍吧!