邪恶八进制信息安全团队技术讨论组's Archiver

EvilOctal 2004-11-26 13:04

[转载]ADDN网络抵御DDOS攻击

信息来源:安全焦点

inburst
看到在中国电信安全峰会上绿盟的一篇讲稿,名为《ADDN网络抵御DDOS攻击》,作者刘闻欢、叶小虎等,摘抄其中部份内容让大家探讨

方案概述
[img]http://eviloctal.hackway.net/weblog/up/1101445556.png[/img]
电信系统网络规模庞大,情况复杂,面临猖獗的恶意攻击,虽然可以在核心层路由和交换设备上做一些策略来阻止恶意攻击,但运营商通常不倾向在正常运行情况时去做配置上的改动,我们的ADDN解决方案正是在这种背景下提出来的。
简单来说:ADDN是通过抗DOS攻击设备系统与SINK-HOLE 路由器组合来抵抗DOS攻击。它在不对核心网络设备做配置上更改的情况下,保证服务器免受来自接入层用户恶意的DOS攻击。当发生DOS攻击时,我们可以把数据流引向一个能应对DOS攻击的设备,通过抗DOS攻击设备的过滤,正常数据流再通过专有通道流回到对外服务的服务器,完成合法客户正常访问。
同时,在ADDN网络中还可以设置了高性能的网络入侵检测(分析)系统,对指定引入到ADDN中的网络流量进行分析,而无需像传统的网络入侵检测系统部署方式,需要在全网范围的交换设备上进行部署。

具体技术描述

R1 ,R2,R3,R4,SINK-HOLE路由器在同一个AS200域内,它们都作为AS200内的IBGP的一个对等实体,R3作为路由反射器,所有IBGP的信息都通过R3来转发,根据实际电信网络环境,用一台边缘的路由器R3做为SINK-HOLE ROUTER ,同时在R3和SINK-HOLE ROUTER之间放置抗DOS攻击设备,当网络上出现流量异常时候,做为AS1内的SINK-HOLE ROUTER 可以通过手动加长子网掩码来发出广播信息,通知AS内的其他ROUTER,根据路由最长匹配原则来改变路径。
在AS1内部,所有的网络段都是C类网段(24位掩码),当来自接入层网络上节点172.16.10.1发起攻击时,我们手动更改SINK-HOLE掩码为30位,攻击数据流就不会选择原来,从R1到R3再到R4的路径,而是优先选择从R1到R3到SINKHOLE(在R3和SINKHOLE路由器之间放置抗DOS攻击设备),再从SINKHOLE和R4间的TUNNEL到达R4,因为路径选择是根据最长匹配原则进行的.这样就实现了迁引恶意攻击数据流穿过抗DOS攻击设备的目的。通过抗DOS攻击设备的强大的过滤功能进行过滤,同时,采用入侵检测设备进行分析,经过过滤和分析后的正常数据流通过SINK-HOLE和R4之间的TUNNEL到达服务器172.16.1.1,进行正常访问。

ADDN方案分析

优点
不必让运营商在网络设备的配置上做大量更改,就能达到抵抗DOS攻击的目的,GRE通道协议是CISCO提出并通过国际组织IETF批准的标准协议,各个厂家都支持,也不必担心各厂家不同设备间协议兼容问题。
可以通过ADDN网络为城域网上大多数用户提供抗拒绝服务攻击和入侵分析的能力,在一定情况下也可作为对专线用户的提供一种新的增值业务。

目前的缺陷:
需要用手工的方式来进行迁引数据流,而且对于是否是DOS攻击流量的判断,要靠网管人员的经验。如果要实现全自动的方式,需要针对API接口进行软件定制开发,来完成自动阻击的目的。而这些相应的开发工作,我们也正在准备中。

