姚 剛 陳青華 喬勇軍
(海軍航空工程大學(xué)岸防兵學(xué)院 煙臺 264001)
隨著網(wǎng)絡(luò)技術(shù)和互聯(lián)網(wǎng)經(jīng)濟(jì)的發(fā)展,網(wǎng)絡(luò)服務(wù)已經(jīng)滲透到社會生產(chǎn)、生活的各個方面,承載著眾多重要業(yè)務(wù)和產(chǎn)業(yè)信息,因此一旦因惡意攻擊導(dǎo)致網(wǎng)絡(luò)擁塞阻斷、機密數(shù)據(jù)丟失,則會導(dǎo)致巨大經(jīng)濟(jì)損失,甚至對國家網(wǎng)絡(luò)信息安全造成巨大威脅。軟件定義網(wǎng)絡(luò)(SDN)正在成為一個克服傳統(tǒng)網(wǎng)絡(luò)的局限性有吸引力的方案,它實現(xiàn)了網(wǎng)絡(luò)可編程管理,為集中化、精準(zhǔn)化地控制網(wǎng)絡(luò)提供了方便。并促進(jìn)網(wǎng)絡(luò)在協(xié)議設(shè)計、網(wǎng)絡(luò)管理和網(wǎng)絡(luò)安全方面快速創(chuàng)新,提供了一種獨特的方法來解決傳統(tǒng)網(wǎng)絡(luò)中存在的安全問題。
傳統(tǒng)的ARP 綁定技術(shù),通過關(guān)閉交換機的自動更新功能來實現(xiàn)。通過該機制可以防止合法的ARP表項被欺騙報文篡改,從而可以避免交換機遭受ARP 綁定和攻擊。但是,上述ARP 綁定策略由于是本地的,需要在每臺交換機上關(guān)閉交換機的自動更新功能。如果欺騙ARP 報文被交換機先學(xué)習(xí)到,反而正常的ARP 表項無法被正常學(xué)習(xí)到,存在很大的弊端。如果整個網(wǎng)絡(luò)非常龐大和復(fù)雜,整個配置工作將會非常繁瑣和配置過程容易出錯。
SDN 的出現(xiàn)解決了這些問題,它具有全局視角,管理者能夠通過快速且高水平地查看網(wǎng)絡(luò)的所有區(qū)域以及修改網(wǎng)絡(luò)來改變規(guī)則,進(jìn)而快速限制以及從中央視角查看網(wǎng)絡(luò)內(nèi)部的威脅,可以有效地作出更改可以全面分析網(wǎng)絡(luò)中的流量狀況,SDN的出現(xiàn)為ARP 欺騙攻擊提出了一種新的解決思路。針對上述問題,提出了一種在SDN 中解決ARP 欺騙攻擊的方案。
通過對ARP 欺騙攻擊特性的分析,我們團(tuán)隊選擇SDN 作為網(wǎng)絡(luò)架構(gòu),設(shè)計了防ARP 欺騙攻擊的方案。
1)ARP欺騙攻擊的基本形式
(1)中間人攻擊
中間人攻擊是最典型的攻擊之一,受到黑客的中間人攻擊,可能會嚴(yán)重危害服務(wù)器和用戶。中間人攻擊就是攻擊者扮演中間人并且實施攻擊。它有時被稱為 monkey-in-the-middle 攻擊或man-in-the-mobile 攻擊,是網(wǎng)絡(luò)監(jiān)聽的一種方式。攻擊者進(jìn)入兩臺通信的計算機之間,這樣他就可以完成網(wǎng)絡(luò)數(shù)據(jù)包(以太網(wǎng)數(shù)據(jù)包)嗅探和分析,中間人計算機將在兩臺互相通信的目的主機之間轉(zhuǎn)發(fā)數(shù)據(jù)包,而兩臺目的主機對此毫無察覺。中間人攻擊方式不僅對計算機有效,還可以擴(kuò)展到路由器和網(wǎng)關(guān)設(shè)備,從而在路由器與主機之間使用中間人攻擊,攻擊示意圖如圖1。

