齊玉東,李程瑜,王曉虹,范趙鵬
(1海軍航空大學, 山東 煙臺 264001; 2.解放軍第107醫(yī)院, 山東 煙臺 264001)
分布式拒絕服務攻擊[1](Distributed Denial of Service Attack)作為一種影響范圍較廣、威脅較大的網(wǎng)絡攻擊行為,對網(wǎng)絡的可用性帶來極大的危害??紤]到DDoS攻擊影響范圍廣,危害性大,有必要采取措施對DDoS攻擊進行防護[2]。為了有效評估DDoS防御措施以防御DDoS攻擊,國內(nèi)外眾多科研人員和機構開展了大量的研究。文獻[3]提出一種應對DDoS攻擊防范機制的評估分類標準,指出在評估防御機制中應用的一些標準參數(shù),但缺乏具體實驗比較。文獻[4]提出DDoS防御機制評估框架,但該方法需要一個嚴格假設才能清楚區(qū)分攻擊包和合法包,在實際的網(wǎng)絡攻防對抗中難以做到。文獻[5]基于OPNET對賽博網(wǎng)絡防御進行建模仿真,搭建典型的DDoS網(wǎng)絡攻防場景,通過仿真結果測試采取的網(wǎng)絡防御措施可以達到的效果,但缺乏對防御措施效果的綜合評估。文獻[6]提出一種基于不完全信息靜態(tài)博弈的DDoS防御措施評估方法,對兩種防御措施進行定量評估,但該評估方法只針對一個評估指標對防御措施進行評估,比較片面。當前DDoS防御措施評估存在的問題主要為:缺乏標準評估數(shù)據(jù)、缺乏綜合多個指標的評估方法等,本文就這兩個問題提出解決方法。
傳統(tǒng)的TOPSIS[7]法通過計算與正負理想解的歐式距離來體現(xiàn)評估方案與正負理想解的相對貼近度,但在多個評估方案中,與正理想解更近的方案或許與負理想解也更近,因而得到的評估結果不能真正的反應待評估方案之間的優(yōu)劣性,這就是使用歐式距離的缺陷。假設有4個待評估方案,每個方案有兩個評估指標x和y,如圖1所示,點A(xa,ya),B(xb,yb),C(xc,yc),D(xd,yd)分別為4個待評估方案的樣本點,E(x+,y+),F(xiàn)(x-,y-)分別為正負理想解點。其中,AB之間的連線和CD之間的連線都與EF之間的連線垂直。
圖1 評估點坐標
為了彌補傳統(tǒng)TOPSIS法中采用歐式距離存在的缺陷,本文采用垂面距離代替歐式距離,通過正交投影法計算垂面距離對評估方案進行優(yōu)劣排序。如圖1所示,以直線EF為法線,分別作過直線AB和直線CD的平面o和p,直線AB和直線CD月法線在各自平面的交點為M和N。評估方案A和B到正理想解的垂面距離為dME,到負理想解的垂面距離為dNF,因此,可以看出A和B到正負理想解的貼近度相同,所以評估方案A和B排序相同,具有同等優(yōu)劣性,同理可得評估方案C和D也具有相同的優(yōu)劣性。因此,采用垂面距離代替歐式距離,解決了傳統(tǒng)TOPSIS法可能會導致待評估方案優(yōu)劣排序模糊不清的缺陷。
1) 構建標準評估矩陣。采用向比重法對指標數(shù)據(jù)進行歸一化處理以消除量綱尺度不同所帶來的影響,公式為
其中xij為第i個評估方案的第j個評估指標值,由此得到標準評估矩陣Y。
Y=[yij]m×n
2) 確定指標權重。本文采用變異系數(shù)法[8]確定指標權重,將評估指標數(shù)據(jù)的變異程度作為權重確定依據(jù)。當指標數(shù)據(jù)變化范圍較大時,說明該指標對防御措施優(yōu)劣排序影響較大,相應其權重也較大,反之則較小,因此變異系數(shù)法賦權具有客觀性和動態(tài)性,其主要步驟為
計算第j個指標的平均值:
計算第j個指標的均方差:
計算第j個指標的變異系數(shù):
計算第j個指標的權重:
3) 評估矩陣加權處理。確定完評估指標權重后對評估矩陣Y進行加權處理,得到加權評估矩陣Z。
Z=[zij]m×n=[yij]m×n·diag(wj)n×n
其中wj表示第j個指標的權重值,所有指標權重值總和為1。
4) 確定正、負理想解。正理想解是假設的最優(yōu)樣本,每項指標都取加權評估矩陣中最優(yōu)值;相反,負理想解是假設的最差樣本,每項指標都取加權評估矩陣中最差值,求解公式如下:
其中J1為效益型指標,J2為成本性指標。
5) 計算垂面距離并排序。為簡便計算,將正理想解平移到坐標原點,得到平移后的評估矩陣R:
R=[rij]m×n
評估方案i到正理想解的垂面距離的計算公式為
di=|(u-v)·(u-Ri)|=|v·Ri|
其中,u、v為平移之后的正負理想型,u為零向量,Ri為平移后評估矩陣R的第i行向量。
計算評估方案與正理想型的垂面距離di后,根據(jù)di大小進行排序,di值越小,表明該方案越接近正理想解,方案越優(yōu),反之越差。
OMNET++[9]作為一款面向對象的網(wǎng)絡離散事件模擬器,提供了一種基于模塊(組件)化的仿真體系結構,定義好的模塊可以重復利用,并以各種方式進行組合,構成所需要的仿真網(wǎng)絡模型。
一個完整地OMNET++模型包括:
1) NED語言拓撲描述(.ned文件)。仿真網(wǎng)絡模型拓撲結構通過NED語言使用參數(shù)、模塊、門等進行描述。
2) 簡單模塊源文件(.h或.cc文件)。簡單模塊作為仿真網(wǎng)絡模型中最基本的活動單元,是由C++編程實現(xiàn),簡單模塊可以通過端口進行連接,構成復合模塊,復合模塊也可通過定義接口模塊調(diào)用不同的簡單模塊。
3) 仿真配置文件(omnetpp.ini)。仿真配置文件中包括仿真模型參數(shù)值以及控制仿真運行參數(shù)值。
本文主要基于OMNET++中的INET框架,對DDoS攻防進行建模,并構建DDoS攻防仿真網(wǎng)絡模型。
在INET框架[10]中,主機模塊通過ITCPApp接口模塊來調(diào)用TCPSessionApp簡單模塊發(fā)送建立TCP連接請求并完成TCP協(xié)議中3次握手的操作[58]。本文在研究過程中在TCPSessionApp簡單模塊的基礎上對其源文件進行改進,并進行重新編譯,開發(fā)出TCPSynFlood簡單模塊。主機模塊通過ITCPApp接口模塊調(diào)用TCPSynFlood簡單模塊時,只向服務器發(fā)送SYN包而不對服務器發(fā)來的SYN+ACK包給予回應。將調(diào)用TCPSynFlood簡單模塊的主機定義為SYN Flood攻擊主機模塊,將調(diào)用TCPSessionApp簡單模塊的主機定義為正常主機模塊。
攻擊模塊TCPSynFlood所對應的TCPSynFlood.h/TCPSynFlood.cc是實現(xiàn)該攻擊模塊的C++源文件。TCPSynFlood攻擊模塊主要實現(xiàn)以下功能:
1) 初始化階段:調(diào)用void TCPSynFloodApp::initialize()函數(shù)對模塊進行初始化,創(chuàng)建多個socket對象,并將socket對象存入socketVector中。
2) 攻擊開始階段:調(diào)用void TCPSynFloodApp::connect()函數(shù)發(fā)送TCP連接請求,此時TCP層會自動發(fā)送SYN包請求建立連接。
3) 攻擊持續(xù)階段:攻擊模塊在接收到服務器端發(fā)送到的SYN+ACK包后不予回應,而是不斷循環(huán)調(diào)用void TCPSynFloodApp::connect()函數(shù)發(fā)送TCP連接請求,直到socketVector中的socket對象都發(fā)生連接請求。
對DDoS攻擊進行防御的手段主要包括對攻擊源頭的治理和對攻擊的流量緩解兩方面。對攻擊源頭進行治理可以采取切斷攻擊源頭的措施,從理論上來說是對抗DDoS攻擊最有效的方法;對服務端進行系統(tǒng)優(yōu)化可以對攻擊流量進行緩解,比如增大TCP連接隊列長度。
在INET框架中,主機模塊通過ITCPApp接口模塊來調(diào)用TCPSinkApp簡單模塊接收TCP連接請求并完成TCP協(xié)議中3次握手的操作,將調(diào)用TCPSinkApp簡單模塊的主機定義為服務端主機模塊。本文分別對阻斷攻擊源頭和增大服務端TCP連接隊列長度兩種防御措施在服務器模塊中進行建模。
服務器模塊在調(diào)用TCPSinkApp簡單模塊接收TCP連接請求之前需要調(diào)用TCP模塊對發(fā)來的SYN包進行監(jiān)聽過濾,TCP模塊又通過調(diào)用TCPConnection::processSegmentInListen()函數(shù)完成這一過程,該函數(shù)在TCPConnectionRcvSegment.cc源文件中進行定義,本文對其進行改進來完成兩種防御措施的建模。
1) 攻擊源黑名單
定義String型變量Client,用來存儲黑名單IP地址,并在接收到SYN包時首先對SYN包源地址進行判斷,若該SYN源地址與黑名單IP地址列表中某地址相匹配,則丟棄該SYN包,同時不會對該源地址發(fā)送SYN+ACK包。
定義bool型變量isblacklist,用來控制攻擊源黑名單功能是否啟用,變量值為true攻擊源黑名單功能啟用,變量值為false。
2) 增加服務器TCP連接隊列長度
增加服務器TCP連接隊列長度連接隊列長度通過修改TCP連接隊列最大長度backlog常量實現(xiàn),在接收到SYN包前首先通過getTcpAppConnMapLen()函數(shù)獲取當前TCP連接隊列長度,并與backlog值進行比較,如果小于backlog值,則接收SYN包,如果大于backlog值,則丟棄該SYN包。
本文建立的DDoS攻防仿真網(wǎng)絡整個網(wǎng)絡拓撲如圖2所示,包括80臺攻擊主機client_ddos,5部路由器router,1臺正常主機client和1臺服務器server。仿真網(wǎng)絡運行時,正常主機會向服務器發(fā)送SYN包請求建立TCP連接并嘗試完成3次握手操作,當TCP連接成功建立后不進行數(shù)據(jù)傳輸,而是直接銷毀該連接;攻擊主機向服務器發(fā)送SYN包且對服務器發(fā)來的SYN+ACK包不予回應,這樣就會占用服務器TCP連接隊列,影響正常主機與服務器之間TCP 3次握手操作。每臺主機等時間間隔發(fā)送20個SYN包請求與服務器建立TCP連接,當所有主機的SYN包處理完畢之后,仿真網(wǎng)絡結束運行。
設置正常主機和攻擊主機向服務器發(fā)送SYN包的時間間隔為100 s,設置服務器TCP連接隊列長度參數(shù)backlog為600。調(diào)整攻擊源黑名單個數(shù)和修改服務器TCP連接隊列長度以實現(xiàn)不同防御措施的部署。
圖2 DDoS攻防仿真網(wǎng)絡拓撲
為評估不同防御措施的優(yōu)劣,本文基于DDoS攻防仿真網(wǎng)絡從正常主機的角度出發(fā)定義了兩個防御措施評估指標。
定義1 正常主機TCP連接成功率
正常主機TCP連接成功率是指一次仿真實驗中正常客戶端主機與服務器端成功建立TCP連接數(shù)與請求的TCP連接數(shù)的比值,公式為
定義2 正常主機TCP連接平均等待時間
正常主機TCP連接平均等待時間是指在一次仿真實驗中正常客戶端主機與服務器端成功建立TCP請求時刻與請求建立TCP連接時刻的平均時間差,公式為
保持服務器TCP連接隊列長度不變,分別將10臺、20臺、30臺攻擊主機加入黑名單攔截地址列表進行仿真,然后保持80臺攻擊主機不變,將TCP連接隊列長度分別增加到700、800進行仿真,分別采集兩個評估指標數(shù)據(jù),得到仿真實驗數(shù)據(jù)如圖3所示。
對仿真數(shù)據(jù)進行歸一化處理得到標準評估矩陣Y:
對歸一化后的數(shù)據(jù)采用變異系數(shù)法求得權重為w=(0.67,0.33),對評估矩陣Y進行加權處理得到帶權評估矩陣Z:
正常主機TCP連接成功率P是收益型指標;正常主機TCP連接平均等待時間T是成本型指標,因此:
正理想型Z+={0.422 3, 0.118 3}
負理想型Z-={0.129 9, 0.187 8}
圖3 仿真實驗數(shù)據(jù)
將正理想解平移到坐標原點,得到平移后的評估矩陣R:
計算每個防御措施到正理想型的垂面距離,進而進行排序,得措施優(yōu)劣排名,如表1所示。
表1 垂面距離di及排名
由表1可知,在5種防御措施中,要優(yōu)先考慮將服務器TCP連接隊列長度增加到800防御措施。
在攻擊源黑名單防御措施中,阻斷30臺攻擊主機防御措施最優(yōu);在增大服務器TCP連接隊列長度防御措施中,將隊列長度增大到800防御措施最優(yōu)。但只比較評估指標仿真數(shù)據(jù),這兩個局部最優(yōu)的防御措施相比各有優(yōu)劣,前者正常主機TCP連接平均等待時間指標更優(yōu),后者正常主機TCP連接成功率指標更優(yōu),但最終評估結果是將隊列長度增大到800防御措施最優(yōu),其主要原因是兩個評估指標的權重不同,本文采用變異系數(shù)法客觀賦權,指標數(shù)據(jù)變化較大的指標權重會較大,正常主機TCP連接成功率指標數(shù)據(jù)變化較明顯,因此其權重較大,在最終評估結果中該指標占決定作用,所以將隊列長度增大到800防御措施是最優(yōu)的,在選擇防御措施時要優(yōu)先考慮。
采用文獻[12]中TOPSIS法計算防御措施與正理想解的相對貼近度,得到的排序結果如表2所示。
表2 相對貼近度Ti及排名
將本文改進的TOPSIS法與文獻[12]中TOPSIS法的評估結果按照下式進行量綱一化比較,比較結果如表3所示。
表3 改進TOPSIS方法與傳統(tǒng)的TOPSIS方法比較
由表3可知,文獻[12-13]TOPSIS法與本文改進的TOPSIS法得到的防御措施優(yōu)劣排序一致,證明改進后的TOPSIS法具有可行性,而且本文改進后的TOPSIS法與文獻[11]中TOPSIS法相比得到的最優(yōu)防御措施和次優(yōu)防御措施之間的評估數(shù)值相差更大,表明本文方法能更明顯的區(qū)分防御措施之間的優(yōu)劣程度,突顯出最佳防御措施的優(yōu)越性。
1) 針對DDoS攻防評估缺乏標準數(shù)據(jù)集和綜合多指標評估方法的問題,本文通過OMNET++仿真軟件對DDoS攻防網(wǎng)絡進行了仿真,采集了原始仿真數(shù)據(jù),保證了評估指標數(shù)據(jù)來源的可靠性。
2) 改進了傳統(tǒng)的TOPSIS法對防御措施進行多指標評估,得出防御措施優(yōu)劣排名以指導防御措施的選取,而且改進后的TOPSIS法與傳統(tǒng)TOPSIS法相比,會更明顯的區(qū)分防御措施之間的優(yōu)劣程度。
3) 下一步研究工作主要是構建多角度多指標的防御措施評估指標體系,使評估更加全面具體,結果更加有說服力;同時從攻防角度出發(fā),引入防御成本概念,針對不同攻擊強度評估出最經(jīng)濟最有效的防御措施。