文獻標識碼: A
文章編號: 0258-7998(2011)04-0133-05
目前,網(wǎng)絡(luò)和信息安全已上升到國家安全的層面。在早期的計算機網(wǎng)絡(luò)安全研究中,普遍存在著重兩頭而輕中間的現(xiàn)象,將網(wǎng)絡(luò)安全的注意力主要集中在網(wǎng)絡(luò)體系結(jié)構(gòu)的高層和低層,而忽視了中間層次的安全問題。如針對物理層的安全提出了大量的涉及物理、電子、電氣和功能等特性的解決方案;針對應(yīng)用層的安全出現(xiàn)了種類豐富、功能完善的面向協(xié)議的技術(shù)和產(chǎn)品。然而,只有當ARP欺騙攻擊在局域網(wǎng)中大范圍爆發(fā)而一時無法找到徹底的解決辦法時,才注意到中間層,尤其是數(shù)據(jù)鏈路層的安全問題。數(shù)據(jù)鏈路層的主要功能是在相鄰節(jié)點之間,通過各種控制協(xié)議和規(guī)程在有差錯的物理信道中實現(xiàn)無差錯的、可靠的數(shù)據(jù)幀傳輸[1]。本文以交換式局域網(wǎng)應(yīng)用為主,集中分析了數(shù)據(jù)鏈路層的安全問題,有針對性地提出了相應(yīng)的解決方法和思路,并以Cisco交換機為例,給出了相應(yīng)的配置方法。
1 數(shù)據(jù)鏈路層主要安全問題
1.1 ARP欺騙攻擊
ARP(Address Resolution Protocol)的功能是通過IP地址查找對應(yīng)端口的MAC地址,以便在TCP/IP網(wǎng)絡(luò)中實現(xiàn)共享信道的節(jié)點之間利用MAC地址進行通信。由于ARP協(xié)議在設(shè)計中存在主動發(fā)送ARP報文的漏洞,使得主機可以發(fā)送虛假的ARP請求報文或響應(yīng)報文,而報文中的源IP地址和源MAC地址均可以進行偽造。在局域網(wǎng)中,既可以偽造成某一臺主機(如服務(wù)器)的IP地址和MAC地址的組合,也可以偽造成網(wǎng)關(guān)IP地址與MAC地址的組合。這種組合可以根據(jù)攻擊者的意圖進行任意搭配,而現(xiàn)有的局域網(wǎng)卻沒有相應(yīng)的機制和協(xié)議來防止這種偽造行為。近幾年來,幾乎所有局域網(wǎng)都遭遇過ARP欺騙攻擊的侵害。
圖1所示為假設(shè)主機C為局域網(wǎng)中的網(wǎng)關(guān),主機D為ARP欺騙者。當局域網(wǎng)中的計算機要與其他網(wǎng)絡(luò)進行通信(如訪問Internet)時,所有發(fā)往其他網(wǎng)絡(luò)的數(shù)據(jù)全部發(fā)給了主機D,而主機D并非真正的網(wǎng)關(guān),這樣整個網(wǎng)絡(luò)將無法與其他網(wǎng)絡(luò)進行通信。這種現(xiàn)象在ARP欺騙攻擊中非常普遍。
1.2 DHCP欺騙攻擊
DHCP(Dynamic Host Configuration Protocol)的功能是對客戶端動態(tài)地分配IP地址及相關(guān)參數(shù)。但DHCP卻存在著一個非常大的安全隱患:當一臺運行有DHCP客戶端程序的計算機連接到網(wǎng)絡(luò)中時,即使是一個沒有權(quán)限使用網(wǎng)絡(luò)的非法用戶也能很容易地從DHCP服務(wù)器獲得一個IP地址及網(wǎng)關(guān)、DNS等信息,成為網(wǎng)絡(luò)的合法使用者[2]。由于DHCP客戶端在獲得DHCP服務(wù)器的IP地址等信息時,系統(tǒng)沒有提供對合法DHCP服務(wù)器的認證,所以DHCP客戶端從首先得到DHCP響應(yīng)(DHCPOFFER)的DHCP服務(wù)器處獲得IP地址等信息。為此,不管是人為的網(wǎng)絡(luò)攻擊、破壞,還是無意的操作,一旦在網(wǎng)絡(luò)中接入了一臺DHCP服務(wù)器,該DHCP服務(wù)器就可以為DHCP客戶端提供IP地址等信息的服務(wù)。其結(jié)果是:(1)客戶端從非法DHCP服務(wù)器獲得了不正確的IP地址、網(wǎng)關(guān)、DNS等參數(shù),無法實現(xiàn)正常的網(wǎng)絡(luò)連接;(2)客戶端從非法DHCP服務(wù)器處獲得的IP地址與網(wǎng)絡(luò)中正常用戶使用的IP地址沖突,影響了網(wǎng)絡(luò)的正常運行。尤其當客戶端獲得的IP地址與網(wǎng)絡(luò)中某些重要的服務(wù)器的IP地址沖突時,整個網(wǎng)絡(luò)將處于混亂狀態(tài);(3)攻擊偽造大量的DHCP請求報文,將DHCP服務(wù)器中可供分配的IP地址耗盡,使正常的用戶無法獲得IP地址。
1.3 生成樹協(xié)議攻擊
生成樹協(xié)議STP(Spanning Tree Protocol)是用于解決網(wǎng)絡(luò)環(huán)路問題的一種智能算法。在交換式網(wǎng)絡(luò)中,通過在兩個交換節(jié)點之間提供多條物理鏈路來提供線路冗余,以增加設(shè)備之間連接的可靠性。但是,當在兩個交換節(jié)點(如交換機)之間存在兩條以上的物理鏈路時將會形成環(huán)路。如果沒有相應(yīng)的備份策略,環(huán)路的存在將會形成廣播風(fēng)暴。輕則嚴重影響網(wǎng)絡(luò)的性能,重則導(dǎo)致網(wǎng)絡(luò)癱瘓。生成樹協(xié)議的實現(xiàn)基礎(chǔ)是BPDU(Bridge Protocol Data Units)報文,通過在不同交換機之間交換的BPDU報文,在網(wǎng)絡(luò)中選舉一臺網(wǎng)橋ID(Bridge ID)最低的交換機作為根網(wǎng)橋(Root Bridge),并將交換機上發(fā)送該BPDU報文端口ID(Port ID)的值設(shè)置為最低,交換機上端口ID值最低的端口為根端口(Root Port),根端口連接的鏈路為主鏈路。通過計算網(wǎng)絡(luò)中各個交換機到達根網(wǎng)橋的路徑開銷,選擇各交換節(jié)點到達根網(wǎng)橋的最優(yōu)路徑,同時阻斷其他的次優(yōu)路徑(即冗余鏈路),從而形成邏輯上無環(huán)路的樹形拓撲結(jié)構(gòu)。
根據(jù)STP的工作原理,同一網(wǎng)絡(luò)中的所有交換機之間都可以通過網(wǎng)橋ID的值來選擇根網(wǎng)橋,這樣攻擊者可以在網(wǎng)絡(luò)中接入一臺交換機或一臺計算機,然后通過構(gòu)造網(wǎng)橋ID最低的BPDU報文,使這臺接入的交換機或計算機成為根網(wǎng)橋,進而擾亂正常的網(wǎng)絡(luò)運行,最終導(dǎo)致網(wǎng)絡(luò)癱瘓。
1.4 MAC地址泛洪攻擊
交換機根據(jù)MAC地址來轉(zhuǎn)發(fā)數(shù)據(jù)幀,交換機端口與所連設(shè)備MAC地址的對應(yīng)關(guān)系存儲在內(nèi)容尋址存儲器CAM(Content Addressable Memory)表中,CAM表中還可能包含MAC地址對應(yīng)的VLAN ID等參數(shù)。當交換機從某一端口接收到一個數(shù)據(jù)幀時,交換機首先從數(shù)據(jù)幀中提取源MAC地址和目的MAC地址,然后將端口與源MAC地址的對應(yīng)關(guān)系記錄在CAM表中。同時,交換機查詢CAM表中是否有目的MAC地址對應(yīng)的記錄,如果有,則可通過對應(yīng)的端口將數(shù)據(jù)幀轉(zhuǎn)發(fā)出去,如果沒有,交換機的作用則類似于集線器,會將數(shù)據(jù)幀廣播到交換機其他所有的端口[3]。
MAC地址泛洪攻擊也稱為CAM表溢出攻擊。因為任何一臺交換機的CAM表大小是有限制的,當記錄數(shù)填滿CAM表時,凡到達交換機的具有不同源MAC地址的數(shù)據(jù)幀,其端口和MAC地址的對應(yīng)關(guān)系將不會被添加在CAM表中?;诖嗽?,攻擊者將大量虛構(gòu)的具有不同源MAC地址的數(shù)據(jù)幀發(fā)送給交換機,直至交換機的CAM表填滿。之后,交換機將進入fail-open(失效開放)模式,其功能將類似于一臺集線器。此時,交換機接收到的任何一個單播幀都會以廣播方式處理,攻擊者的計算機將會接收到這些單播幀,從而獲得其他用戶的信息。
1.5 VLAN 攻擊
虛擬局域網(wǎng)VLAN(Virtual Local Area Network)是在交換式局域網(wǎng)基礎(chǔ)上出現(xiàn)的一項管理技術(shù),通過在數(shù)據(jù)幀的頭部添加VLAN tag(VLAN標識)字段,將局域網(wǎng)用戶設(shè)備邏輯地劃分為多個網(wǎng)段,以縮小廣播域,提高用戶通信的安全性及網(wǎng)絡(luò)的可管理性。VLAN在局域網(wǎng)中一般被作為一項安全技術(shù)使用,但VLAN本身卻存在安全隱患。目前針對VLAN的攻擊主要集中在VLAN Hopping攻擊和VTP攻擊兩個方面。
(1)VLAN Hopping攻擊。VLAN Hopping(VLAN跳躍)攻擊是基于動態(tài)主干協(xié)議DTP(Dynamic Trunk Protocol)來實現(xiàn)的。當兩臺交換機互聯(lián)時,通過DTP可以對互聯(lián)端口進行協(xié)商,確認是否設(shè)置為支持IEEE 802.1Q的主干(trunk)端口。如果設(shè)置為主干端口,則允許轉(zhuǎn)發(fā)所有VLAN中的數(shù)據(jù)幀。VLAN Hopping攻擊又分為基本VLAN Hopping攻擊和雙重封裝VLAN跳躍攻擊兩類。①基本VLAN Hopping攻擊是攻擊者將計算機偽裝成為一臺交換機,并發(fā)送虛假的DTP協(xié)商報文,請求成為主干端口。局域網(wǎng)中交換機在收到這個DTP報文后,便啟用基于IEEE 802.1Q的Trunk功能,將攻擊者的計算機誤認為一臺合法的交換機。之后,所有VLAN的數(shù)據(jù)幀都會發(fā)送到攻擊者的計算機上。②雙重封裝VLAN跳躍攻擊是指利用目前大部分局域網(wǎng)交換機僅支持單層VLAN tag的特點,攻擊者根據(jù)要入侵的VLAN ID,首先構(gòu)造一個包含該VLAN ID的IEEE 802.1Q數(shù)據(jù)幀,然后在該IEEE 802.1Q數(shù)據(jù)幀的外層再封裝一層適合當前網(wǎng)絡(luò)的VLAN tag,從而通過外層VLAN ID實現(xiàn)對非授權(quán)VLAN ID的非法訪問,以獲取非授權(quán)VLAN ID中的用戶數(shù)據(jù)。
(2)VTP攻擊。VTP(VLAN Trunk Protocol)以組播方式在同一個管理域中同步VLAN信息,從而實現(xiàn)對管理域中VLAN信息的集中管理。VTP報文只能在trunk端口上轉(zhuǎn)發(fā)。VTP的三種工作模式及對應(yīng)的功能如下:
①Server(缺?。?。可以添加、刪除、修改VLAN,并同步VLAN信息。VLAN信息存放在NVRAM中。
②Client。不允許添加、刪除、修改VLAN,但會同步VLAN信息。VLAN信息不存放在NVRAM中,斷電后會自動消失。
③Transparent??梢蕴砑?、刪除、修改VLAN,但不同步VLAN信息。VLAN信息存放在NVRAM中。
使用VTP的主要目的是實現(xiàn)對局域網(wǎng)中VLAN信息的集中管理,以減少網(wǎng)絡(luò)管理員的工作量。但攻擊者可以接入一臺交換機或直接使用一臺計算機,并與上聯(lián)交換機之間建立一條主干(trunk)通道后,通過修改自己的修訂號(Configuration Revision)來擁有Server的權(quán)限,進而對局域網(wǎng)的VLAN架構(gòu)進行任意更改,以獲得所需要的信息或擾亂網(wǎng)絡(luò)的正常運行。
2 數(shù)據(jù)鏈路層安全防范方法
2.1 針對ARP欺騙攻擊的防范方法
ARP緩存表中的記錄既可以是動態(tài)的,也可以是靜態(tài)的。如果ARP緩存表中的記錄是動態(tài)的,則可以通過老化機制減少ARP緩存表的長度并加快查詢速度;靜態(tài)ARP緩存表中的記錄是永久性的,用戶可以使用TCP/IP工具來創(chuàng)建和修改,如Windows操作系統(tǒng)自帶的ARP工具。對于計算機來說,可以通過綁定網(wǎng)關(guān)等重要設(shè)備的IP與MAC地址記錄來防止ARP欺騙攻擊。在交換機上防范ARP欺騙攻擊的方法與在計算機上基本相同,可以將下連設(shè)備的MAC地址與交換機端口進行綁定,并通過端口安全功能(Port Security feature)對違背規(guī)則的主機(攻擊者)進行相應(yīng)的處理。通過Cisco交換機可以在DHCP Snooping綁定表的基礎(chǔ)上,使用DAI(Dynamic ARP Inspection)技術(shù)來檢測ARP請求,攔截非法的ARP報文,具體配置如下:
Switch(config)#ip arp inspection vlan 20-30,100-110,315(定義ARP檢測的VLAN范圍,該范圍根據(jù)DHCP snooping binding表做判斷)
Switch(config-if)#ip arp inspection limit rate 30 (限制端口每秒轉(zhuǎn)發(fā)ARP報文的數(shù)量為30)
2.2 針對DHCP欺騙攻擊的防范方法
對于DHCP欺騙攻擊的防洪可以采用兩種方法。
(1)采用DHCP Snooping過濾來自網(wǎng)絡(luò)中非法DHCP服務(wù)器或其他設(shè)備的非信任DHCP響應(yīng)報文。在交換機上,當某一端口設(shè)置為非信任端口時,可以限制客戶端特定的IP地址、MAC地址或VLAN ID等報文通過。為此,可以使用DHCP Snooping特性中的可信任端口來防止用戶私置DHCP服務(wù)器或DHCP代理[4]。一旦將交換機的某一端口設(shè)置為指向正確DHCP服務(wù)器的接入端口,則交換機會自動丟失從其他端口上接收到的DHCP響應(yīng)報文。例如,在Cisco交換機上通過以下命令將指定端口設(shè)置為信任端口:
Switch(config-if)# ip dhcp snooping trust(定義該端口為DHCP信任端口)
Switch(config)#ip dhcp snooping (啟用DHCP snooping功能)
Switch(config)#ip dhcp snooping vlan 20-30,100-110,315 (定義DHCP snooping作用的VLAN)
(2)通過DHCP服務(wù)器(如基于Windows 2003/2008操作系統(tǒng)的DHCP服務(wù)器)綁定IP與MAC地址,實現(xiàn)對指定計算機IP地址的安全分配。
2.3 針對生成樹協(xié)議攻擊的防范方法
對于STP攻擊可以采取STP環(huán)路保護機制來防范。為了防止客戶端交換機偶然成為根網(wǎng)橋,在Cisco交換機中可以使用Root Guard特性來避免這種現(xiàn)象的發(fā)生[5]。如圖2所示,如果STP偶然選擇出客戶端交換機(交換機D)成為根網(wǎng)橋,即交換機C與交換機D相連接的端口成為根端口(Root Port),則Root Guard特性自動將交換機C與交換機D相連接的端口設(shè)置為root-inconsistent狀態(tài)(根阻塞狀態(tài)),以防止客戶端交換機D成為根網(wǎng)橋。一旦在交換機中配置了Root Guard特性,其將對所有的VLAN都有效。
在Cicsco交換機中配置Root Guard特性的命令如下:
Switch(config-if)#spanning-tree guard root
2.4 針對MAC地址泛洪攻擊的防范方法
針對MAC地址泛洪攻擊,可以采取以下多種方法進行防范:
(1)限制未知目的MAC地址的組播(multicast)幀和單播(unicast)幀通過本端口進行轉(zhuǎn)發(fā)。在Cisco交換機的配置如下:
Switch(config-if)# switchport block multicast
Switch(config-if)# switchport block unicast
(2)限制端口學(xué)習(xí)到的最大MAC地址數(shù)量。以下配置中將該端口最大能夠?qū)W習(xí)到的MAC地址數(shù)限制為10:
Switch(config-if)#switchport port-security maximum 10
(3)限制端口單位時間(一般為每秒)通過的最大數(shù)據(jù)幀數(shù)量,可以分別針對單播幀、組播幀和廣播幀進行設(shè)置。以下配置中將該端口每秒通過的單播幀、組播幀和廣播幀的數(shù)量分別限制為10:
Switch(config-if)# storm-control unicast level 10
Switch(config-if)# storm-control multicast level 10
Switch(config-if)# storm-control broadcast level 10
當通過以上方式對交換機的端口進行限制后,對于違背安全規(guī)則的端口,交換機將自動采取protect(丟棄非法流量,不報警)、restrict(丟棄非法流量,報警)、shutdown(關(guān)閉端口)和shutdown vlan(關(guān)閉VLAN)等安全保護方式。
2.5 針對VLAN攻擊的防范方法
(1)針對基本VLAN Hopping攻擊,最有效的解決方法是關(guān)閉交換機的DTP功能,將交換機之間的互聯(lián)端口手動設(shè)置為Trunk即可。在Cisco交換機上將某一端口設(shè)置為Trunk的配置如下:
Switch(config-if)# switchport(設(shè)置為二層端口)
Switch(config-if)#switchport trunk encapsulation dot1q(啟用IEEE 802.1Q)
Switch(config-if)#switchport mode trunk(設(shè)置該端口為trunk)或
Switch(config-if)# switchport mode dynamic desirable(使該端口既主動發(fā)送DTP報文,也允許對DTP報文進行響應(yīng),這是以太網(wǎng)端口的默認狀態(tài))
關(guān)閉交換機上DTP功能的配置如下:
Switch(config-if)# switchport mode access(設(shè)置為訪問端口,不具有DTP功能)或
Switch(config-if)# switchport mode dynamic auto(使該端口可以響應(yīng)DTP報文,但不允許主動發(fā)送DTP報文)
針對雙重封裝VLAN Hopping攻擊,目前最有效的解決辦法是為trunk端口單獨設(shè)置一個native VLAN,且在native VLAN中不加入任何用戶的端口。配置方法如下:
Switch(config-if)#switchport trunk native vlan vlan-id
(2)由于實現(xiàn)VTP攻擊的前提是攻擊者與上聯(lián)交換機之間要建立一條主干(trunk)通道,所以可以采取與防范基本VLAN Hopping攻擊相同的方法來解決這一問題。另外,可以為VTP域設(shè)置密碼,當域中要加入新的交換機時必須輸入正確的密碼,通過對VTP域密碼的管理便可以防范VTP攻擊。在Cisco交換機中的配置實例如下:
Switch(config)# vtp mode server(將VTP的工作模式設(shè)置為Server)
Switch(config)# vtp domain VTP-JSPI(設(shè)置VTP的域名為VTP-JSPI)
Switch(config)#vtp pruning (設(shè)置VTP修剪,以減少trunk端口上不必要的流量)
Switch(config)#vtp version 2(設(shè)置VTP的版本號為2)
Switch(config)#vtp password cisco-jspi(將VTP域的密碼設(shè)置為cisco-jspi)
需要說明的是:VTP域中的所有交換機必須設(shè)置相同的密碼,否則無法正確工作。另外,VTP的域密碼是以明文方式在網(wǎng)絡(luò)中傳輸,安全性較差。
在OSI參考模型中,局域網(wǎng)僅涉及到物理層和數(shù)據(jù)鏈路層,以上各層的功能由局域網(wǎng)操作系統(tǒng)來完成。在網(wǎng)絡(luò)體系結(jié)構(gòu)中,越是低層的安全問題所產(chǎn)生的影響也越大,而且越不容易徹底解決。正因為如此,當ARP、DHCP、VLAN、STP等主要針對數(shù)據(jù)鏈路層協(xié)議的攻擊出現(xiàn)時,一般借助于對交換機等數(shù)據(jù)鏈路層設(shè)備的安全管理來解決。針對局域網(wǎng)應(yīng)用和管理實際,本文僅對數(shù)據(jù)鏈路層的主要安全問題進行了分析,并給出了Cisco交換機上的配置方法,其他品牌交換機的配置讀者可參閱相關(guān)的技術(shù)文檔。隨著網(wǎng)絡(luò)應(yīng)用不斷深入,新的安全問題也將不斷出現(xiàn),針對數(shù)據(jù)鏈路層的安全研究也將是一項長期的工作。
參考文獻
[1] TANENBAUM A S. Computer networks fourth edition(影印版)[M].北京:清華大學(xué)出版,2008.
[2] 任鳳姣,王 洪,賈卓生.DHCP安全系統(tǒng)[J].計算機工程,2004,17(9):127-129.
[3] 王群.計算機網(wǎng)絡(luò)安全技術(shù)[M].北京:清華大學(xué)出版,2008.
[4] PATRICK M. Motorola BCS. DHCP relay agent information option[EB/OL]. http://www.rfc-editor.org/rfc/rfc3046.txt, January 2001.
[5] Cisco Systems, Inc. Spanning tree protocol root guard enhancement[EB/OL]. http://www.cisco.com/application/pdf/paws/10588/74.pdf, August 2005.