圖1 中間人攻擊示意圖
(2)克隆攻擊
克隆攻擊是另外一種ARP 欺騙的方式。現(xiàn)在我們已經(jīng)可以通過硬件或軟件工具來修改網(wǎng)絡(luò)接口的MAC 地址,Linux用戶甚至只需要用ifconfig命令修改一個參數(shù)就能修改網(wǎng)絡(luò)接口的MAC 地址。攻擊者通過拒絕服務(wù)攻擊使目標(biāo)主機與外界失去聯(lián)系,然后攻擊者將自己的IP 和MAC 地址改成目標(biāo)機的IP 和MAC 地址,這樣攻擊者的主機就成為和目標(biāo)機一樣的副本。
2)SDN技術(shù)
SDN技術(shù)作為一種新型的網(wǎng)絡(luò)管理方式,其最大的特點在于具有松耦合的控制平面與數(shù)據(jù)平面、支持集中化的網(wǎng)絡(luò)狀態(tài)控制、實現(xiàn)底層網(wǎng)絡(luò)設(shè)施對上層應(yīng)用的透明。SDN 改變了網(wǎng)絡(luò)的組織和管理模式,通過開放的接口和標(biāo)準(zhǔn)的南北向協(xié)議,使得底層網(wǎng)絡(luò)不再依賴于具體的硬件和嵌入式網(wǎng)絡(luò)操作系統(tǒng),邏輯拓?fù)浜土髁空{(diào)度不再受限于物理連接方式,取而代之的是以靈活高效的軟件編程方式實現(xiàn)底層網(wǎng)絡(luò)的配置。網(wǎng)絡(luò)數(shù)據(jù)層面由通用的硬件來實現(xiàn),而網(wǎng)絡(luò)的控制層面由獨立的軟件來實現(xiàn),網(wǎng)絡(luò)設(shè)備與控制軟件之間的通信也可以由程序?qū)崿F(xiàn)。通過控制軟件的集中化控制,SDN能夠可從一個單一的邏輯點獲得全網(wǎng)控制權(quán),有效地解決當(dāng)前網(wǎng)絡(luò)組網(wǎng)靈活性差、全局性流量工程和鏈路調(diào)度的優(yōu)化、網(wǎng)絡(luò)設(shè)備配置復(fù)雜且各不兼容等問題。也方便從宏觀角度配置網(wǎng)絡(luò)傳輸帶寬等資源,提高網(wǎng)絡(luò)資源的利用率。SDN帶有全局網(wǎng)絡(luò)的視圖,管理者能夠通過快速且高水平地查看網(wǎng)絡(luò)的所有區(qū)域,用SDN 架構(gòu)來解決ARP 欺騙攻擊,可以為復(fù)雜的環(huán)境提供更高級的網(wǎng)絡(luò)監(jiān)控,在受到攻擊時進(jìn)行檢測并對其快速響應(yīng)。
本設(shè)計方案是在SDN 環(huán)境下實現(xiàn)對ARP 攻擊的防御系統(tǒng),主要分為四個部分,分別為基礎(chǔ)設(shè)備層、網(wǎng)絡(luò)控制層、ARP 防御層、接口層,如下圖所示。
基礎(chǔ)設(shè)備層是基本的網(wǎng)絡(luò)基礎(chǔ)設(shè)施,包括主機、支持OpenFlow協(xié)議的交換機等。
網(wǎng)絡(luò)控制層包括ARP 協(xié)議分析管理模塊,網(wǎng)絡(luò)拓?fù)浣Y(jié)構(gòu)的管理,網(wǎng)絡(luò)流量的統(tǒng)計管理等。ARP防御層主要完成了對ARP 欺騙攻擊的防御,主要模塊包括ARP 報文處理模塊、ARP 攻擊檢測模塊和ARP攻擊阻止模塊。

圖2 整體方案
ARP報文處理模塊:對網(wǎng)絡(luò)中所經(jīng)過的數(shù)據(jù)包進(jìn)行欺騙報文的過濾,以便后續(xù)模塊的處理;ARP攻擊檢測模塊:在ARP 報文處理模塊的基礎(chǔ)上,對欺騙報文進(jìn)行檢測,判斷其為中間人攻擊還是克隆攻擊;
ARP攻擊阻止模塊:在欺騙報文處理和檢測的基礎(chǔ)上,對接收的報文采取防御措施,阻止其對網(wǎng)絡(luò)造成進(jìn)一步的危害。
接口層為網(wǎng)絡(luò)流量的實時顯示和智能提醒提供接口。
1)ARP防御流程框圖
利用控制器的全局視角,構(gòu)造整個ARP 防御的流程,具體流程圖如圖3所示。

