網(wǎng)卡和交換機是常見的組網(wǎng)設(shè)備,網(wǎng)卡和交換機功能的實現(xiàn)需要MAC支撐,操作系統(tǒng)依賴網(wǎng)卡驅(qū)動程序和MAC打交道,進而通過網(wǎng)卡和交換機等網(wǎng)絡(luò)設(shè)備完成網(wǎng)絡(luò)通訊,MAC在網(wǎng)絡(luò)安全中也扮演了重要角色。
一、網(wǎng)卡、MAC控制器和MAC地址
提到MAC不得不涉及網(wǎng)卡的工作原理,網(wǎng)卡工作在OSI參考模型的數(shù)據(jù)鏈路層和網(wǎng)絡(luò)層。這里又出現(xiàn)了一個概念“OSI參考模型”,在這個模型中定義了網(wǎng)絡(luò)通訊是分層的,分別是物理層,數(shù)據(jù)鏈路層,網(wǎng)絡(luò)層,傳輸層,會話層,表示層,應(yīng)用層。以太網(wǎng)數(shù)據(jù)鏈路層其實包含MAC(介質(zhì)訪問控制)子層和LLC(邏輯鏈路控制)子層。
物理層定義了數(shù)據(jù)傳送與接收所需要的電與光信號、線路狀態(tài)、時鐘基準(zhǔn)、數(shù)據(jù)編碼和電路等,并向數(shù)據(jù)鏈路層設(shè)備提供標(biāo)準(zhǔn)接口。數(shù)據(jù)鏈路層則提供尋址機構(gòu)、數(shù)據(jù)幀的構(gòu)建、數(shù)據(jù)差錯檢查、傳送控制、向網(wǎng)絡(luò)層提供標(biāo)準(zhǔn)的數(shù)據(jù)接口等功能。以太網(wǎng)卡中數(shù)據(jù)鏈路層的芯片一般簡稱之為MAC控制器,物理層的芯片簡稱之為PHY。許多網(wǎng)卡的芯片把MAC和PHY的功能做到了一顆芯片中,比如Intel 82559網(wǎng)卡的和3COM3C905網(wǎng)卡。但是MAC和PHY的機制還是單獨存在的,只是外觀的表現(xiàn)形式是一顆單芯片。當(dāng)然也有很多網(wǎng)卡的MAC和PHY是分開做的,比如D-LINK的DFE-530TX等,原文中說“MAC地址對應(yīng)物理層”是不確切的。
通常提到的MAC指狹義的MAC地址,其實在網(wǎng)卡中,一塊以太網(wǎng)卡MAC芯片的作用不但要實現(xiàn)MAC子層和LLC子層的功能,還要提供符合規(guī)范的PCI界面以實現(xiàn)和主機的數(shù)據(jù)交換。以太網(wǎng)MAC芯片的一端接計算機PCI總線,另外一端就接到PHY芯片上。MAC從PCI總線收到IP數(shù)據(jù)包(或者其他網(wǎng)絡(luò)層協(xié)議的數(shù)據(jù)包)后,將之拆分并重新打包成最大1518Byte,最小64Byte的幀。這個幀里面包括了目標(biāo)MAC地址、自己的源MAC地址和數(shù)據(jù)包里面的協(xié)議類型(比如IP數(shù)據(jù)包的類型用80表示)。最后還有一個DWORD(4Byte)的CRC碼。
網(wǎng)卡上有一顆EEPROM芯片,通常是一顆93C46。里面記錄了網(wǎng)卡芯片的供應(yīng)商ID、子系統(tǒng)供應(yīng)商ID、網(wǎng)卡的MAC地址、網(wǎng)卡的一些配置,如SMI總線上PHY的地址,BOOTROM的容量,是否啟用BOOTROM引導(dǎo)系統(tǒng)等東西。
認識一下它們
MAC和PHY集成在一顆芯片的以太網(wǎng)卡
?、賀J-45接口②Transformer(隔離變壓器)③PHY芯片
?、躆AC芯片⑤EEPROM⑥BOOTROM插槽
⑦WOL接頭⑧晶振⑨電壓轉(zhuǎn)換芯片
?、釲ED指示燈
二、交換機、MAC地址表和MAC地址學(xué)習(xí)
對于網(wǎng)絡(luò)交換機來說,MAC地址表是其能否正確轉(zhuǎn)發(fā)數(shù)據(jù)包的關(guān)鍵,為此,協(xié)議標(biāo)準(zhǔn)RFC2285和RFC2889中都對以太網(wǎng)交換機的MAC地址表深度和MAC地址學(xué)習(xí)速度進行專門的描述。 MAC地址表顯示了主機的MAC地址與以太網(wǎng)交換機端口映射關(guān)系,指出數(shù)據(jù)幀去往目的主機的方向。當(dāng)以太網(wǎng)交換機收到一個數(shù)據(jù)幀時,將收到數(shù)據(jù)幀的目的MAC地址與MAC地址表進行查找匹配。如果在MAC地址表中沒有相應(yīng)的匹配項,則向除接收端口外的所有端口廣播該數(shù)據(jù)幀,有人將這種操作翻譯為泛洪(Flood,泛洪操作廣播的是普通數(shù)據(jù)幀而不是廣播幀)。在我們測試過的交換機中,有的除了能夠?qū)V播幀的轉(zhuǎn)發(fā)進行限制之外,也能對泛洪這種操作進行限制。
而當(dāng)MAC地址表中有匹配項時,該匹配項指定的交換機端口與接收端口相同則表明該數(shù)據(jù)幀的目的主機和源主機在同一廣播域中,不通過交換機可以完成通信,交換機將丟棄該數(shù)據(jù)幀。否則,交換機將把該數(shù)據(jù)幀轉(zhuǎn)發(fā)到相應(yīng)的端口。交換機還將檢查收到數(shù)據(jù)幀的源MAC地址,并查找MAC地址表中與之相匹配的項。如果沒有,交換機將記錄該MAC地址和接收該數(shù)據(jù)幀的端口,并激活一個定時器。這個過程被稱作地址學(xué)習(xí)。這個定時器一般就是我們在配置交換機時的AgeTime選項,一般我們都可以配置這一定時器的時間長度。在定時器到時的時候,該項記錄將從MAC地址表中刪除。而如果接收的數(shù)據(jù)幀的源MAC地址在MAC地址表中有匹配項,交換機將復(fù)位該地址的定時器。
三、IP地址、MAC地址和三層交換技術(shù)
一臺計算機想要接入到網(wǎng)絡(luò)中,必須要有兩個地址。一個是網(wǎng)卡的地址,也就是MAC地址。在以太網(wǎng)中,我們通過MAC地址來進行數(shù)據(jù)傳送和數(shù)據(jù)交換。在以太網(wǎng)環(huán)境中,數(shù)據(jù)會分幀傳送,每一個數(shù)據(jù)幀都會包含自己的MAC和目的MAC地址信息;另外一個地址是平時所說的IP地址,定義在網(wǎng)絡(luò)層,每一臺網(wǎng)絡(luò)計算機都會有一個或者多個IP地址,這是一個虛擬的數(shù)據(jù),并且可以隨時更改。在硬件層次上進行的數(shù)據(jù)幀交換必須有正確的接口地址。但是,TCP/IP有自己的地址: 32 bit的IP地址。知道主機的IP地址并不能讓內(nèi)核發(fā)送一幀數(shù)據(jù)給主機。內(nèi)核(如以太網(wǎng)驅(qū)動程序)必須知道目的端的硬件地址才能發(fā)送數(shù)據(jù)。ARP的功能是在32 bit的IP地址和采用不同網(wǎng)絡(luò)技術(shù)的硬件地址之間提供動態(tài)映射。點對點鏈路不使用ARP。當(dāng)設(shè)置這些鏈路時(一般在引導(dǎo)過程進行),必須告知內(nèi)核鏈路每一端的IP地址。像以太網(wǎng)地址這樣的硬件地址并不涉及。
IP地址和MAC地址是同時使用的,在數(shù)據(jù)傳送過程中,一個完整的TCP/IP包需要由以太網(wǎng)進行數(shù)據(jù)封裝,數(shù)據(jù)分幀,最后再通過物理層傳輸?shù)侥繕?biāo)計算機。在以太網(wǎng)封裝上層的TCP/IP包的時候,它需要知道源MAC地址和目的MAC地址,但是我們只能給出一個對方的IP地址,這個時候就需要一個協(xié)議來支持IP到MAC的轉(zhuǎn)換,這就是ARP,Address Resolution Protocol. ARP協(xié)議是介乎于網(wǎng)絡(luò)層和數(shù)據(jù)鏈路層的一個協(xié)議。第一次傳送某個目的IP地址的數(shù)據(jù)的時候,先會發(fā)出一個ARP包,其MAC的目標(biāo)地址是廣播地址,里面說到:"誰是xxx.xxx.xxx.xxx這個IP地址的主人?"因為是廣播包,所有這個局域網(wǎng)的主機都收到了這個ARP請求。
收到請求的主機將這個IP地址和自己的相比較,如果不相同就不予理會,如果相同就發(fā)出ARP響應(yīng)包。這個IP地址的主機收到這個ARP請求包后回復(fù)的ARP響應(yīng)里說到:"我是這個IP地址的主人"。這個包里面就包括了他的MAC地址。以后的給這個IP地址的幀的目標(biāo)MAC地址就被確定了。其它的協(xié)議如IPX/SPX也有相應(yīng)的協(xié)議完成這些操作。
IP地址和MAC地址之間的關(guān)聯(lián)關(guān)系保存在主機系統(tǒng)里面,叫做ARP表,由驅(qū)動程序和操作系統(tǒng)完成。在Microsoft的系統(tǒng)里面可以用arp -a的命令查看ARP表。收到數(shù)據(jù)幀的時候也是一樣,做完CRC以后,如果沒有CRC效驗錯誤,就把幀頭去掉,把數(shù)據(jù)包拿出來通過標(biāo)準(zhǔn)的借口傳遞給驅(qū)動和上層的協(xié)議客棧,最終正確的達到我們的應(yīng)用程序。還有一些控制幀,例如流控幀也需要MAC直接識別并執(zhí)行相應(yīng)的行為。
三層交換機工作過程的簡單概括:如果目的IP地址顯示不是同一網(wǎng)段的,那么A要實現(xiàn)和B的通訊,在流緩存條目中沒有對應(yīng)MAC地址條目,就將第一個正常數(shù)據(jù)包發(fā)送向一個缺省網(wǎng)關(guān),這個缺省網(wǎng)關(guān)一般在操作系統(tǒng)中已經(jīng)設(shè)好,對應(yīng)第三層路由模塊,所以可見對于不是同一子網(wǎng)的數(shù)據(jù),最先在MAC表中放的是缺省網(wǎng)關(guān)的MAC地址;然后就由三層模塊接收到此數(shù)據(jù)包,查詢路由表以確定到達B的路由,將構(gòu)造一個新的幀頭,其中以缺省網(wǎng)關(guān)的MAC地址為源MAC地址,以主機B的MAC地址為目的MAC地址。通過一定的識別觸發(fā)機制,確立主機A與B的MAC地址及轉(zhuǎn)發(fā)端口的對應(yīng)關(guān)系,并記錄進流緩存條目表,以后的A到B的數(shù)據(jù),就直接交由二層交換模塊完成。這就通常所說的一次路由多次轉(zhuǎn)發(fā)。
四、真實MAC地址、注冊表MAC地址和MAC地址的修改
MAC地址固化在網(wǎng)卡中的BIOS中,可以通過命令取得,但是,通過命令取得的MAC地址不一定是真實的MAC地址,因為在網(wǎng)卡初始化過程中,操作系統(tǒng)確實讀取了網(wǎng)卡中MAC地址,但是在以后通訊過程中使用的MAC地址卻是從初始化過程結(jié)束后建立的緩沖區(qū)中讀取,而緩沖區(qū)中MAC地址可能是注冊表定義的MAC地址,而不是真實的MAC地址,這個過程由網(wǎng)卡驅(qū)動程序完成。這也是WIN操作系統(tǒng)的MAC地址可以被輕易修改的原因。
WIN98/ME/2k/XP/2003用戶都可以使用ipconfig/all命令獲取MAC地址,XP/2003用戶有更簡單的方法:右鍵本地連接圖標(biāo)、選擇狀態(tài)然后點擊支持選項卡,這里“詳細信息”中包含有MAC和其它重要網(wǎng)絡(luò)參數(shù)。
大部分的網(wǎng)卡都可以通過在控制面板中修改網(wǎng)卡屬性來更改其MAC地址。在“設(shè)備管理器中”,右鍵點擊需要修改MAC地址的網(wǎng)卡圖標(biāo),并選擇“屬性/高級”選項卡。在“屬性”區(qū),就可以看到一個稱作“Network Address”或其他相類似名字的的項目,點擊它,在右側(cè)“值”的下方,輸入要指定的MAC地址值。要連續(xù)輸入12個十六進制數(shù)字或字母,不要在其間輸入“-”。
重新啟動系統(tǒng)后設(shè)置就會生效了。參考上面發(fā)的圖比較有明顯的變化,顯然圖中顯示的是修改過的MAC地址。
五、MAC地址的捆綁、ARP命令缺陷和MAC地址重復(fù)
MAC地址綁定與IP地址綁定類似,MAC地址綁定也分為服務(wù)器有關(guān)MAC地址綁定、服務(wù)器無關(guān)MAC地址綁定、MAC地址靜態(tài)綁定和MAC地址動態(tài)綁定。服務(wù)器有關(guān)MAC地址綁定在政務(wù)網(wǎng)或園區(qū)網(wǎng)中的應(yīng)用較多,可將用戶的使用權(quán)限和機器的MAC地址綁定起來,限制用戶只能在固定的機器上網(wǎng),保障安全,防止賬號盜用。由于MAC地址可以修改,因此這個方法可以起到一定的作用,但仍有漏洞。
關(guān)于在WINDOWS 2000 SERVER下用ARP -S捆綁MAC和IP的方法需要具體分析,否則可能起不到綁定定作用。以WINDOWS 2000server為例,WIN主機用IP+MAC的方式限制上網(wǎng),很容易被用戶突破。這里需要說明的是有3種情況:
1、服務(wù)器用ARP -S做IP+MAC捆綁后,如果用戶自己改IP,保持MAC不變,這種情況下,ARP -S的捆綁被用戶輕易突破。
第一種情況的實驗如上圖,服務(wù)器2000/NAT/10.41.221.2??蛻魴C的IP是10.41.221.6,然后在2000的服務(wù)器上用ARP -S做捆綁。然后把客戶機的IP改為10.41.221.7,如圖,10.41.221.7可以上網(wǎng)。輕易可以突破捆綁。
2、服務(wù)器用ARP -S做IP+MAC捆綁后,如果用戶自己改MAC,保持IP不變,這種情況下,ARP -S的捆綁被用戶輕易突破。
所以上面的實驗用第三方軟件發(fā)包欺騙網(wǎng)關(guān),達到正常的用戶IP不能上網(wǎng)的目的。
3、服務(wù)器用ARP -S做IP+MAC捆綁后,如果LAN中存在2臺計算機的IP和MAC完全相同(參考上面介紹的方法設(shè)置MAC地址),這種情況下,操作系統(tǒng)不會報告IP地址沖突,也不會報告MAC地址沖突。ARP -S的捆綁被用戶輕易突破。
為什么在WINDOWS 2000下用ARP -S做IP+MAC捆綁會無效呢?
高手做了詳細的描述:“對于ARP表,W2K系統(tǒng)是通過內(nèi)建的SNMP來進行管理的,不管你的SNMP服務(wù)是否開啟,呵呵,奇怪吧?先我也一樣很奇怪ARP這個程序是如何運行的,因為查遍了所有MSDN的文檔都沒有涉及到ARP表讀取,修改的API。萬般無奈之下,只有看ARP的匯編代碼,才發(fā)現(xiàn)這個秘密。ARP -S命令也只是根據(jù)SNMP對應(yīng)的OID接點的ARP表規(guī)范的ARP類型由3(動態(tài))修改成4(靜態(tài)),但是低層的TCP/IP協(xié)議棧在收到ARP包以后修改SNMP對應(yīng)的ARP表,根本就沒有檢查其類型,這也是ARP -S命令無效的原因?!?/p>
六、MAC地址帶來的網(wǎng)絡(luò)安全問題
修改IP和MAC都很容易,這不可避免的帶來了安全問題,下面分別以的IP+MAC綁定、端口和MAC捆綁和虛擬路由器這3種情況討論,這里討論的綁定可以是WIN主機也可以是路由交換設(shè)備。
情況1、簡單的IP+MAC綁定
前面介紹了ARP -S靜態(tài)ARP綁定無效的情況,使用“ARP SERVER”按一定的時間間隔廣播網(wǎng)段內(nèi)所有主機的正確IP-MAC映射表,可以解決這個問題。不過ARP綁定在WIN2003下卻是有效果的,在LINUX下也有效果,不僅如此,個人防火墻如ZoneAlarm等也有MAC過濾功能。在交換機上也可以做類似綁定,增加靜態(tài)ARP綁定以防止IP地址盜用(類似這樣的命令arp 1.1.1.1 0001.0001.1111 ARPA)。設(shè)置完成之后,如果非法用戶把地址改為1.1.1.1,它發(fā)送到路由器的包正常,但是從目標(biāo)服務(wù)器2.1.1.1返回的數(shù)據(jù)包在路由器上轉(zhuǎn)發(fā)的時候,目標(biāo)MAC地址將總是設(shè)為0001.0001.1111,非法用戶不能接收。
突破方法:修改MAC地址很容易,在Windows網(wǎng)絡(luò)連接設(shè)置修改網(wǎng)卡的配置,在“高級”頁面中找到NetworkAddress設(shè)置為指定的值即可。
情況2、端口和MAC地址捆綁認證
如果限制了指定端口只能被特定MAC地址的機器,用戶若更改了MAC地址端口將會進入不可用狀態(tài)。交換機端口上首次連接的PC的MAC地址將會記錄到交換機中,成為唯一能夠使用該端口的MAC地址。如果該PC更換MAC地址,默認將會使用端口置于shutdown狀態(tài),無法與網(wǎng)絡(luò)連通。
突破方法:
1、代理服務(wù)器。用戶在同一VLAN內(nèi)能夠?qū)ν庠L問的主機上安裝代理服務(wù)器,通過代理訪問。
2、巧妙運用MAC地址重復(fù)。在要求進行端口和MAC地址認證的交換機中的一個端口下,用戶私自接一個HUB或者交換機。再將幾臺PC連在這個HUB或是交換機上,并將幾臺PC的IP和MAC地址設(shè)的完全一致。結(jié)果是多臺PC可以同時上網(wǎng),只需要一個人包月就行了。先將MAC設(shè)成一樣的,再改IP。這樣,機器發(fā)出的免費ARP包被其它同IP主機收到時,那些主機發(fā)現(xiàn)MAC和自己的一樣,就會認為是自己發(fā)的了。在windows系統(tǒng)下就不會彈出“IP地址沖突”提示框。爭用的情況會有丟包現(xiàn)象出現(xiàn),但不太會影響使用的。至少我親身感受是這樣,有時網(wǎng)頁打不開,再刷新一下就可以了。
情況3、虛擬MAC地址挑戰(zhàn)傳統(tǒng)寬帶認證管理
包括MAC捆綁在內(nèi)的所有寬帶認證管理手段,它們都有個共同的目的,就是在某一時刻,只允許一臺計算機上線,如果能虛擬一個路由器,這個虛擬的路由器擁有唯一的MAC,它取代物理代理服務(wù)器,完成認證過程、同時提供網(wǎng)絡(luò)地址轉(zhuǎn)換功能,不就可以突破MAC地址綁定解決共享上網(wǎng)問題了嗎!HomeShare就是這樣一個共享軟件,使用單網(wǎng)卡共享方式,不需要設(shè)置專用的服務(wù)器。下圖是HomeShare組網(wǎng)網(wǎng)絡(luò)圖,可以看出沒有服務(wù)器或者路由設(shè)備。
HomeShare虛擬的路由器有3個特點:
1、和認證方式無關(guān)的特點。網(wǎng)絡(luò)中誰先開機誰執(zhí)行登錄認證,即使認證手段改變也不影響共享上網(wǎng)。
2、虛擬主機的特點。這個主機可以設(shè)置MAC地址,也就是說:對外無論誰先撥號,服務(wù)商檢測到的是已經(jīng)注冊的唯一的合法的MAC,輕松突破服務(wù)商IP+MAC捆綁或者MAC+端口捆綁;當(dāng)服務(wù)器關(guān)機后,其它電腦將會自動成為服務(wù)器,保證網(wǎng)絡(luò)可以繼續(xù)使用,這樣可以實現(xiàn)無縫切換:當(dāng)服務(wù)器關(guān)機,客戶機切換到服務(wù)器的過程中,可以保證客戶機中正在進行中的游戲不會中斷。無縫切換已經(jīng)在大多數(shù)游戲中測試過,包括CS、Quake、聯(lián)眾世界等。
3、HomeShare虛擬的路由器提供網(wǎng)絡(luò)地址轉(zhuǎn)換(NAT)功能,實現(xiàn)共享上網(wǎng)和內(nèi)部網(wǎng)絡(luò)資源共享,而且是通過廣播來完成的,客戶機不需要復(fù)雜的設(shè)置就可以上網(wǎng)。網(wǎng)絡(luò)中所有的計算機使用自己真實的MAC地址和虛擬主機的虛擬MAC通訊,完成數(shù)據(jù)交換。毫無疑問,HomeShare虛擬的路由器給傳統(tǒng)的寬帶認證管理帶來了安全問題。
聯(lián)系客服