DDOS攻击类型:
1.资源消耗型攻击:Syn Flood 、UDP Flood、ACK Flood、ICMP Flood、Slowloris慢速连接攻击
2.服务消耗型攻击:CC攻击
3.反射攻击:DNS Flood
主要的攻击介绍:
SYN Flood
攻击者伪装大量的IP地址给服务器发送SYN报文,由于伪造的IP地址几乎不可能存在,也就几乎没有设备会给服务器返回任何应答了。因此,服务器将会维持一个庞大的等待列表,不停地重试发送SYN+ACK报文,同时占用着大量的资源无法释放。更为关键的是,被攻击服务器的SYN_RECV队列被恶意的数据包占满,不再接受新的SYN请求,合法用户无法完成三次握手建立起TCP连接。也就是说,这个服务器被SYN Flood拒绝服务了。
2. Slowloris慢速连接攻击
慢速攻击就是要维持跟服务器的连接,导致正常客户端的连接不能建立,从而达到拒绝服务的目的。
3. Hash碰撞攻击
所谓的哈希碰撞攻击就是,针对哈希函数的特性,精心构造数据,使所有数据的哈希值相同,当这些数据保存到哈希表中,哈希表就会退化为单链表,哈希表的各种操作的时间复杂度提升一个数量级,因此会消耗大量CPU资源,导致系统无法快速响应请求,从而达到拒绝服务攻击(Dos)的目的。
发起方式:HashTable在所有的Web应用框架上都有应用,我们对Web应用每次发起请求所提交的参数,服务器端都会将其存储在HashTable中供后台代码调用,所以哈希碰撞攻击的攻击方式一般都是通过发送包含大量碰撞键值的参数的post请求,来达到攻击的目的。
4. DNS Query Flood
DNS可以分为普通DNS和授权域DNS,攻击普通DNS,IP地址需要随机伪造,并且指明服务器要求做递归解析;但攻击授权域DNS,伪造的源IP地址则不应该是纯随机的,而应该是事先收集的全球各地ISP的DNS地址,这样才能达到最大攻击效果。
DNS Query Flood就是攻击者操纵大量傀儡机器,对目标发起海量的域名查询请求。为了防止基于ACL的过滤,必须提高数据包的随机性。常用的做法是UDP层随机伪造源IP地址、随机伪造源端口等参数。在DNS协议层,随机伪造查询ID以及待解析域名。随机伪造待解析域名除了防止过滤外,还可以降低命中DNS缓存的可能性,尽可能多地消耗DNS服务器的CPU资源。
5. HTTP Flood(CC攻击)
通过端口扫描程序在互联网上寻找匿名的HTTP代理或者SOCKS代理,攻击者通过匿名代理对攻击目标发起HTTP请求。
HTTP Flood攻击在HTTP层发起,极力模仿正常用户的网页请求行为,与网站业务紧密相关,安全厂商很难提供一套通用的且不影响用户体验的方案。在一个地方工作得很好的规则,换一个场景可能带来大量的误杀。
- ACK Flood
当建立完TCP连接后,所有的数据传输TCP报文都是带有ACK标志位的,主机在接收到一个带有ACK标志位的数据包的时候,需要检查该数据包所表示的连接四元组是否存在(查TCP连接表,增加cpu耗时),如果存在则检查该数据包所表示的状态是否合法,然后再向应用层传递该数据包。如果在检查中发现该数据包不合法,例如该数据包所指向的目的端口在本机并未开放,则主机操作系统协议栈会回应RST包告诉对方此端口不存在。
DDOS防御:
架构优化:
对于部署在云端的系统,可以使用云解析,优化DNS的智能解析
使用LB,通过负载均衡来减缓CC攻击的影响,同时也能将访问用户均衡分配到各个web服务器上,减少单个web服务器的压力,加快服务器的响应速度。
使用专有网络VPC,防止内网攻击
做好服务器的性能测试,评估正常业务环境下能承受的带宽和请求数,确保可以随时弹性扩容
使用ip代理服务器,隐藏服务器的真实ip地址,防止泄露服务器的ip
服务器安全加固:
限制同时打开的SYN半连接数目,缩短SYN半连接的timeout时间,限制SYN流量
禁用ICMP。仅在需要测试时开放ICMP
控制TCP连接,通过iptables软件防火墙来限制某些IP的新建连接
控制某些IP的速率
针对性的防御措施
- SYN FLOOD防御:
修改内核参数:
net.ipv4.tcp_syncookies = 1
net.ipv4.tcp_max_syn_backlog = 8192
net.ipv4.tcp_synack_retries = 2
分别为启用SYN Cookie、设置SYN最大队列长度以及设置SYN+ACK最大重试次数。
- Slowloris慢速连接防御
对于这种慢速攻击的防御,可以简单的依据其特征,修改些参数即可,包括:限制单机IP的连接数、限制http request header/body 的超时时间、包括其头部包含的字段也是其特征。
- Hash碰撞攻击防护
限制post请求的个数
限制冲突链表的长度
- DNS FLOOD 防御:
普通DNS
缓存,将缓存的ip地址返回给后端业务
重发:丢弃DNS报文导致UDP层面的重发,返回特殊响应强制要求客户端使用TCP协议重发
授权域DNS:
对于授权域DNS的保护,设备会在业务正常时期提取收到的DNS域名列表和ISP DNS IP列表备用,在攻击时,非此列表的请求一律丢弃,大幅降低性能压力。
- HTTP FLOOD防御:
通过缓存来做,将设备的缓存来直接返回给后端业务
缓存击穿,对源ip的http请求频率做统计,高于一定频率的IP地址加入黑名单,但是这样会带来误杀。因此,此方案已经被废弃。取而代之的是JavaScript跳转人机识别方案。
网友评论