圖3 ARP防御基本流程圖
2)ARP防御規(guī)則
要阻止ARP 的攻擊重點在“防”上,本作品從ARP 的代理機制入手,制定安全策略,預(yù)防ARP 攻擊的發(fā)生。在ARP 防御層中,通過設(shè)定網(wǎng)絡(luò)中主機的更新規(guī)則和ARP 報文的轉(zhuǎn)發(fā)規(guī)則來保證網(wǎng)絡(luò)中ARP 協(xié)議的正常運行,并起到防御ARP 攻擊的作用。
(1)主機更新機制
在SDN 網(wǎng)絡(luò)中,Open Flow 交換機會將接收到數(shù)據(jù)包與轉(zhuǎn)發(fā)表中的流條進(jìn)行匹配。當(dāng)匹配到流表項后,就去執(zhí)行條流表項所規(guī)定的指令,然后要么直接轉(zhuǎn)發(fā)出去或者丟棄;若沒有匹配項,則會默認(rèn)封裝成Packet-in 消息轉(zhuǎn)發(fā)給控制器。在實際情形下,每條流的第一個數(shù)據(jù)包都會被轉(zhuǎn)發(fā)至控制器處理,該特性被用來進(jìn)行主機信息注冊和更新。無論終端設(shè)備采用何種方式(動態(tài)主機配置協(xié)議或靜態(tài)配置)接入網(wǎng)絡(luò),只要發(fā)生通信,就會向控制器發(fā)送消息。
當(dāng)控制器接收到Packet-in 消息,對控制器編程實現(xiàn)提取主機的相關(guān)信息,包括MAC 地址、IP 地址、所連交換機識別號(dpid)和端口號(port),以及接收該消息的時間,并以條目的方式存儲在控制器中,每個條目的有效時間設(shè)置為(t時間t 可根據(jù)網(wǎng)絡(luò)的具體情況進(jìn)行設(shè)定,本作品將t 設(shè)定為2s),同時提供主機MAC 地址、IP 地址以及接入點位置為鍵值的多種索引形式。當(dāng)主機IP 地址、MAC 地址變更或退出網(wǎng)絡(luò)時,自動更新主機列表,為ARP 防御機制提供基礎(chǔ)。
(2)ARP報文轉(zhuǎn)發(fā)規(guī)則
①請求報文
當(dāng)控制器收到Packet-in 消息后解析提取請求的主機IP 地址,并以該IP 地址為鍵值查詢主機信息表,若該主機信息存在且在有效時間范圍內(nèi),則根據(jù)查詢到的MAC 地址生成ARP 應(yīng)答報文作為Packet-out 消息的載荷經(jīng)原路返回轉(zhuǎn)發(fā)給源主機。若主機信息條目存在,但不在有效時間t范圍內(nèi),則將該ARP 請求通過Packet-out 消息轉(zhuǎn)發(fā)至查詢到的主機接入點,源主機是否會收到ARP 應(yīng)答依賴于目的主機是否仍在網(wǎng)絡(luò)中;同時將該主機信息條目標(biāo)記為無效狀態(tài),若在規(guī)定時間(如2s)內(nèi)沒有進(jìn)行狀態(tài)更新則刪除。若主機信息不存在,則可以選擇通過Packet-out 消息將該ARP 請求廣播給網(wǎng)絡(luò)中所有主機。請求報文的處理流程圖如圖4 所示。

圖4 請求報文處理流程圖
②應(yīng)答報文
對于應(yīng)答報文,先判斷在規(guī)定的時間內(nèi)是否有請求,再進(jìn)行響應(yīng)。如果有請求,則是一個正常的ARP應(yīng)答報文。如果沒有請求而收到了響應(yīng)報文,控制器不進(jìn)行轉(zhuǎn)發(fā),如果在時間t內(nèi),監(jiān)測應(yīng)答報文的數(shù)量,如果超過規(guī)定數(shù)目,則可以判斷該主機存在ARP 攻擊的可能,及時提醒網(wǎng)管人員,并在一定時間內(nèi)屏蔽該主機的ARP 應(yīng)答報文。應(yīng)答報文處理流程圖如圖5所示。

圖5 應(yīng)答報文處理流程圖
在系統(tǒng)仿真模擬時,需要一臺虛擬機(操作系統(tǒng)采用Ubuntu,英特爾i7 處理器,主頻2.4 GHz,內(nèi)存4 GB)運行SDN控制器和網(wǎng)絡(luò)模擬平臺。
SDN 控制器采用Ryu 開源控制器,利用了Open vSwitch 交換機,運用Mininet網(wǎng)絡(luò)仿真器構(gòu)建模擬平臺,利用OpenFlow1.3 協(xié)議完成控制器和交換機之間的通信,選擇的編程語言為Python。SDN環(huán)境圖如圖6所示。

圖6 SDN環(huán)境圖
SDN 的核心思想為數(shù)據(jù)平面與控制平面相分離,本作品吸收并利用這一思想,將網(wǎng)絡(luò)拓?fù)浼稍跀?shù)據(jù)平面,Ryu 從其中獨立出來存在于控制平面,由此構(gòu)成整體系統(tǒng)架構(gòu),本組為系統(tǒng)設(shè)計架構(gòu)如圖7所示。

