周 創(chuàng) 王紅林
(安徽國(guó)防科技職業(yè)學(xué)院, 安徽 六安 237011)
隨著云計(jì)算應(yīng)用的不斷深入以及對(duì)大數(shù)據(jù)處理需求的不斷擴(kuò)大,服務(wù)器的服務(wù)能力越來(lái)越難以滿(mǎn)足網(wǎng)絡(luò)運(yùn)行的需要??梢酝ㄟ^(guò)網(wǎng)絡(luò)虛擬化、服務(wù)器虛擬化來(lái)滿(mǎn)足相關(guān)需求,然而網(wǎng)絡(luò)資源需要?jiǎng)討B(tài)調(diào)配。于是,軟件定義網(wǎng)絡(luò)應(yīng)運(yùn)而生。與傳統(tǒng)網(wǎng)絡(luò)相比,軟件定義網(wǎng)絡(luò)相對(duì)簡(jiǎn)單,便于開(kāi)發(fā)應(yīng)用,同時(shí)因?yàn)樗哂熊浖锌刂频奶匦裕€能快速調(diào)整網(wǎng)絡(luò)環(huán)境。在傳統(tǒng)網(wǎng)絡(luò)中,ARP欺騙行為防不勝防。在軟件定義網(wǎng)絡(luò)中,對(duì)大多數(shù)網(wǎng)絡(luò)行為都可以通過(guò)軟件來(lái)控制,因此也可以在不改變硬件結(jié)構(gòu)的情況下,有效防止ARP欺騙。
軟件定義網(wǎng)絡(luò)(Software Defined Networking,縮寫(xiě)為“SDN”)是美國(guó)斯坦福大學(xué)Nick McKeown教授團(tuán)隊(duì)提出的一種新型網(wǎng)絡(luò)創(chuàng)新架構(gòu),屬于智能化網(wǎng)絡(luò)。它以軟件方式集中管理控制器和網(wǎng)絡(luò)裝置,通過(guò)OpenFlow核心技術(shù)將網(wǎng)絡(luò)設(shè)備平面與數(shù)據(jù)平面相分離,從而實(shí)現(xiàn)對(duì)網(wǎng)絡(luò)流量的靈活控制[1,2]。
SDN的架構(gòu)分3層,從底層到上層分別為基礎(chǔ)設(shè)施層、控制層、應(yīng)用層。應(yīng)用層包括各種不同的業(yè)務(wù)和應(yīng)用;控制層主要為交換機(jī)和路由器控制平面,為SDN的核心部分;基礎(chǔ)設(shè)施層負(fù)責(zé)基于物理交換機(jī)和路由器等進(jìn)行數(shù)據(jù)處理、轉(zhuǎn)發(fā)和狀態(tài)收集。SDN采用了集中式的控制平面和分布式的轉(zhuǎn)發(fā)平面,2個(gè)平面相互分離,控制平面利用控制—轉(zhuǎn)發(fā)通信接口對(duì)轉(zhuǎn)發(fā)平面上的網(wǎng)絡(luò)設(shè)備進(jìn)行集中式控制,因此具有控制和轉(zhuǎn)發(fā)分離、設(shè)備資源虛擬化和通用硬件及軟件可編程三大特性。
OpenFlow協(xié)議并不是一個(gè)產(chǎn)品或功能,而是一個(gè)具有API的溝通接口。它需要應(yīng)用程序的協(xié)助,讓控制器與網(wǎng)絡(luò)設(shè)備之間進(jìn)行互相通信。OpenFlow將封包傳輸路徑視為一條Flow,網(wǎng)絡(luò)工程師根據(jù)需要,可以通過(guò)軟件設(shè)置網(wǎng)絡(luò)的各項(xiàng)功能,建立邏輯網(wǎng)絡(luò),作出封包傳輸決策。這些決策會(huì)記錄在OpenFlow路由表里。通過(guò)在控制平面與轉(zhuǎn)發(fā)平面之間建立安全通道,將路由表內(nèi)容傳送給轉(zhuǎn)發(fā)平面的網(wǎng)絡(luò)設(shè)置。
ARP欺騙(又稱(chēng)ARP攻擊、ARP病毒),是針對(duì)ARP(地址解析協(xié)議)的一種攻擊技術(shù)。按攻擊方式的不同,可將其分為中間人攻擊和阻斷攻擊[3]。
中間人攻擊,指攻擊者通過(guò)發(fā)送假的ARP封包,讓特定的流量發(fā)送給攻擊者,篡改內(nèi)容后再傳送到目的地,使被攻擊者接受到錯(cuò)誤的信息。
阻斷攻擊,指攻擊者發(fā)送大量假的ARP封包,讓數(shù)據(jù)無(wú)法到達(dá)正確的網(wǎng)管,或?qū)RP數(shù)據(jù)包導(dǎo)到不存在的MAC地址,導(dǎo)致特定計(jì)算機(jī)或所有計(jì)算機(jī)無(wú)法正常連線。
在傳統(tǒng)網(wǎng)絡(luò)中,ARP封包在TCP/IP協(xié)議中屬于網(wǎng)絡(luò)層,是通過(guò)廣播方式傳輸,成為交換機(jī)的學(xué)習(xí)對(duì)象。這樣的封包如果提供的是錯(cuò)誤的信息,那就會(huì)造成安全性漏洞,影響整個(gè)網(wǎng)絡(luò)傳輸。
傳統(tǒng)網(wǎng)絡(luò)交換機(jī)的學(xué)習(xí)行為,是每當(dāng)接受一個(gè)數(shù)據(jù)包時(shí)先學(xué)習(xí)源地址的位置,從而接受數(shù)據(jù)包的端口,然后把端口和MAC地址記錄在表格里,網(wǎng)絡(luò)傳輸以這個(gè)記錄表為依據(jù)。因此,在交換機(jī)學(xué)習(xí)之前,如果能夠確保ARP數(shù)據(jù)包是正確的,那么就可以避免ARP欺騙造成的影響。利用SDN控制器的特性,在學(xué)習(xí)之前,可以先判斷ARP封包內(nèi)容,然后再?zèng)Q定是否學(xué)習(xí)(見(jiàn)圖1)。
圖1 SDN控制器辨別和處理過(guò)程
利用Mininet仿真軟件,建立交換機(jī)、路由器和主機(jī)等信息(見(jiàn)圖2、圖3和表1)。
圖2 網(wǎng)絡(luò)結(jié)構(gòu)簡(jiǎn)圖
主機(jī)IP地址MACHost110.0.0.100:00:00:00:00:11Host210.0.0.200:00:00:00:00:22Host310.0.0.300:00:00:00:00:33Host410.0.0.400:00:00:00:00:44
圖3 交換機(jī)初始正確的路由表信息
假設(shè)Host2是攻擊者。Host2發(fā)送假冒Host1的IP的封包,從dpid為1的交換機(jī)上發(fā)送出去。此攻擊封包內(nèi)容,會(huì)被交換機(jī)學(xué)習(xí)并轉(zhuǎn)發(fā)出去。
受到Host2攻擊后,交換機(jī)的路由表內(nèi)容如圖4所示。在每個(gè)交換機(jī)的PORT/MAC表中,real IP 10.0.0.1對(duì)應(yīng)的real MAC原本為00:00:00:00:00:11,現(xiàn)在變成了00:00:00:00:00:22。這將導(dǎo)致交換機(jī)不能正確地將封包送至Host1,使得Host1不能正常通信。
使用SDN中的控制器來(lái)進(jìn)行控制,交換機(jī)的記錄如圖5所示。圖中Port為主機(jī)連接在交換機(jī)上的端口,real IP為封包的真實(shí)源IP,real Mac為封包的真實(shí)源MAC,forwardingip為轉(zhuǎn)發(fā)時(shí)所用的IP,forwarding MAC為轉(zhuǎn)發(fā)時(shí)采用的MAC。
SDN控制器會(huì)在學(xué)習(xí)任何一個(gè)封包前都對(duì)其進(jìn)行檢查,判斷封包的內(nèi)容是不是可靠的內(nèi)容,診斷封包是否真實(shí),而不是盲目學(xué)習(xí)每個(gè)送到控制器的封包內(nèi)容。
圖4 受到Host2攻擊后的路由表信息
圖5 各交換機(jī)的路由表
作為攻擊者的Host2,發(fā)送假的Host1封包給dpid為1的交換機(jī)的Port2端口,經(jīng)過(guò)交換上傳到控制器。此時(shí),控制器會(huì)甄別出此數(shù)據(jù)包是未注冊(cè)的數(shù)據(jù)包,隨后在dpid為1的路由表中查找forwarding IP,由此判斷10.0.0.1是一個(gè)重復(fù)的IP地址。
受到Host2攻擊后,各交換機(jī)的arpTable表中記錄內(nèi)容如圖5所示。在dpid為1的表中,forwarding IP地址是10.255.255.1,而real IP為10.0.0.1,這就是由于Host2是假冒Host1的IP地址,控制器會(huì)利用Switch記錄找到正確的傳輸路徑,并且對(duì)封包做丟棄處理(見(jiàn)圖6)。
圖6 控制對(duì)假冒主機(jī)IP、交換機(jī)MAC的處理過(guò)程
如果Host2成為攻擊者時(shí),不是用Host2的MAC地址假冒Host1的IP,而是用交換機(jī)的MAC地址假冒Host1的IP,使用交換機(jī)的MAC來(lái)假裝已經(jīng)注冊(cè)過(guò)。這時(shí),Switch1從Port2收到假冒Switch2的MAC地址和Host1的IP的ARP封裝包,并且上轉(zhuǎn)發(fā)給控制器。這個(gè)控制器就會(huì)判斷,此MAC地址是否是網(wǎng)絡(luò)內(nèi)的MAC地址,并且查看arpTable中forwarding IP是否為對(duì)應(yīng)的IP,從而判斷數(shù)據(jù)包的真實(shí)與否。通過(guò)比較,確定這個(gè)數(shù)據(jù)包是假的,系統(tǒng)就會(huì)將其丟棄。
云計(jì)算的發(fā)展,提高了對(duì)動(dòng)態(tài)網(wǎng)絡(luò)資源的需求,從而推動(dòng)軟件定義網(wǎng)絡(luò)(SDN)發(fā)展,但新興的網(wǎng)絡(luò)架構(gòu)仍然會(huì)受到ARP的攻擊。根據(jù)SDN架構(gòu)的可程序化特性,對(duì)控制器的規(guī)則進(jìn)行重新設(shè)計(jì),便可以避免局域網(wǎng)內(nèi)出現(xiàn)ARP攻擊,提高網(wǎng)絡(luò)的效能和安全性。