首页 存档 技术 查看内容

五步七招,开启最强DDoS攻防战!

2018-3-30 13:00 |来自: 互联网 280 0

摘要: 作者介绍 林伟壕,网络安全DevOps新司机,先后在中国电信和网易游戏从事数据网络、网络安全和游戏运维工作。对Linux运维、虚拟化和网络安全防护等研究颇多,目前专注于网络安全自动化检测、防御系统构建。 本文大纲 ...


作者介绍

林伟壕网络安全DevOps新司机,先后在中国电信和网易游戏从事数据网络、网络安全和游戏运维工作。对Linux运维、虚拟化和网络安全防护等研究颇多,目前专注于网络安全自动化检测、防御系统构建。


本文大纲:

  1. 可怕的DDoS

  2. DDoS攻击科普

  3. DDoS防护科普

  4. DDoS攻击与防护实践

  5. 企业级DDoS清洗系统架构探讨


可怕的DDoS


出于打击报复、敲诈勒索、政治需要等各种原因,加上攻击成本越来越低、效果特别明显等特点,DDoS攻击已经演变成全球性网络安全威胁。


危害


根据卡巴斯基2016Q3的调查报告,DDoS攻击造成61%的公司无法访问其关键业务信息,38%公司无法访问其关键业务,33%的受害者因此有商业合同或者合同上的损失。


趋势


总结起来,现在的DDoS攻击具有以下趋势:


1国际化


现在的DDoS攻击越来越国际化,而我国已经成为仅次于美国的第二大DDoS攻击受害国,而国内来自海外的DDoS攻击源占比也越来越高。


2超大规模化


因为跨网调度流量越来越方便、流量购买价格越来越低廉,现在DDoS攻击流量规模越来越大。特别是2014年底,某云还遭受了高达450Gbps的攻击。



3市场化


市场化势必带来成本优势,现在各种在线DDoS平台、肉鸡交易渠道层出不穷,使得攻击者能以很低的成本发起规模化攻击。针对流量获取方式的对比可以参考下表。



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类,分别是攻击网络带宽资源、应用以及系统。


攻击网络带宽资源:



攻击系统资源:



攻击应用资源:



DDoS防护科普


攻击防护原理


从TCP/UDP协议栈原理介绍DDoS防护原理:



syn flood:


可以在收到客户端第三次握手reset 、第二次握手发送错误的ack,等Client回复Reset,结合信任机制进行判断。


ack flood:


丢弃三次ack,让对方重连:重发syn建立链接,后续是syn flood防护原理;学习正常ack的源,超过阈值后,该ack没有在正常源列表里面就丢弃ack三次,让对方重连:重发syn建立链接,后续是syn flood防护。


udp flood:



不同层面的防护


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包可以直接丢弃,先在机房出口以下各个层面做丢弃或者限流策略。现在这种攻击已经很少见,对业务破坏力有限。


DDoS攻击与防护实践


自建DDoS平台


现在有开源的DDoS平台源代码,只要有足够机器和带宽资源,随时都能部署一套极具杀伤力的DDoS平台,如下图的第三种方案。



发包工具:


下面提供一款常用DDoS客户端的发包代码,可以看到攻击方式非常丰富,ip、端口、tcp flag、包大小都是自定义的。


```

def func():

os.system("./txDDoS-a " type " -d " ip " -y " port " -f 0x10 -s 10.10.10.10 -l 1300")

if __name__ == "__main__":

pool = multiprocessing.Pool(processes=int(nbproc))

for i in xrange(int(nbproc)):

pool.apply_async(func)

pool.close()

pool.join()

```


讲完了DDoS攻击的实现方式,下面介绍如何从iptables、应用自身和高性能代理等角度去防御DDoS攻击。


iptables防护


sysctl -w net.ipv4.ip_forward=1

声明:文章版权归原作者所有 部分文章转自互联网 如有侵权请联系 [邮箱地址] 删除

路过

雷人

握手

鲜花

鸡蛋

相关分类

返回顶部