DDOS攻防资料整理
2019-08-25 本文已影响0人
AmazRan
前言
日常开发中有时会遇到业务接口被刷了,因此想做一篇相关的文章摘要整理。
基本概念
维基给出的定义:DDOS攻击即denial-of-service attack 是一种爬虫攻击。
但是有的地方又喜欢把DDOS 作为一大类攻击的总称,其中爬虫攻击是很典型的一种,个人认为具体怎么叫没有必要深究。
攻击者通过这种方式让一台机器或网络资源宕机不可用。当然攻击者也有可能是通过大量的请求,获取业务数据,例如美团、携程、大众点评等的内容数据。
通常攻击者通过伪造成正常用户,伪造UA、cookie等等,通过海量的ip代理服务器发起请求,较为严重的,会造成CPU满、带宽满、内存满、连接数满等等,进而影响到正常用户的访问请求。
建议阅读阮大的DDOS 攻击的防范教程,亲身示范生动具体😂
解决办法
DDOS没有绝对完善的解决办法!
DDOS的攻防中,只能是双方之间的较量硬碰硬,并没有一招制胜的说法。阅读了各类资料,大致整理了几个要点
-
准备一个备份网站
在服务器下线了,最低限度通过这种页面告诉用户正在抢修中。这种临时主页建议放到 Github Pages 或者 Netlify,它们的带宽大,可以应对攻击,而且都支持绑定域名,还能从源码自动构建。 -
web服务器拦截ip请求
非常消耗性能。假使黑客通过发动成千上万的肉鸡,在短时间内发起海量访问,这种做法就没有用了。 -
借助SLB产品
参考了底部阿里云的文章,借助其SLB产品在web服务器前帮助过滤请求。关键词:清洗、黑洞。进行攻击报文过滤、流量限速、包限速甚至为保护整个集群的安全所有入流量丢弃处理。具体做法移步相应的产品说明书。 -
架设硬件防火墙
在web服务器前架设防火墙专门过滤请求,但这种价格也昂贵。
类似的 -
带宽扩容
当遭到攻击,短时间内急剧扩容,提供几倍或几十倍的带宽,顶住大流量的请求。为什么云服务商可以提供防护产品,因为他们有大量冗余带宽,可以用来消化 DDOS 攻击。 -
CDN
CDN指的是网站的静态内容分发到多个服务器,用户就近访问,提高速度。因此,CDN 也是带宽扩容的一种方法,可以用来防御 DDOS 攻击。
网站内容存放在源服务器,CDN 上面是内容的缓存。用户只允许访问 CDN,如果内容不在 CDN 上,CDN 再向源服务器发出请求。这样的话,只要 CDN 够大,就可以抵御很大的攻击。不过,这种方法有一个前提,网站的大部分内容必须可以静态缓存。对于动态内容为主的网站(比如论坛),就要想别的办法,尽量减少用户对动态数据的请求。 -
镜像服务器
本质也就是自己搭建一个微型 CDN。各大云服务商提供的高防 IP,背后也是这样做的:网站域名指向高防 IP,它提供一个缓冲层,清洗流量,并对源服务器的内容进行缓存。
这里有一个关键点,一旦上了 CDN,千万不要泄露源服务器的 IP 地址,否则攻击者可以绕过 CDN 直接攻击源服务器。阮大也遇到了绕过直接被攻击源服务器的情况,最后他买了弹性 IP ,可以动态挂载主机实例,受到攻击就换一个地址。
等等还有很多。一些防的越彻底的算法,也会增加正常业务数据丢失的风险,当然这是难以避免的。
有效的DDoS防护机制应该包含以下六个步骤
- 提前能检测到攻击,并启动相应的减缓攻击措施
- 当攻击上升到一个等级没有被成功阻止下来,立刻通知相应的处理团队
- 核实攻击的确是在发生,分析,提供解决方案在必要时云端迁移
- 将迁移信号发送给云端,同时带上这次攻击的详细细节
- 云端开始转移并清洗请求数据,通常是借助 Border Gateway Protocol (BGP) or the Domain Name System (DNS)
- 当攻击结束,When the attack is over, traffic is restored to its normal path through the ISP.
先前提到的解决方案应该归纳到第一点的减缓攻击措施里。如果还是没有拦截下来,可以按照这个流程去处理,至少在第一时间可以保持服务正常(当然是用备用的网页也是个好的方案,但这个更加成熟)
心得
就像开篇讲的一样,DDOS攻击并没有最好的根治之法,做不到彻底防御,只能采取各种手段在一定程度上减缓攻击伤害。所以平时服务器的运维工作还是要做好基本的保障,将DDOS攻击带来的损失尽量降低到最小。
参考
阮一峰的DDOS 攻击的防范教程
聊一聊负载均衡SLB的DDoS防护
How to Defend Against DDoS Attacks: Six Steps