出于打击报复、敲诈勒索、政治需要等各种原因,加上攻击成本越来越低、效果特别明显等特点,DDoS攻击已经演变成全球性网络安全威胁。
1、可怕的DDoS
2、DDoS攻击科普
3、DDoS防护科普
根据卡巴斯基2016Q3的调查报告,DDoS攻击造成61%的公司无法访问其关键业务信息,38%公司无法访问其关键业务,33%的受害者因此有商业合同或者合同上的损失。
总结起来,现在的DDoS攻击具有以下趋势:
1.国际化
现在的DDoS攻击越来越国际化,而我国已经成为仅次于美国的第二大DDoS攻击受害国,而国内来自海外的DDoS攻击源占比也越来越高。
2.超大规模化
因为跨网调度流量越来越方便、流量购买价格越来越低廉,现在DDoS攻击流量规模越来越大。特别是2014年底,某云还遭受了高达450Gbps的攻击。
3.市场化
市场化势必带来成本优势,现在各种在线DDoS平台、肉鸡交易渠道层出不穷,使得攻击者能以很低的成本发起规模化攻击。针对流量获取方式的对比可以参考下表。
流量获取方式 | 在线DDOS平台购买API | VPS | 专属服务器 | 黑市购买 | 社交平台购买 | 肉鸡集群 |
价格 | 高 | 低 | 高 | 中等 | 中等 | 无 |
法律风险 | 中等 | 低 | 低 | 中等 | 中等 | 高 |
交易风险 | 低 | 高 | 低 | 中等 | 高 | 无 |
流量稳定性 | 不确定 | 稳定 | 稳定 | 不确定 | 不确定 | 低 |
IP资源数量 | 不确定 | 低 | 低 | 不确定 | 不确定 | 高 |
技术要求 | 低 | 中 | 中 | 低 | 低 | 高 |
交易货币要求 | 比特币 | 普通货币 | 普通货币 | 比特币 | 比特币,普通货币等 | 无 |
DDoS攻击科普
DDoS的攻击原理,往简单说,其实就是利用TCP/UDP协议规律,通过占用协议栈资源或者发起大流量拥塞,达到消耗目标机器性能或者网络的目的,下面我们先简单回顾TCP“三次握手”与“四次挥手”以及UDP通信流程。
TCP三次握手与四次挥手
TCP建立连接:三次握手
1.client: syn
2.server: syn+ack
3.client: ack
TCP断开连接:四次挥手
1.client: fin
2.server: ack
3.server: fin
4.client: ack
UDP通信流程
根据上图可发现,UDP通信是无连接、不可靠的,数据是直接传输的,并没有协商的过程。
攻击原理与攻击危害
按照攻击对象的不同,将攻击原理和攻击危害的分析分成3类,分别是攻击网络带宽资源、应用以及系统。
攻击网络带宽资源:
攻击系统资源:
攻击应用资源:
攻击防护原理
从TCP/UDP协议栈原理介绍DDoS防护原理:
syn flood:
可以在收到客户端第三次握手reset 、第二次握手发送错误的ack,等Client回复Reset,结合信任机制进行判断。
ack flood:
丢弃三次ack,让对方重连:重发syn建立链接,后续是syn flood防护原理;学习正常ack的源,超过阈值后,该ack没有在正常源列表里面就丢弃ack三次,让对方重连:重发syn建立链接,后续是syn flood防护。
udp flood:
1.限速 | 启动阈值,一秒钟去往服务器IP的同一端口的UDP包数目,如果是WEB服务器,可以设置严格一些 |
2.报文内容特征-模式匹配 | 模式匹配规则主要用于过滤包内容带特征字符的攻击包 |
3.IP特征-ACL | 若遇到(1)源IP+目的固定;(2)流量超过1G==>在网络设备层面使用acl进行过滤 |
1.按攻击流量规模分类
较小流量:
小于1000Mbps,且在服务器硬件与应用接受范围之内,并不影响业务的: 利用iptables或者DDoS防护应用实现软件层防护。
大型流量:
大于1000Mbps,但在DDoS清洗设备性能范围之内,且小于机房出口,可能影响相同机房的其他业务的:利用iptables或者DDoS防护应用实现软件层防护, 或者在机房出口设备直接配置黑洞等防护策略,或者同时切换域名,将对外服务IP修改为高负载Proxy集群外网IP,或者CDN高仿IP,或者公有云DDoS网关IP,由其代理到RealServer;或者直接接入DDoS清洗设备。
超大规模流量:
在DDoS清洗设备性能范围之外,但在机房出口性能之内,可能影响相同机房的其他业务,或者大于机房出口,已经影响相同机房的所有业务或大部分业务的:联系运营商检查分组限流配置部署情况并观察业务恢复情况。
2.按攻击流量协议分类
syn/fin/ack等tcp协议包:
设置预警阀值和响应阀值,前者开始报警,后者开始处理,根据流量大小和影响程度调整防护策略和防护手段,逐步升级。
UDP/DNS query等UDP协议包:
对于大部分游戏业务来说,都是TCP协议的,所以可以根据业务协议制定一份TCP协议白名单,如果遇到大量UDP请求,可以不经产品确认或者延迟跟产品确认,直接在系统层面/HPPS或者清洗设备上丢弃UDP包。
http flood/CC等需要跟数据库交互的攻击:
这种一般会导致数据库或者webserver负载很高或者连接数过高,在限流或者清洗流量后可能需要重启服务才能释放连接数, 因此更倾向在系统资源能够支撑的情况下调大支持的连接数。相对来说,这种攻击防护难度较大,对防护设备性能消耗很大。
其他:
icmp包可以直接丢弃,先在机房出口以下各个层面做丢弃或者限流策略。现在这种攻击已经很少见,对业务破坏力有限。