meteorshow
Prolexic也是至于去做的 不过它还做了群集 来增强其服务的优良程度
[url]http://www.prolexic.com/solutions/enterprises/protection/cleanpipe/grph0001.htm[/url]
此外在SCOLD网络中也采用到了类似的技术
不过A2D2的思路也是可以借鉴的,其更多的借助了QoS的特性来实现对ddos的防范
当然前提条件是 “ddos是不可能被彻底根除的”这一观点的绝对正确
呵呵!我做了一个实验环境,验证了A2D2网络对于ddos的防范,测试结果很有效!相对高成本的设备而言,是一个针对中小企业网络/园区网络的解决方案。

benjurry
终于从以前的单纯堵发展到现在的疏导了:)可喜的进步!
记得有人把DDOS叫做洪水攻击,我们不妨先看一个故事(最近比较喜欢看古文故事)
相传在尧舜时期“汤汤洪水方割荡荡怀山襄陵,浩浩滔天”(《书经·尧典》)。尧舜先派共工和崇伯鲧治水。两人采取的是壅堵法,但用简陋的工具堆筑起来的土堤,显然无法阻挡滔滔洪水的无情冲击。九年的心血毁于一旦,治水失败了,鲧也受到严厉处罚。他的儿子禹,受命继续担当治水的重任。禹有父辈的前车之鉴,自然不会重蹈覆辙。他相地度势,细心踏勘,逐渐领悟到水有水性,治水只能因势利导。于是,废壅堵而用疏导,划定区域,标出山河位置,用“准绳”和“规矩”进行测量,制定了“沟洫通川”、“九川通海”的方针。他联合和调动各方面的力量,焚烧山泽,驱逐禽兽,将积水排入江河,最后疏导入海。于是水势平缓,不再泛滥成灾。

尧舜时期的办法就相当于以前我们目前防范DDOS的办法,不管是绿盟的黑洞(其实黑洞这个词还是很有讲究的,我们待会可以仔细分析一下)Toplayer的AM IPS,Radware的Denfense Pro,Big IP等设备用更高的网络带宽、更高的CPU,更高的内存,更高的成本去堵,这种方法其实根本上来说是看谁富,比阔,当然你的对手是不用花这么多钱的,他需要的是更多的肉鸡,一旦对手手中资源多,你就又要摊下了。

其实绿盟提出的方法CISCO已经有比较成熟的解决方案了,(Cisco收购了Riverhead 产品)推出了Cisco Guard XT 5650 ,他配合Cisco XT流量异常检测器,能够自动判断异常流量并通过BGP实现牵引数据流。不过就是目前价钱要比较贵。详细信息可以看elly MM提供的WhitePaper。[url]https://www.xfocus.net/bbs/index.php?act=ST&f=7&t=42353[/url]
也可以参考
[img]http://www.cisco.com/image/jpg/en/us/guest/products/ps5888/c1244/cdccont_0900aecd8011e927_0900aecd8011e927-4.jpg[/img]
但是由于目前绿盟在网络设备方面的研发能力相对较弱,因此要实现自动切换可能会稍微麻烦一点。
而且由于国内还没有保险公司承保和相应的制度,绿盟也无法象Prolexic一样提供明确的SLA服务承诺。所以要实现这个方案,我认为绿盟还是有一定难度,希望绿盟能尽快投入资源:)

刚才想了一下,要做到比较好的防范DDOS,可以采取以下步骤,请各位砸砖:)
1、检测,分析出所以流量中的正常流量和非法流量,这需要很多数学模型和数学方法来做,在绿盟的方案中,需要网管的经验,在Cisco的方案中流量异常检测器 可以做到这个功能。
2、分流,把检测出来的非法流量牵引到“大海”(也可以说是黑洞)中,而把正常访问牵引到目的服务器。
3、追溯,通过路由器之间的协作,追溯攻击来源,以便逐步靠近源头,最好找到攻击源。
4、围剿,对找到攻击源进行清剿工作,停止攻击行为(其中需要人的参与);
5、加固,对于肉鸡,需要相关部门配合,进行加固工作,防止再被利用;
6、抓凶,扬汤止沸不如釜底抽薪,在肉鸡上设置蜜罐,抓捕攻击者。