圖7 系統(tǒng)整體架構(gòu)
為了驗證方法的正確性,在模擬環(huán)境搭建完成后,選用Linux 下的嗅探工具dsniff 中的arpspoof 命令產(chǎn)生ARP 欺騙攻擊,從而在網(wǎng)絡(luò)中不斷產(chǎn)生錯誤的應(yīng)答報文,讓網(wǎng)絡(luò)的流量增大,并且改變主機的緩存列表,從而達(dá)到欺騙攻擊的目的。
在模擬環(huán)境中執(zhí)行測試,評估防ARP 欺騙攻擊系統(tǒng)的ARP 正常響應(yīng)時間、攻擊響應(yīng)時間、阻止ARP 攻擊時間。ARP 響應(yīng)時間是正常的ARP 請求到應(yīng)答的時間;攻擊響應(yīng)時間是攻擊者發(fā)起攻擊時間到系統(tǒng)檢測到攻擊之間的時間;阻止時間是在系統(tǒng)檢測到攻擊后,采取相應(yīng)的的流規(guī)則措施,并將流表下發(fā)到交換機上的時間。
1)ARP響應(yīng)時間
結(jié)論:在圖8 中,橫軸是主機的數(shù)量,縱軸是響應(yīng),單位是s。在相同的網(wǎng)絡(luò)規(guī)模下,利用普通交換機和本作品設(shè)計的系統(tǒng)對網(wǎng)絡(luò)中正常的ARP 報文進(jìn)行處理。通過圖8 可以看出,在網(wǎng)絡(luò)規(guī)模較小的情況下(主機數(shù)量小于100 臺),兩者的處理時間是差不多的,本作品的處理時間比普通的交換機略長,這是由控制器在下發(fā)流表時增加相應(yīng)的判斷規(guī)則所決定的。但是隨著網(wǎng)絡(luò)規(guī)模的不斷擴(kuò)大,本作品設(shè)計系統(tǒng)的優(yōu)勢就明顯顯現(xiàn)出來。在網(wǎng)絡(luò)規(guī)模很大的時候,如果采用傳統(tǒng)ARP 泛洪方式進(jìn)行ARP 處理,會使網(wǎng)絡(luò)時延急劇加大;而對于本系統(tǒng)來說,采用主機表查詢的方式,免去了泛洪方式帶來的網(wǎng)絡(luò)阻塞,使網(wǎng)絡(luò)規(guī)模的擴(kuò)大對于時延的影響較小,因此本作品所設(shè)計的系統(tǒng)特別適合于網(wǎng)絡(luò)規(guī)模較大的情況。

圖8 ARP請求到應(yīng)答的時間
2)ARP攻擊的響應(yīng)時間
結(jié)論:針對本作品設(shè)計的防ARP 攻擊系統(tǒng),分別采用ARP 請求攻擊(ARP_REQUEST)和ARP 響應(yīng)攻擊(ARP_REPLY)兩種類型的攻擊進(jìn)行了測試。普通交換機對于ARP 攻擊沒有處理能力,當(dāng)遇到攻擊時只能采用等待攻擊停止或重啟電腦清除ARP 緩存的方式。本作品設(shè)計的系統(tǒng)針對以上兩種類型的攻擊進(jìn)行測試,通過統(tǒng)計平均得到攻擊的響應(yīng)時間在均在0.3s 以下,阻止攻擊的時間在0.05s 以下。實驗表明,本作品能夠較好地防御ARP 攻擊,當(dāng)網(wǎng)絡(luò)遭受攻擊時,系統(tǒng)能夠及時地檢測攻擊并對檢測到的攻擊采取相應(yīng)的措施,反應(yīng)迅速,保證了局域網(wǎng)的安全。

圖9 ARP攻擊的響應(yīng)時間
3)智能提醒功能測試
當(dāng)發(fā)生攻擊時,本系統(tǒng)會立刻給出網(wǎng)絡(luò)遭受的提示,提醒網(wǎng)管人員關(guān)注可疑的主機,并采取相應(yīng)的阻擊措施。在mininet 中使用pingall 命令,ryu 控制器加載自己編寫的app 可對報文進(jìn)行分析判斷,可獲得當(dāng)前拓?fù)洵h(huán)境中主機ip與mac的緩存表,提醒功能截圖如圖10所示。

圖10 攻擊提醒截圖
本文分析了現(xiàn)有網(wǎng)絡(luò)存在的問題,概括了軟件定義網(wǎng)絡(luò)所具有的特點,在分析了傳統(tǒng)了ARP 欺騙攻擊的原理和攻擊方式以及防御措施的基礎(chǔ)上,設(shè)計實現(xiàn)了SDN 架構(gòu)下的防ARP 攻擊系統(tǒng),能夠較好地防御各種形式的ARP 欺騙攻擊。本系統(tǒng)僅針對局域網(wǎng)的ARP 欺騙攻擊進(jìn)行防御,但是對于跨網(wǎng)段的攻擊沒有考慮,這是下一步的完善方向。