用CAR(承諾訪問(wèn)速率)來(lái)防止Smurff攻擊 |
發(fā)布時(shí)間: 2012/5/28 19:48:35 |
TCP/IP協(xié)議在設(shè)計(jì)之初,沒(méi)有過(guò)多的考慮安全這一方面,因此許多協(xié)議存在著被黑客利用的弱點(diǎn)。隨著互聯(lián)網(wǎng)絡(luò)急劇的膨脹,這些弱點(diǎn)將對(duì)我們的企業(yè)網(wǎng)絡(luò)構(gòu)成日益嚴(yán)峻的威脅。一個(gè)很好的例子就是TCP協(xié)議,這個(gè)協(xié)議要求在傳輸數(shù)據(jù)之前使用一個(gè)“三次握手”過(guò)程來(lái)建立一個(gè)連接。如下圖所示.
source destination
syn=x
------------>
ack=x+1
<------------
syn=y
ack=y+1
------------>
syn=x+1
source端最初發(fā)送一個(gè)syn=x的報(bào)文,請(qǐng)求建立一個(gè)TCP連接。
destination端以一個(gè)在報(bào)文頭中設(shè)置了ack,syn標(biāo)記的報(bào)文作為響應(yīng)。
ack標(biāo)記是對(duì)source端請(qǐng)求的響應(yīng),syn標(biāo)記指示自身的連接建立請(qǐng)求。
source端通過(guò)向destination端發(fā)送一個(gè)帶ack標(biāo)記的報(bào)文確認(rèn)目的端的連接建立請(qǐng)求。
當(dāng)完成上述“三次握手”之后,source端可以開(kāi)始正式發(fā)送數(shù)據(jù)給destination端。
TCP協(xié)議中的弱點(diǎn)之一是目的端期望源端發(fā)送一個(gè)最后的ack給目的端,完成連接的建立。黑客可以利用這個(gè)弱點(diǎn),通過(guò)偽造一個(gè)虛假的sourceIP地址向一個(gè)目標(biāo)服務(wù)器發(fā)送大量的tcp syn請(qǐng)求報(bào)文,由于source是虛假的,將會(huì)導(dǎo)致destination無(wú)法收到source返回的ack,這種連接類型被稱為半開(kāi)連接(Half-Open Connection)。這樣將導(dǎo)致destination端的資源被大量占用,從而致使目的端為新的服務(wù)拒絕連接,這就是有名的拒絕服務(wù)攻擊(Denial of Service Attack)。
網(wǎng)絡(luò)攻擊的分類:
1.偵測(cè)攻擊
從嚴(yán)格意義上講,偵測(cè)攻擊不能算是真正的攻擊,它主要指黑客利用各種手段對(duì)網(wǎng)絡(luò)中的具體的信息(網(wǎng)絡(luò)拓樸、網(wǎng)絡(luò)內(nèi)的主機(jī)、主機(jī)上開(kāi)啟的服務(wù))進(jìn)行偵測(cè),但是偵測(cè)攻擊往往是真正攻擊的前奏。
2.訪問(wèn)攻擊
在這種攻擊中,黑客企圖獲得對(duì)網(wǎng)絡(luò)和網(wǎng)絡(luò)資源的未經(jīng)授權(quán)的或非法的訪問(wèn),尤其是如file、e-mail、web服務(wù)器這樣的資源。
3.DOS攻擊
使用DOS攻擊,黑客企圖拒絕到特定資源的合法流量和用戶訪問(wèn),或者至少降低對(duì)資源的服務(wù)質(zhì)量。
DOS攻擊除了TCP的half-open connection以外,還有象基于TCP syn、UDP echo、ICMP echo的flood攻擊。
緩解DOS攻擊的方法很多,比如說(shuō)用ACL,URPF等技術(shù)都可以實(shí)現(xiàn),但本專題僅專注于用traffic-police(流量策略)技術(shù)實(shí)現(xiàn)。
traffic-police可以執(zhí)行兩個(gè)基本功能:
1.速率限制
2.流量分類
traffic-police的命令結(jié)構(gòu)如下(在MQC配置模式):
police
?drop—Drops the packet.
?set-prec-transmit
?set-dscp-transmit
?transmit—Sends the packet.
當(dāng)實(shí)施流量策略的時(shí)候,在CISCO路由器內(nèi)部將會(huì)有一套非常復(fù)雜的用來(lái)對(duì)流量傳輸?shù)膶?shí)際速率進(jìn)行評(píng)估的機(jī)制,這是利用被稱為令牌桶(toke-bucket)的機(jī)制來(lái)實(shí)現(xiàn),CISCO設(shè)備支持多種類型的令牌桶,如單桶和雙桶。
單桶的特征如下:
桶的大小就是BC,并且在初始的時(shí)刻桶內(nèi)就裝滿了BC byte的令牌。
在令牌桶的上方,CISCO路由器將以恒定于CIR的速率往桶內(nèi)注入令牌。
在令牌桶的下方,CISCO路由器將會(huì)根據(jù)底層實(shí)際需要傳遞的數(shù)據(jù)包的數(shù)量來(lái)決定需要從令牌桶中流出多少byte的令牌。
因此,不難發(fā)現(xiàn),可能會(huì)出現(xiàn)下列幾種情況:
1) BC桶內(nèi)當(dāng)前令牌數(shù)量>=路由器底層實(shí)際需要傳輸?shù)臄?shù)據(jù)包的數(shù)量
這種情況,將會(huì)觸發(fā)conform-action行為,通常是transmit。表明桶內(nèi)令牌數(shù)量足夠。
2) BC桶內(nèi)當(dāng)前令牌數(shù)量<路由器底層實(shí)際需要傳輸?shù)臄?shù)據(jù)包的數(shù)量
這種情況,將會(huì)觸發(fā)exceed-action行為,通常是drop。表明桶內(nèi)令牌數(shù)量不夠。
雙桶特征如下:
第一個(gè)桶的大小就是BC,并且在初始的時(shí)刻桶內(nèi)就裝滿了BC byte的令牌。
第二個(gè)桶的大小就是BE,并且也是在初始的時(shí)刻桶內(nèi)就裝滿了BE byte的令牌。
這兩個(gè)桶之間的關(guān)聯(lián)是:如果新注入的令牌將BC桶裝滿,那么富裕的令牌將從BC桶注入進(jìn)BE桶。
在Bc桶的上方,CISCO路由器將以恒定于CIR的速率往bc桶內(nèi)注入令牌。
在每個(gè)桶的下方,CISCO路由器將會(huì)根據(jù)底層實(shí)際需要傳遞的數(shù)據(jù)包的數(shù)量來(lái)決定需要從令牌桶中流出多少byte的令牌。
因此,不難發(fā)現(xiàn),可能會(huì)出現(xiàn)下列幾種情況:
1) BC桶內(nèi)當(dāng)前令牌數(shù)量>=路由器底層實(shí)際需要傳輸?shù)臄?shù)據(jù)包的數(shù)量
這種情況,將會(huì)觸發(fā)conform-action行為,表明BC桶內(nèi)令牌數(shù)量足夠。
2) BC桶內(nèi)當(dāng)前令牌數(shù)量<路由器底層實(shí)際需要傳輸?shù)臄?shù)據(jù)包的數(shù)量
這種情況,將會(huì)觸發(fā)exceed-action行為,表明BC桶內(nèi)令牌數(shù)量不夠,但是BE桶內(nèi)令牌數(shù)量足夠。
3) BE桶內(nèi)婁前令牌數(shù)量<路由器底層實(shí)際需要傳輸?shù)臄?shù)據(jù)包的數(shù)量,將會(huì)觸發(fā)violate-action行為,表明BC和BE每個(gè)桶都不夠。
接下來(lái),我們將用兩個(gè)具體的實(shí)例來(lái)說(shuō)明CAR的工作原理。
實(shí)例1:
在這個(gè)例子中,traffic policing被配置為CIR 8000bit/s , BC被配置為1000byte,
初始到達(dá)一個(gè)450字節(jié)的數(shù)據(jù)包,0.25秒之后,到達(dá)一個(gè)900字節(jié)的數(shù)據(jù)包。
police被關(guān)聯(lián)在fa0/0的output方向。
Router(config)# class-map access-match
Router(config-cmap)# match access-group 1
Router(config-cmap)# exit
Router(config)# policy-map police-setting
Router(config-pmap)# class access-match
Router(config-pmap-c)# police 8000 1000 conform-action transmit exceed-action drop
Router(config-pmap-c)# exit
Router(config-pmap)# exit
Router(config)# interface fastethernet 0/0
Router(config-if)# service-policy output police-setting
在這個(gè)例子中,初始的token buckets中裝滿1000byte的tokens,如果在初始階段到達(dá)450字節(jié)的數(shù)據(jù)包,那么需要從token bucket中流出450字節(jié)的tokens, 此時(shí),token buckets中剩余(1000-450)byte=550字節(jié)的tokens,token bucket中的token數(shù)量有富裕,將觸發(fā)comform-action行為,450字節(jié)的數(shù)據(jù)包將被transmit。0.25秒之后,一個(gè)800字節(jié)的數(shù)據(jù)包到達(dá),在0.25秒的時(shí)間間隔之內(nèi),token buckets中將注入(8000bps/8)*0.25s=250字節(jié)的tokens,此時(shí),token buckets中共剩余(550+250)byte=800字節(jié)的tokens, 由于到達(dá)的數(shù)據(jù)包的大小為900字節(jié),需要從token buckets中流出相應(yīng)字節(jié)的token數(shù),而此時(shí),token buckets中的token數(shù)量不夠,將會(huì)觸發(fā)exceed-action行為,此900字節(jié)大小的數(shù)據(jù)包將被drop。
重要結(jié)論:通過(guò)以上分析,我們不難發(fā)現(xiàn),數(shù)據(jù)包被傳輸還是被丟棄,實(shí)際上不僅僅取決于數(shù)據(jù)包自身的大小,還取決于兩個(gè)連續(xù)數(shù)據(jù)包之間的時(shí)間間隔。
實(shí)例2:
在這個(gè)例子中,traffic policing被配置為CIR 8000bit/s , BC被配置為1000bytes,BE被配置為1000bytes。
初始到達(dá)一個(gè)450字節(jié)的數(shù)據(jù)包,0.25秒之后,到達(dá)一個(gè)900字節(jié)的數(shù)據(jù)包。
0.4秒之后,到達(dá)一個(gè)1000字節(jié)的數(shù)據(jù)包,0.2秒之后,到達(dá)一個(gè)400字節(jié)的數(shù)據(jù)包。
police被關(guān)聯(lián)在fa0/0的output方向。
Router(config)# class-map access-match
Router(config-cmap)# match access-group 1
Router(config-cmap)# exit
Router(config)# policy-map police-setting
Router(config-pmap)# class access-match
Router(config-pmap-c)# police 8000 1000 1000 conform-action transmit exceed-action set-prec-transmit 1 violate-action drop
Router(config-pmap-c)# exit
Router(config-pmap)# exit
Router(config)# interface fastethernet 0/0
Router(config-if)# service-policy output police-setting
在這個(gè)例子中,初始的token buckets中裝滿1000byte的token,如果在初始階段到達(dá)450字節(jié)的數(shù)據(jù)包,那么需要從token bucket中流出450字節(jié)的tokens, 此時(shí),token buckets中剩余(1000-450)byte=550字節(jié)的token,token bucket中的token數(shù)量有富裕,將觸發(fā)comform-action行為,450字節(jié)的數(shù)據(jù)包將被transmit。0.25秒之后,一個(gè)800字節(jié)的數(shù)據(jù)包到達(dá),在0.25秒的時(shí)間間隔之內(nèi),token buckets中將注入(8000bps/8)*0.25s=250字節(jié)的token,此時(shí),token buckets中共剩余(550+250)byte=800字節(jié)的token , 由于到達(dá)的數(shù)據(jù)包的大小為900字節(jié),需要從token buckets中流出相應(yīng)字節(jié)的token數(shù),而此時(shí),BC桶中的token只有800字節(jié),數(shù)量不夠,但是BE桶中有1000字節(jié),路由器會(huì)直接向BE桶借900字節(jié)的token,此時(shí),BC桶中token數(shù)量不夠,但是BE桶中token數(shù)量足夠,將觸發(fā)exceed-action行為,900字節(jié)的數(shù)據(jù)包將會(huì)被set-prec-transmit 1。900字節(jié)的數(shù)據(jù)包被處理完成之后,BC桶中剩余800字節(jié)的tokens,BE桶中剩余100字節(jié)的tokens。0.4秒之后又到達(dá)一個(gè)1000字節(jié)大小的數(shù)據(jù)包,在這0.4秒之內(nèi),BC桶中將被新注入(8000bps/8*0.4)=400bytes的token,BC桶現(xiàn)在800字節(jié)的token,BC桶最多只能容納1000字節(jié)的token,故路由器先將BC桶注滿(增加200bytes的tokens,BC桶此時(shí)共1000字節(jié)的tokens),多余的200字節(jié)的tokens將被注入進(jìn)BE桶(增加200bytes的tokens,BE桶共300字節(jié)的tokens)。當(dāng)把1000字節(jié)的數(shù)據(jù)包傳遞之后,BC桶中的剩余的tokens數(shù)量剛好為0,BE桶中的token數(shù)量保持不變(300字節(jié)),將會(huì)觸發(fā)conform-action行為,此數(shù)據(jù)包將被transmit。0.2秒之后又到達(dá)一個(gè)400字節(jié)的數(shù)據(jù)包,在這0.2秒之內(nèi),BC桶中將新注入(8000bps/8*0.2)=200bytes的tokens,此時(shí)BC桶中總的tokens數(shù)量為200bytes的tokens,BE桶中共有300bytes的tokens,需要傳遞的數(shù)據(jù)包為400字節(jié),BC桶、BE桶中的tokens數(shù)量都不夠,此時(shí),將會(huì)觸發(fā)violate-action行為,此數(shù)據(jù)包將被drop。
在深入理解了Traffic-Police的工作原理之后,接下來(lái)我們講述一個(gè)利用此技術(shù)緩解smurf攻擊的實(shí)例。
smurf攻擊的工作原理:
Internet中有兩臺(tái)真實(shí)PC,一臺(tái)H11的IP地址為1.1.1.1,另一臺(tái)H33的IP地址為3.3.3.3,R1后方的ethernet網(wǎng)絡(luò)內(nèi)有一個(gè)以太網(wǎng)段192.168.20.0/24,假設(shè)主機(jī)H11是一個(gè)攻擊者,它發(fā)起一個(gè)到子網(wǎng)192.168.20.0的ICMP echo廣播報(bào)文,報(bào)文的源IP地址被偽造成他想要攻擊的PC H33的IP地址3.3.3.3,目的地址為192.168.20.255(子網(wǎng)廣播地址),當(dāng)R1后方網(wǎng)段內(nèi)的每臺(tái)主機(jī)收到此廣播報(bào)文后,都將作出相同的響應(yīng):返回單播報(bào)文,此報(bào)文的目的地址為3.3.3.3(此時(shí),R1后方的ethernet網(wǎng)絡(luò)被攻擊者利用,成為一個(gè)攻擊的放大器)。這樣真實(shí)主機(jī)H33將收到192.168.20.0/24網(wǎng)段內(nèi)所有主機(jī)的ICMP echo-reply的洪泛,最終主機(jī)H33的系統(tǒng)資源將被耗盡。
理解了smurf攻擊的工作原理之后,我們可以用traffic-police減緩smurf攻擊。
下面的示例給出了路由器R1上的配置:
Router1(config)# access-list 101 permit icmp any any echo
Router1(config)# class-map DOS
Router1(config-cmap)# match access-group 101
Router1(config-cmap)# exit
Router1(config)# policy-map DENY_DOS
Router1(config-pmap)# class DOS
Router1(config-pmap-c)# police 25600 8000 conform-action transmit exceed-action drop
Router1(config-pmap-c)# exit
Router1(config-pmap)# exit
Router1(config)# interface serial 0/0
Router1(config-if)# service-policy input DENY_DOS
億恩科技地址(ADD):鄭州市黃河路129號(hào)天一大廈608室 郵編(ZIP):450008 傳真(FAX):0371-60123888
聯(lián)系:億恩小凡 QQ:89317007 電話:0371-63322206 本文出自:億恩科技【1tcdy.com】 服務(wù)器租用/服務(wù)器托管中國(guó)五強(qiáng)!虛擬主機(jī)域名注冊(cè)頂級(jí)提供商!15年品質(zhì)保障!--億恩科技[ENKJ.COM] |