DDoS***基础
DDoS(Distributed Denial of service,分布式拒绝服务)***的主要目的是让指定目标无法提供正常服务,甚至从互联网上消失,是目前最强大、最难防御的***之一。
DDos 主要分类:
SYN Flood***,DNS Query Flood***,HTTP Flood ***
1 SYN Flood***
SYN Flood***利用了TCP三次握手的缺陷,能够以较小代价使目标服务器无法响应,且难以追查,
三次握手过程如下:
1 客户端发送一个包含SYN标志的TCP报文,报文会指明客户端端口以及TCP连接的初始序号。
2 服务器收到报文后,会返回一个SYN+ACK报文给客户端,表示客户端的请求已经被服务器接收,同时TCP初始化序号自动加一
3 客户端也会返回一个确认报文ACK 给服务器,同样TCP序列号也自动加一
这样tcp 连接就建立完成了。
***原理:
击者伪装大量的IP地址给服务器发送SYN报文,由于伪造的IP地址几乎不可能存在,也就几乎没有设备会给服务器返回任何应答了。因此,服务器将会维持一个庞大的等待列表,不停的重试发送SYN+ACK报文,同时占用着大量的资源无法释放。更关键的是,被***服务器的SYN_RECV队列被恶意的数据包占满,不再接受新的SYN请求,合法用户无法完成三次握手建立起TCP连接。也就是说,这个服务器被SYN Flood拒绝服务了。
预防:
SYN Flood***大量消耗服务器的CPU、内存资源,并占满SYN等待队列。相应的,我们修改内核参数即可有效缓解。主要参数如下:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2
分别为启用SYN Cookie、设置SYN最大队列长度以及设置SYN+ACK最大重试次数
2 DNS Query Flood***
***原理:
DNS Query Flood就是***者操纵大量傀儡机器,对目标发起海量的域名查询请求
预防:
DNS***防御也有类似HTTP的防御手段,第一方案是缓存。其次是重发,可以是直接丢弃DNS报文导致UDP层面的请求重发,可以是返回特殊响应强制要求客户端使用TCP协议重发DNS查询请求。
特殊的,对于授权域DNS的保护,设备会在业务正常时期提取收到的DNS域名列表和ISP DNS IP列表备用,在***时,非此列表的请求一律丢弃,大幅降低性能压力。对于域名,实行同样的域名白名单机制,非白名单中的域名解析请求,做丢弃处理。
3 HTTP Flood ***
***原理:
***者并不需要控制大批的傀儡机,取而代之的是通过端口扫描程序在互联网上寻找匿名的HTTP代理或者SOCKS代理,***者通过匿名代理对***目标发起HTTP请求。匿名代理是一种比较丰富的资源,花几天时间获取上午的代理并不是难事,因此***容易发起而且可以长期高强度的持续。
预防:
1 HTTP Flood***防御主要通过缓存的方式进行,尽量由设备的缓存直接返回结果来保护后端业务。大型的互联网企业,会有庞大的CDN节点缓存内容。
2 javascript跳转人机识别方案
当清洗设备截获到HTTP请求时,返回一段特殊Javascript代码,正常用户的浏览器会处理并正常跳转不影响使用,而***程序会***到空处。