如果我们的系统能做到前面3部分,其实已经很不错了,从目前的情况来看,Cisco已经在整合前面的3部分功能,结合CISCO的NAC国内,也就完成了4,5。到那时Cisco对DDOS的解决方案近乎是完善的:)钦佩一把先。

其实对付DDOS还有另外一个办法,本来我想在XCON 2004上讲的,由于涉及原公司的商业机密,后来被迫取消了。如果能有比较好的运作也应该是个非常好的办法。其思路也借鉴了中国文化的思想,最后殊途同归,完成和CISCO一样的目的。

附:
黑洞的本意好像应该是吸收一切的物质,所以偶稍微觉得绿盟用这个做其产品名字稍微不太好,毕竟,黑洞这个产品只是堵住了有害的流量,对正常流量还是要放过的:)

refdom
我也来说说,以前发在cnsea论坛上的,主要是将cisco(riverhead)的技术

针对DDOS的问题ip traceback和Mitigation是不一样的,ip traceback主要是进行追踪,因为DDOS主要是spoof,而很难判别到真正的攻击源,而且如果能够很容易找到真正的攻击源,不仅仅对付DDOS,对付其他的攻击也很有帮助,比如法律问题等。而Mitigation是从受害者的角度,因为victim一般是没有能力去调查整个网络,找出source,而且,即便能够找到source,也得有法律或者一些沟通的手段来让source停下来(攻击的source并不是source的攻击者),这种意味着大量的沟通、跨ISP、跨过等类似的非技术问题,所以,通常很难处理。但是从victim的角度来说,必须得有所解决办法,所以就需要Mitigation。

对于Mitigation,其实,技术的根本就是要能从众多的流量中将攻击包和合法包分离出来,把攻击包抛弃掉,让合法包通过就性了。这就是根本,所以实际运用的技术就是要如何尽可能识别出攻击包,而又尽可能小地影响正常包。这又得来分析DDOS(甚至DOS)的方式和原理。基本又下面几种形式:
1、系统漏洞形成的DOS。这种特征固定,检测和防御也容易
2、协议攻击(一些跟系统处理相关,一些跟协议相关)。比如SYN FLOOD,碎片等。特征还好识别,检测和防御相对容易。比如SYN COOKIE、SYN CACHE,碎片可以抛弃。比如land攻击、smurf、teardrop等
3、bandwidth FLOOD。垃圾流量堵塞带宽,特征不好识别,防御不容易
4、基本合法的FLOOD。比3更难了,比如分布的Slashdot 。
实际的DDOS,一般都是多种方式结合的。比如SYNFLOOD,可能同时是bandwidth FLOOD。

影响防御的主要因素就是看特征是否能得到,比如1、2就相对好解决,一些基本不影响的使用的FLOOD,则可以很好被抛弃,比如ICMP FLOOD。但是,攻击发包工具如果将数据包更能伪装成合法包,那么就很难识别出来了。
一般的Mitigation方法也就是:
1、Filter。对于特征明显的,比如一些蠕虫等,在路由器上就可以搞定。当然,过滤是最终解决办法,只要识别出了攻击包,就是要把这些包过滤掉。
2、随机丢包。跟随机算法相关,好的算法可以让合法包受到更小影响
3、SYN COOKIE、SYN CACHE等特定防御办法。针对一些固定的攻击手段来防御和过滤。比如ICMP FLOOD、UDP FLOOD。SYN COOKIE等都是避免spoof问题,至少TCP还有三次握手,所以还好判断SPOOF
4、被动消极忽略。可以说也是一种确认是否被欺骗的办法。一般正常连接失败会重新尝试,但是攻击者一般不会尝试的。所以可以临时抛弃第一次连接请求而接受第二次或者第三次连接请求。
5、主动发送RST。对付SYN FLOOD的,比如一些IDS上。当然,实际不是有效的。
6、统计分析和指纹。这本来是研究的主要内容,但是最后陷入了算法牛角尖,因为主要是一个算法问题。通过统计分析的角度来得到指纹,然后根据指纹来抛弃攻击包,也是一种异常检测的技术。说得很简单,但是要不影响合法包也不容易,不至于变成了随机丢包。(其实当时考虑太过复杂,非得要详细分析出攻击包和合法包,实际不需要,只要过滤掉足够的攻击包,即便让攻击包通过,但只要不造成DOS就可以了。)这也是很多研究者研究的主要课题,目的也就是识别攻击包。

