TA的每日心情 | 开心 2024-10-21 14:10 |
---|
签到天数: 882 天 [LV.10]以坛为家III
|
7楼

楼主 |
发表于 2008-1-27 00:26:08
|
只看该作者
<strong>数据包标记</strong>
<br/>这种技术构想(因为现在没有实用)就是要在现有协议的基础上进行修改,而且修改很小,不象iTrace的想法,个人认为比iTrace更好一些。这种追踪技术有很多细节研究,形成多种标记算法,但是最好的还是经过压缩的边缘取样算法。 <br/>这种技术原理就是修改IP头中,重载其中的identification域。也就是如果没有使用到identification域的话,将这个域定义为标记。 <br/>将16bit的idnetification分成:3bit的offset(可允许8次分片),5bit的distance,以及8bit的边缘分片。5bit的distance可以允许31级路由,这对于目前的网络来说已经足够了。 <br/>标记和重构路径的算法是: <table class="t_table" width="400" align="center"><tbody><tr><td>Marking procedure at router R: <br/><br/>let R' = BitIntereave(R, Hash(R)) <br/><br/>let k be the number of none-overlappling fragments in R' <br/><br/>for each packet w <br/><br/>let x be a random number from [0..1) <br/><br/>if x< then <br/>let o be a random integer from [0..k-1] <br/><br/>let f be the fragment of R' at offset o <br/><br/>write f into w.frag <br/><br/>write 0 into w.distance <br/><br/>wirte o into w.offset <br/><br/>else <br/><br/>if w.distance=0 then <br/><br/>let f be the fragment of R' at offset w.offset <br/><br/>write f?w.frag into w.frag <br/><br/>increment w.distance Path reconstruction procedure at victim v: let FragTbl be a table of tuples(frag,offset,distance) <br/><br/>let G be a tree with root v <br/><br/>let edges in G be tuples(start,end,distance) <br/><br/>let maxd:=0 <br/><br/>let last:=v <br/><br/>for each packet w from attacker <br/><br/>FragTbl.Insert(w.frag,w.offset,w.distance) <br/><br/>if w.distance>maxd then <br/><br/>maxd:=w.distance <br/><br/>for d:=0 to maxd <br/><br/>for all ordered combinations of fragments at distance d <br/><br/>construct edge z <br/><br/>if d!=0 then <br/><br/>z:= z?last <br/><br/>if Hash(EvenBits(z))=OddBits(z) then <br/><br/>insert edge(z,EvenBits(z),d) into G <br/><br/>last:=EvenBits(z); <br/><br/>remove any edge(x,y,d) with d!=distance from x to v in G <br/><br/>extract path(Ri..Rj) by enumerating acyclic paths in G </td></tr></tbody></table>实验室情况下这种标记技术只需要victim能够抓到1000到2500个包就能够重构整个路径了,应该说结果是很好的,但是没有投入到实用中,主要是需要路由器厂商和ISP支持。 <br/>差不多ip traceback的已经实用的技术和实验室技术,或者已经死掉的,就主要是这些,虽然还有其他的一些。<br/>已经很长时间没有搞DDOS防范这一块了,国内也有黑洞这样的产品,以前也了解一些国外的,比如floodguard、toplayer、radware等。受securitytest提示,又了解到riverhead的,我就立刻看了看他们的白皮书。 <br/>因为前面bigfoot提出的主要是ip traceback的题目,securitytest也又到防御的问题。针对DDOS的问题ip traceback和Mitigation是不一样的,ip traceback主要是进行追踪,因为DDOS主要是spoof,而很难判别到真正的攻击源,而且如果能够很容易找到真正的攻击源,不仅仅对付DDOS,对付其他的攻击也很有帮助,比如法律问题等。而Mitigation是从受害者的角度,因为victim一般是没有能力去调查整个网络,找出source,而且,即便能够找到source,也得有法律或者一些沟通的手段来让source停下来(攻击的source并不是source的攻击者),这种意味着大量的沟通、跨ISP、跨过等类似的非技术问题,所以,通常很难处理。但是从victim的角度来说,必须得有所解决办法,所以就需要Mitigation。 <br/>这又正好是我以前研究的范围,所以,又会说出一大堆。对于Mitigation,其实,技术的根本就是要能从众多的流量中将攻击包和合法包分离出来,把攻击包抛弃掉,让合法包通过就性了。这就是根本,所以实际运用的技术就是要如何尽可能识别出攻击包,而又尽可能小地影响正常包。这又得来分析DDOS(甚至DOS)的方式和原理。基本又下面几种形式: <br/>1、系统漏洞形成的DOS。这种特征固定,检测和防御也容易 <br/><br/>2、协议攻击(一些跟系统处理相关,一些跟协议相关)。比如SYN FLOOD,碎片等。特征还好识别,检测和防御相对容易。比如SYN COOKIE、SYN CACHE,碎片可以抛弃。比如land攻击、smurf、teardrop等 <br/><br/>3、bandwidth FLOOD。垃圾流量堵塞带宽,特征不好识别,防御不容易 <br/><br/>4、基本合法的FLOOD。比3更难了,比如分布的Slashdot 。 <br/><br/>实际的DDOS,一般都是多种方式结合的。比如SYNFLOOD,可能同时是bandwidth FLOOD。 <br/>影响防御的主要因素就是看特征是否能得到,比如1、2就相对好解决,一些基本不影响的使用的FLOOD,则可以很好被抛弃,比如ICMP FLOOD。但是,攻击发包工具如果将数据包更能伪装成合法包,那么就很难识别出来了。 <br/><br/>一般的Mitigation方法也就是: <br/>1、Filter。对于特征明显的,比如一些蠕虫等,在路由器上就可以搞定。当然,过滤是最终解决办法,只要识别出了攻击包,就是要把这些包过滤掉。 <br/><br/>2、随机丢包。跟随机算法相关,好的算法可以让合法包受到更小影响 <br/><br/>3、SYN COOKIE、SYN CACHE等特定防御办法。针对一些固定的攻击手段来防御和过滤。比如ICMP FLOOD、UDP FLOOD。SYN COOKIE等都是避免spoof问题,至少TCP还有三次握手,所以还好判断SPOOF <br/><br/>4、被动消极忽略。可以说也是一种确认是否被欺骗的办法。一般正常连接失败会重新尝试,但是攻击者一般不会尝试的。所以可以临时抛弃第一次连接请求而接受第二次或者第三次连接请求。 <br/><br/>5、主动发送RST。对付SYN FLOOD的,比如一些IDS上。当然,实际不 |
|