陳石,劉金生
(中國(guó)聯(lián)合網(wǎng)絡(luò)通信有限公司 網(wǎng)絡(luò)運(yùn)維部互聯(lián)網(wǎng)處,北京 100033)
摘要:BGP (Border Gateway Protocol)協(xié)議是Internet中應(yīng)用最廣泛的自治系統(tǒng)間路由協(xié)議,它通過(guò)面向連接的TCP (Transfer Control Protocol)協(xié)議保障路由信息的可靠轉(zhuǎn)發(fā)。然而,以DDoS(Distributed Denial of Service)為代表的網(wǎng)絡(luò)攻擊對(duì)基于TCP 的應(yīng)用協(xié)議產(chǎn)生了嚴(yán)重的威脅。保護(hù)BGP協(xié)議較為常見(jiàn)的方法是在網(wǎng)絡(luò)邊緣添加防火墻、流量分析儀等安全設(shè)備。從分析BGP鄰居的建立過(guò)程及DDoS的攻擊特點(diǎn)入手,提出一種新的思路,在不增加運(yùn)營(yíng)成本的前提下,實(shí)現(xiàn)BGP協(xié)議對(duì)DDoS的防御。
關(guān)鍵詞:BGP鄰居;TCP連接方向;分布式拒絕服務(wù)攻擊; 互聯(lián)網(wǎng)服務(wù)提供商
中圖分類號(hào):TP393文獻(xiàn)標(biāo)識(shí)碼:ADOI: 10.19358/j.issn.16747720.2016.24.002
引用格式:陳石,劉金生. BGP協(xié)議防御DDoS攻擊的方法淺析[J].微型機(jī)與應(yīng)用,2016,35(24):5-7.
0引言
根據(jù)中國(guó)聯(lián)通公眾互聯(lián)網(wǎng)CHINA169的統(tǒng)計(jì),截至2016年5月,Internet上自治系統(tǒng)間路由條目數(shù)已經(jīng)達(dá)到62萬(wàn)條,如此龐大的數(shù)據(jù)信息都是依賴于路由協(xié)議進(jìn)行計(jì)算和轉(zhuǎn)發(fā),而以分布式拒絕服務(wù)攻擊(Distributed Denial of Service,DDoS)為代表的網(wǎng)絡(luò)攻擊卻對(duì)路由協(xié)議的安全產(chǎn)生了嚴(yán)重的威脅。本文提出一種基于TCP連接方向的方法對(duì)抗DDoS攻擊。
1基于TCP的邊界網(wǎng)關(guān)協(xié)議
Internet是由眾多相互聯(lián)在一起的自治系統(tǒng)(Autonomous System,AS)組成的,而負(fù)責(zé)傳遞AS之間網(wǎng)絡(luò)層可達(dá)性信息(Network Layer Reachability Information, NLRI)的協(xié)議稱為BGP(Border Gateway Protocol)。為了確保NLRI的可靠轉(zhuǎn)發(fā),BGP使用TCP協(xié)議作為它的下層承載協(xié)議。
TCP[1] (Transfer Control Protocol)是開(kāi)放系統(tǒng)互聯(lián)(Open System Interconnect, OSI)參考模型中唯一面向連接的傳輸層協(xié)議,它使用“三次握手”機(jī)制建立面向連接的虛電路,每一條TCP連接都被通信鏈路的兩個(gè)端點(diǎn)(IP地址:端口號(hào))唯一確定:TCP連接={(IP1:port1),(IP2:port2)}。BGP對(duì)應(yīng)的port值(端口號(hào))為179。BGP協(xié)議在進(jìn)行路由信息的交換與轉(zhuǎn)發(fā)前,需要建立鄰居(PEER)關(guān)系,BGP建立鄰居的過(guò)程可以分為兩個(gè)階段。
階段一: TCP通道的建立。這個(gè)階段的主要任務(wù)是在希望建立BGP鄰居的路由器之間搭建起一條數(shù)據(jù)通道。TCP的 “按序重傳”和“滑動(dòng)窗口”機(jī)制能夠確保BGP承載的路由信息在互聯(lián)網(wǎng)中可靠地傳輸,而不必進(jìn)行周期性的全部泛洪。
階段二:BGP報(bào)文的協(xié)商。在這個(gè)階段,將要建立BGP鄰居的兩臺(tái)路由器利用TCP的數(shù)據(jù)通道,使用OPEN報(bào)文以單播方式進(jìn)行能力協(xié)商(包括版本號(hào)、保持時(shí)間、BGP標(biāo)識(shí)、可選參數(shù)等),決定最終是否能夠成功建立BGP鄰居關(guān)系。
2防御DDoS攻擊的常用方法
DDoS[2]攻擊是互聯(lián)網(wǎng)上常見(jiàn)的攻擊手段,黑客借助客戶/服務(wù)器技術(shù),將多個(gè)計(jì)算機(jī)聯(lián)合起來(lái)作為攻擊平臺(tái),對(duì)目標(biāo)發(fā)動(dòng)持續(xù)性攻擊,耗盡目的主機(jī)資源,最終使正常的用戶請(qǐng)求得不到應(yīng)答。評(píng)估DDoS的攻擊強(qiáng)度,可以采用“中間網(wǎng)絡(luò)檢測(cè)法[3]”數(shù)學(xué)模型:首先在核心路由器上以Δt為標(biāo)準(zhǔn)時(shí)間間隔對(duì)數(shù)據(jù)流量進(jìn)行采樣,然后分別計(jì)算出(源地址、目的地址、目的端口)相同的數(shù)據(jù)包的集合,得到與以上三元組相同的數(shù)據(jù)包α隨時(shí)間變化的序列。當(dāng)時(shí)間間隔很大時(shí)計(jì)算該序列的自相關(guān)系數(shù):
βk=[∑N=ki=1(ai-)(ai+k-)]/[∑Ni=1(ai-)2]
其中:αi(i=1,2,…,k)為k個(gè)Δt時(shí)間內(nèi)α的序列;為α的數(shù)學(xué)期望;βk為自相關(guān)系數(shù)。如果自相關(guān)系數(shù)不為0,則說(shuō)明發(fā)生了DDoS攻擊,偏離值越高,說(shuō)明遭到的攻擊強(qiáng)度越大,以此判斷是否需要在核心路由器上部署分布式的DDoS防御系統(tǒng)。
理論上說(shuō),所有基于TCP的應(yīng)用都面臨DDoS攻擊的威脅,BGP協(xié)議自然也不例外。開(kāi)啟了BGP協(xié)議的路由器抵御DDoS攻擊的常用手段有:在前端增設(shè)防火墻或流量過(guò)濾與清洗設(shè)備,互聯(lián)地址隱藏(或者直接使用私網(wǎng)地址互聯(lián)),源地址識(shí)別,限制SYN/ICMP流量等。這些方法在實(shí)施過(guò)程中,要么需要增加新的硬件,提高了運(yùn)營(yíng)維護(hù)成本;要么需要在全網(wǎng)部署新的路由協(xié)議和安全策略,擴(kuò)展性較差。
3防御DDoS攻擊的新思路
DDoS攻擊最常用的手段是同步泛洪(SYNFLOOD),向攻擊目標(biāo)發(fā)起大量的同步連接請(qǐng)求,卻不回復(fù)ACK,最終耗盡目標(biāo)服務(wù)器的資源。這種攻擊方式必須有明確的攻擊目標(biāo),也就是說(shuō)攻擊是有方向性的。順著這個(gè)思路,如果能夠在BGP鄰居建立的第一階段控制住TCP連接的建立方向,就可以有效降低有效連接請(qǐng)求的數(shù)量,抑制DDoS對(duì)系統(tǒng)的資源占用,達(dá)到保護(hù)BGP協(xié)議的效果。
如圖1所示,企業(yè)網(wǎng)AS100希望通過(guò)ISP(網(wǎng)絡(luò)服務(wù)提供商)將AS200接入互聯(lián)網(wǎng)。物理層面:邊界路由器A與B通過(guò)一條物理鏈路相連;網(wǎng)絡(luò)層面:A與B使用邏輯接口(環(huán)回口)建立BGP鄰居進(jìn)行路由信息交換。
圖中ISP為避免受到來(lái)自外部的DDoS攻擊,在與企業(yè)網(wǎng)建立BGP鄰居的第一個(gè)階段(即TCP建立階段),拒絕所有始發(fā)于A的外部TCP連接請(qǐng)求,僅允許本地作為發(fā)起端。
那么,這樣做是否會(huì)影響B(tài)GP鄰居的建立呢?如前所述,在建立BGP鄰居的第一個(gè)階段,雙方都會(huì)發(fā)起TCP連接請(qǐng)求,雖然ISP一側(cè)的路由器B拒絕了來(lái)自企業(yè)網(wǎng)路由器A的TCP建立請(qǐng)求,但始發(fā)于B的TCP建立請(qǐng)求并不會(huì)受到任何影響。根據(jù)TCP的建立機(jī)制[4],如果B端的TCP activedelay延時(shí)小于A端,在完成三次握手之后,TCP連接就會(huì)建立成功;若B端的TCP activedelay延時(shí)大于A端,則此次連接建立失敗,但TCP兩端會(huì)重新生成隨機(jī)的activedelay延時(shí)并發(fā)出第二次、第三次……連接請(qǐng)求,一旦B端的activedelay延時(shí)小于A端,TCP連接就會(huì)成功建立,并進(jìn)入到BGP鄰居建立的下一階段。所以控制TCP的連接方向并不會(huì)影響B(tài)GP鄰居的正常建立。
事實(shí)上,不論是否限制TCP的連接方向, BGP鄰居建立完成后,同一對(duì)BGP鄰居之間都只會(huì)保存一條TCP鏈路的連接。
4控制TCP連接方向具體方法
在實(shí)際網(wǎng)絡(luò)環(huán)境中,控制TCP連接方向的方法有三種:
(1)擴(kuò)展型訪問(wèn)控制列表(EACL: Extended Access Control List)
B端配置實(shí)例:
ip accesslist extended 100
deny tcp any any eq bgp
permit ip any any
擴(kuò)展的訪問(wèn)控制列表可以針對(duì)TCP協(xié)議的各種應(yīng)用(端口號(hào))進(jìn)行數(shù)據(jù)包的過(guò)濾,圖1中,在B端的互聯(lián)接口入向應(yīng)用本策略,可以拒絕所有向B端BGP端口發(fā)起的TCP連接,而對(duì)B端出向的TCP連接不做任何限制。
在A端打開(kāi)debug信息,可以看到從A端始發(fā)的TCP連接請(qǐng)求被拒絕(圖2)。最終建立的TCP連接一定是B的隨機(jī)高端口訪問(wèn)A的179端口(圖3),即該連接始發(fā)于B。
擴(kuò)展型訪問(wèn)控制列表具有配置規(guī)范、部署靈活、易于維護(hù)的特點(diǎn),但它對(duì)通過(guò)接口的每一個(gè)數(shù)據(jù)包都要進(jìn)行拆包檢查,當(dāng)一個(gè)EACL中包含的過(guò)濾條目較多時(shí)會(huì)占用大量的CPU資源,甚至?xí)绊懺O(shè)備的轉(zhuǎn)發(fā)性能。因此,這種方法并不適用于中低端的路由器設(shè)備,建議應(yīng)用在具有分布式CPU架構(gòu)的骨干路由器上,例如在電信級(jí)的網(wǎng)絡(luò)環(huán)境(ISP)中部署。
(2)連接模式匹配(connectionmode)
連接模式是BGP協(xié)議內(nèi)置的安全策略,針對(duì)具體的BGP鄰居部署。它分為主動(dòng)和被動(dòng)兩種模式,如果在B端設(shè)置了主動(dòng)模式,則所有從A始發(fā)的TCP連接請(qǐng)求到達(dá)B端時(shí)均被拒絕,這就相當(dāng)于關(guān)閉了B側(cè)的179端口,實(shí)現(xiàn)效果與擴(kuò)展型訪問(wèn)控制列表類似。需要注意的是:兩個(gè)BGP鄰居的連接模式必須主動(dòng)與被動(dòng)匹配,否則TCP連接無(wú)法建立。
B端配置實(shí)例:neighbor 1.1.1.1 transport connectionmode active
A端配置實(shí)例:neighbor 2.2.2.2 transport connectionmode passive
相比EACL的“逢包必檢”,本連接模式只針對(duì)具體的BGP鄰居進(jìn)行限制,對(duì)系統(tǒng)資源的占用要小很多。但在廣播型鏈路或者多宿主的網(wǎng)絡(luò)環(huán)境中,連接模式需要分別對(duì)每個(gè)鄰居開(kāi)啟此功能,部署不夠靈活,建議應(yīng)用在企業(yè)網(wǎng)互聯(lián)或者企業(yè)內(nèi)網(wǎng)Intranet中。
(3)默認(rèn)路由(defaultrouting)
為了更好地理解這種方法,把企業(yè)網(wǎng)AS100想象成一個(gè)末端網(wǎng)絡(luò),路由器A是它唯一的出口網(wǎng)關(guān)。A通過(guò)默認(rèn)路由指向B,而B(niǎo)則通過(guò)一條靜態(tài)路由指向A。
在BGP鄰居建立的第一個(gè)階段,A會(huì)收到告警信息:“Active open failedno route to peer”(即始發(fā)TCP連接失敗,沒(méi)有到達(dá)鄰居的路由),最終建立成功的TCP連接始發(fā)于B端。如此看來(lái),使用默認(rèn)路由同樣可以控制TCP連接方向。
這里需要搞清楚一個(gè)問(wèn)題:A明明有一條指向B的默認(rèn)路由,為什么會(huì)收到無(wú)路由的告警呢?這是因?yàn)槟J(rèn)路由有一個(gè)隱含的防環(huán)機(jī)制:它不能主動(dòng)發(fā)起TCP連接請(qǐng)求;但對(duì)于接收到的TCP連接請(qǐng)求,默認(rèn)路由可以被動(dòng)地響應(yīng),按照三次握手流程返回seq和ack值,完成TCP建立。所以當(dāng)一端使用了默認(rèn)路由時(shí),最終完成的TCP連接一定始發(fā)于配置默認(rèn)路由的另一端。
在實(shí)際網(wǎng)絡(luò)環(huán)境中,ISP往往沒(méi)有能力監(jiān)控從接入端指向自己的是否為一條默認(rèn)路由。因此,依靠對(duì)端的配置來(lái)抵御DDoS的攻擊還是有一定風(fēng)險(xiǎn)的。相對(duì)于生產(chǎn)網(wǎng)絡(luò),這種方法更適用于教學(xué)或?qū)嶒?yàn)的網(wǎng)絡(luò)環(huán)境。
5結(jié)論
與增加防火墻等硬件設(shè)備相比,通過(guò)控制TCP連接的方向來(lái)防御DDoS攻擊,可以不受網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的限制,除了部署靈活以外,還能夠避免增加新的故障點(diǎn),降低了運(yùn)營(yíng)成本,不失為BGP應(yīng)用的一種新的探索與嘗試。
參考文獻(xiàn)
?。?] STEVENS W R. TCP/TP詳解卷1:協(xié)議[M].北京:機(jī)械工業(yè)出版社,2016.
[2] 李鋒.粒子群BP神經(jīng)網(wǎng)絡(luò)在DDoS攻擊檢測(cè)中的應(yīng)用[J].微型機(jī)與應(yīng)用,2014,33(3):5054.
?。?] 孫欽東,張德運(yùn),高鵬.基于時(shí)間序列分析的分布式拒絕服務(wù)攻擊檢測(cè)[J].計(jì)算機(jī)學(xué)報(bào),2005,28(5):767773
?。?] STEWART J. Bgp4: Interdomain routing in the Internet[M].Boston: Addison Wesley,1998.