原理
分布式拒绝服务(DDos),拒绝服务指我们的应用被恶意攻击,无法给正常的用户提供服武器,攻击者会发出大量的恶意请求,耗尽网站的带宽和资源。分布式指攻击者使用多台服务器对我们的应用所在服务器进行攻击。
而 DDos 攻击的原理便是短时间内发出大量的恶意请求,导致正常用户无法访问。
攻击方式
我们的应用要给用户提供服务,需要经过以下过程:一、数据通过网络传输;二、建立 TCP 连接;三、网站提供服务。
所以,只要攻击者在以上的任意一个过程中,进行攻击,都有可能导致无法提供服务。
1、攻击者朝目标网站发送大量的恶意数据包,耗尽网络的带宽,导致正常用户数据包无法及时传输。
2、TCP建立连接的过程中,握手信息保存在一张连接表中,连接表的信息也是有限的,如果连接表被占满,则无法为其他用户的TCP连接及时处理。
3、攻击网站应用,比如我们通过 Redis 来降低数据库的压力,但是如果 Redis 不起作用,大量请求直接落入数据库中,便造成数据库的直接宕机。我们通常建立的主键ID都是由0开始递增,如果攻击者一直查询ID为-1的数据,那么Redis便不能起作用,所以后端代码应该进行数据校验。
防御方式
1、拦截攻击请求,分析请求是否来自同一IP或者请求中的参数非法且大量,那么可以认为是非法请求,只要直接过滤就OK了,而过滤的方式都三种:1、硬件防火墙;2、操作系统防火墙;3、软件建立过滤规则进行过滤。
2、带宽扩容,将所有的请求全部消化掉。
3、CDN。因为所有的请求都是先访问CDN,当目标数据不存在时,则访问应用。所以 CDN 可以起到一定的缓冲作用。