riverhead的核心方案就是检测 Detection、转移 Diversion 和 缓解 Mitigation,也就是检测到攻击,然后将流量转移到他们的产品guard上,然后通过guard进行Mitigation。

它的实现步骤,就是:
因为没有图,所以先定义一下,才能说清楚:
#靠近分布式拒绝服务源头的路由器为 远端路由器
#靠近受害者的路由器为 近端路由器
#Riverhead的Guard设备附属安装的路由器为 附属路由器

防御的步骤
1、首先检测到有DDOS发生,并了解到victim
2、Guard发送BGP通告到远端路由器(在victim的BGP通告设置前缀,并得到比原始BGP通告更高的优先权),表示从远端路由器到victim有新的路由,并且路由到Guard的loopback interface,所有到victim的都经过附属路由器转移到了Guard上
3、Guard检查流量,并且清除其中的攻击流量,然后把安全的流量转发到附属路由器上,在回到victim

其中核心就是Guard,技术就是白皮书中描述的MVP架构(Multi-Verification Process),也就是下面5个层次

·过滤(Filtering) :这个模块包含静态和动态的DDOS过滤。静态过滤,拦截non-essential流量,可以是用户定义的,或者是riverhead默认提供的。动态过滤则基于行为分析和流量的细节分析,通过增加对可疑流量的确认或拦截已经确认的恶意流量,来进行实时更新

·反欺骗(Anti-Spoofing):这个模块验证进入系统的数据包是否被欺骗的。Guard使用了独有的、有专利的源验证机制来避免欺骗。也通过一些机制来确认合法流量,消除合法数据包被抛弃

·异常检测(Anomaly Recognition):该模块监视所有没有被过滤和反欺骗模块抛弃的流量,将流量同平常纪录的基线行为进行比较,发现异常。基本原理就是通过模式匹配,区别来自black-hat和合法通讯之间的不同。该原理用来识别攻击源和类型,而且提出拦截这类流量的指南。
异常检测包括:
·攻击流量速率大小
·包大小和端口的分布
·包到达时间的分布
·并发流量数
·高级协议特征
·出、入的速率

流量分类:
·源IP
·源端口
·目的端口
·协议类型
·连接量(每天、每周)

·协议分析(Protocol Analysis):本模块处理异常检测中发现的可疑的应用方面的攻击,比如http攻击。协议分析也检测一些协议错误行为。

·流量限制(Rate Limiting):主要是处理那些消耗太多资源的源头流量。

所以,实际上最主要的内容就是异常检测中的统计分析,但是从上面看似乎没有多少特别的地方,但是,一定有很好的算法。比如FILTER,实际是对付一些很熟悉的有明显特征的攻击,反欺骗,就是对付syn flood这样的,说不定也是一个syn cookie模块,,但也许有更专利的技术。协议分析其实应该来说就比较弱了,但可以针对一些常见协议中的特定攻击,检测识别一些协议错误行为只是协议校验,这个很简单。流量限制则就是一种随机丢包,最无奈的办法,所以也是最后一个层次了。

页: [1]
© 1999-2008 EvilOctal Security Team