(一)ARP工作原理,、ARP攻擊分析敘述: 隨著網(wǎng)絡(luò)設(shè)備在接入市場的應(yīng)用也越來越多,;同時遇到的問題也越來越多樣,其中最讓人頭疼的就是ARP的問題,。 眾所周知,,ARP的基本功能就是在以太網(wǎng)環(huán)境中,,通過目標設(shè)備的IP地址,,查詢目標設(shè)備的MAC地址,以保證通信的順利進行,。但由于ARP的廣播,、動態(tài)學(xué)習(xí)等特性注定了它不是一種安全的協(xié)議,所以在實際應(yīng)用中,,會由于各種各樣的原因使ARP學(xué)習(xí)失敗,,從而影響網(wǎng)絡(luò)的互通性,并進而影響用戶的業(yè)務(wù)穩(wěn)定運行,。 由于ARP處于數(shù)據(jù)鏈路層,,處于整個OSI開放式七層模型的倒數(shù)第二層,所以除了HUB等極少數(shù)的,、幾乎所有跟以太網(wǎng)接口有關(guān)的設(shè)備,,都涉及到ARP處理的問題。如果ARP問題處理不好,,帶來的影響也是非常巨大的,。 在整個internet網(wǎng)絡(luò)體系中,網(wǎng)絡(luò)設(shè)備主要分為兩類:一類就是安裝有各種操作系統(tǒng)平臺的PC,、服務(wù)器等host,;而另外一類就是負責(zé)網(wǎng)絡(luò)互聯(lián)的路由器、交換機,、防火墻等數(shù)據(jù)通訊設(shè)備,。這些設(shè)備由于自身所處的網(wǎng)絡(luò)位置的不同、安全穩(wěn)定程度的不同,、服務(wù)的不同,,在ARP機制的處理上也不盡相同,當(dāng)然本文不是要全面闡述ARP的原理和實現(xiàn),,只是希望能夠說明并解決或規(guī)避在我們的應(yīng)用環(huán)境中出現(xiàn)的問題――我們考慮的范圍是Win2K/XP主機和路由器,、交換機。 1 ARP基礎(chǔ)知識 一般的,,正常的ARP過程只需ARP Request和ARP Response兩個過程,,簡單的說就是一問一答,如下: 這記錄了局域網(wǎng)內(nèi)一臺IP為192.168.19.180的PC與網(wǎng)關(guān)設(shè)備(IP為192.168.1.6)之間的ARP交互,該PC發(fā)送請求之后,,在0.000434秒之后,,網(wǎng)關(guān)設(shè)備做出了回應(yīng),此時路由器就學(xué)習(xí)到了對方的ARP信息:如下: 我們關(guān)注的是ARP的過程,,而不是結(jié)果,;來看一下ARP Request: 從[Ethernet Header]可以看出,ARP請求的目標地市是全F,,也就是廣播地址,;因為在請求之前,本PC不知道對方的MAC地址,,為了確保ARP Request能夠讓對方收到,,以廣播形式方式是很自然的選擇。在[ARP]中可以看到,,發(fā)送的源IP和源MAC都是本PC的網(wǎng)卡設(shè)置值,,這是已知參數(shù);目的IP地址是我要請求的地址,,而目的MAC地址是全0,,用于表示本PC不知道該參數(shù),暫時忽略/ignore,。 網(wǎng)關(guān)設(shè)備在收到ARP Request之后,,會首先讀取Sender的IP和MAC地址,并在存入自己的緩沖中,,以備后用,。因為ARP請求畢竟是廣播性質(zhì)的,如果每次通訊都要完成一個ARP的流程,,對于以太網(wǎng)的壓力是非常巨大的,,為了盡可能減少這種廣播的負面影響,這里引入了緩沖機制,,這就是ARP Table,。 ARP Response又是怎樣回應(yīng)的呢? 先看[Ethernet Header],,可以看到以太網(wǎng)目的MAC地址為PC的MAC地址,,因為網(wǎng)關(guān)設(shè)備只要把回應(yīng)的信息發(fā)送給請求者即可,局域網(wǎng)內(nèi)的其他主機是沒有必要同步知道的,,這很好理解,。在[ARP]中,網(wǎng)關(guān)設(shè)備把自己的MAC地址填充在ARP Response中,,發(fā)送給原請求者,。 當(dāng)然收到ARP Response之后也會把這個ARP信息緩存下來,,這樣一個ARP的過程就完成了。從中可以看出,,無論是哪方先發(fā)起ARP Request,,最終雙方都會得到對方的MAC地址信息的。這也是處于減少網(wǎng)絡(luò)上不必要流量的考慮,。 2 免費ARP 整個ARP的體系里基本上就是由ARP Request和Response組成的,,從上面的描述中,可以看出Request就是告知對方“我要什么”,,而Response是回答“我是什么”,。但有些時候也會例外,他們雖然從形式上還是Request和Response的,,但它們通常不會不是一問一答的,,而是只有其中的一部分,,所以通常被稱為免費ARP或無為ARP(Gratuitous ARP),。 從作用而言,它們主要是可以分為兩類: 1,、以ARP Request的形式發(fā)送廣播,,請求自己的MAC地址,目的是探測局域網(wǎng)中是否有跟自己IP地址相同的主機,,也就是常說的IP沖突,,如下: 正常情況下,這樣的報文是不會有回復(fù)的,,如果有,,則說明有沖突發(fā)生。 2,、以ARP Response的形式發(fā)送廣播,,它通常只是為了把自己的ARP信息通告/更新給局域網(wǎng)全體,這種Response不需要別人請求,,是自己主動發(fā)送的通告,。報文結(jié)構(gòu)如下。 這兩種ARP幀雖然都是廣播發(fā)送的,,但目的不同,,從幀結(jié)構(gòu)上來說,前者注重的是Target Internet Address,,而后者注重的是Sender Hardware Address和Sender Inteernet Address,。 RG NBR系列路由器就采用上述第二種方式來發(fā)布自己的免費ARP,來防止網(wǎng)內(nèi)PC機被其它中毒機器惡意修改其ARP Cache中保存的網(wǎng)關(guān)正確MAC地址信息,; 3 觸發(fā)ARP動作的事件 當(dāng)然,,如果windows的應(yīng)用需要通過IP與別的IP地址進行通訊,,而且本機ARP Table中沒有對方的相應(yīng)cache時,就會觸發(fā)ARP自動學(xué)習(xí),。 另外,,通過實驗觀察,我們發(fā)現(xiàn)Wind2K/XP在設(shè)置/修改IP,、網(wǎng)卡禁用/啟用,、網(wǎng)線拔插、系統(tǒng)重啟的時候,,都會連續(xù)發(fā)送三次免費ARP Request,,目的顯然是為了判斷網(wǎng)絡(luò)上是否存在IP地址沖突。 對于RG Routers和Layer 3 Switch來說,,如果存在上層IP通訊,,那么自然需要觸發(fā)ARP學(xué)習(xí)過程,這一點跟windows是完全相同的,。 在以太網(wǎng)端口設(shè)置/修改IP時,,路由器、Layer3 Switch會自動發(fā)送免費ARP Request報文來探測是否有IP沖突,;而在端口shut/no shut,、端口線纜拔插、系統(tǒng)重啟的時候,,路由器又會自動發(fā)送免費ARP Response報文,,用以把自己的ARP信息通告全體主機。 同時,,無論是那種免費ARP,,路由器、Layer 3 Switch都只發(fā)送一次,。 很顯然,,windows的ARP觸發(fā)事件跟路由器、Layer 3 Switch是有差別的: 1,、Windows/PC作為網(wǎng)絡(luò)上的一個主機,,它可能只是跟少數(shù)的幾個PC進行信息交互,所以它在非必要情況下不(通過免費ARP Response)把自己的ARP信息廣播給所有主機是合理,、也是明智的,。路由器、Layer 3 Switch雖然不直接參與應(yīng)用層的處理,,但它通常是一個局域網(wǎng)的網(wǎng)關(guān),,肩負則所有主機的數(shù)據(jù)轉(zhuǎn)發(fā)任務(wù),也就是說幾乎所有的主機跟路由器,、Layer 3 Switch之間都會存在ARP交互,,與其被動的響應(yīng)ARP請求,,還不如主動的把自己的ARP信息廣播給所有主機,這對于降低路由器,、Layer 3 Switch的工作負荷,、減少網(wǎng)絡(luò)帶寬占用都是有好處的。 2,、從免費ARP報文的發(fā)送數(shù)量來看,,Windows發(fā)送的免費ARP都是3次,這有利于確保對方成功收到,,同時也有利于減少其他主機的免費ARP干擾,;而RG路由器、Layer 3 Switch僅僅發(fā)送一次,,而且任何情況都不再重復(fù),,這顯然是不夠的。 4 異常情況下的ARP處理機制 常見的局域網(wǎng)異常狀況有:IP地址沖突,、MAC地址冒用,、ARP欺騙等,極端情況下還可能IP+MAC同時冒用,,下面我們就來具體分析,。 4.1 IP地址沖突 1,、網(wǎng)關(guān)Router設(shè)置IP成某PC的地址 有些時候,,如用戶網(wǎng)絡(luò)使用windows做代理(NAT),現(xiàn)在要用一個路由器 ,、Layer 3Switch(IP地址與網(wǎng)關(guān)windows相同)來替換當(dāng)網(wǎng)關(guān),;當(dāng)兩者共存時,就會出現(xiàn)Windows IP地址與路由器,、Layer 3 Switch沖突的情況,。當(dāng)然還有其他的可能性。 這里,,如果路由器,、Layer 3 Switch是調(diào)試完之后接入局域網(wǎng)的,按照前面的描述,,RG路由器,、Layer 3 Switch直接發(fā)送1個免費ARP Response,這樣就強制局域網(wǎng)內(nèi)的PC學(xué)習(xí)到路由器,、Layer 3 Switch SVI接口的ARP信息,,此時原有Windows網(wǎng)關(guān)沒有任何響應(yīng),工作也正常,;但此時局域網(wǎng)內(nèi)的PC關(guān)于網(wǎng)關(guān)IP的ARP內(nèi)容卻發(fā)生了改變,,路由器,、Layer 3 Switch的SVI接口成為了實際意義上的網(wǎng)關(guān)。 如果路由器,、Layer 3 Switch是接入局域網(wǎng)之后才開始配置和調(diào)試的,,那么路由器、Layer3 Switch SVI接口設(shè)置IP之后會先發(fā)送1個免費ARP Request報文,,探測有無地址沖突,,如果有,則強制發(fā)送免費ARP Response,;此時Windows主機提示地址沖突,,網(wǎng)卡變?yōu)椴豢捎脿顟B(tài),而路由器,、Layer 3 Switch SVI接口則成為了實際的網(wǎng)關(guān),。 2、Windows設(shè)置IP成網(wǎng)關(guān)路由器,、Layer 3 Switch SVI的IP地址 在網(wǎng)吧,、企業(yè)網(wǎng)環(huán)境中,上點后,,路由器工作正常,,局域網(wǎng)中的PC學(xué)習(xí)到的網(wǎng)關(guān)ARP信息就是路由器、Layer 3 Switch對應(yīng)端口的IP和MAC,;假設(shè)此時內(nèi)網(wǎng)中有一個Windows PC修改自己的IP地址,,不慎和網(wǎng)關(guān)IP沖突,會發(fā)生什么呢,? 從這個抓包情況看,,PC修改IP之后,發(fā)送免費ARP Request,,看是否有地址沖突,,這顯然是有的,從第二個包就可以看出來,,RG Router,、Layer 3 Switch SVI回復(fù)了一個ARP Response;此時PC桌面上提示IP地址沖突,,網(wǎng)卡處于不正常工作狀態(tài),,用戶一般會修改IP地址再次嘗試; 而緊隨其后的是,,路由器,、Layer 3 Switch發(fā)送了1個免費ARP Request包,用來判斷沖突是否繼續(xù)存在,?當(dāng)然由于Windows對于網(wǎng)卡的管理,,導(dǎo)致沖突自動消失,,路由器、Layer 3 Switch也就不再有后續(xù)動作了,。但如果此時沖突繼續(xù)存在呢,?從上面的實驗來看,路由器,、Layer 3 Switch會強制發(fā)送1次免費ARP Response,,用以讓局域網(wǎng)的主機確認,我才是真正的網(wǎng)關(guān),。 顯然,,應(yīng)付普通的非惡意的IP地址沖突,路由器,、Layer 3 Switch現(xiàn)行的機制應(yīng)足夠了,。 4.2 MAC地址冒用 不管是處于什么目的,用戶可能通過某種手段重新燒錄自己網(wǎng)卡的MAC地址,,如果這個地址正好和路由器,、Layer 3 Switch的網(wǎng)關(guān)IP相同,會出現(xiàn)什么情況呢,? 由于條件的限制,,這個實驗沒有做成,但我們可以分析一下: 根據(jù)前面的分析,,網(wǎng)絡(luò)設(shè)備是通過發(fā)送免費ARP Request報文,,查詢自己IP的對應(yīng)MAC地址來確認是否存在沖突的,在單純的MAC地址冒用的情況下,,上述機制是探測不到任何異常的,。 但是當(dāng)兩個設(shè)備的MAC地址相同時,最直接的影響就是局域網(wǎng)交換機(通常為二層)的MAC Table中,,有兩個端口學(xué)習(xí)到的MAC地址是完全相同的,這有點類似環(huán)路發(fā)生的現(xiàn)象,;但這確實不是環(huán)路,,因為交換機生成樹的BPDU報文不可能從其中的一個端口發(fā)出,從另外一個端口收到,,所以STP是探測不出什么的,,也就是說這兩個端口還是會正常工作的。 此時交換機會做的就是,,把發(fā)往該MAC地址的以太網(wǎng)幀同時發(fā)送到兩個端口上,,以求盡可能的數(shù)據(jù)丟失;這看起來有點象“端口鏡像”,。 看來,,單純的MAC地址冒用/沖突是不會到路由器,、Layer 3 Switch造成什么直接的影響的,不過它會把所有經(jīng)過網(wǎng)關(guān)路由器的流量復(fù)制一份到某個特定的端口,,如果這個端口連接的某個主機別有所圖的話,,后果還是很嚴重的。不過這屬于信息安全的范圍了,,這里不再詳細討論,。 4.3 ARP欺騙 ARP自動學(xué)習(xí)的目的,就是通訊的雙方主機互相請求/告知MAC地址,,并以此完成二層的以太網(wǎng)幀交換,,由于通訊的雙向性,很顯然如果任何一方的ARP信息是空或者錯誤的,,那么通訊就會失敗,。而ARP欺騙的目的就是頻繁的發(fā)送錯誤消息欺騙網(wǎng)絡(luò)通信的任何一方,最終導(dǎo)致不能正常通信,。 那么怎樣防止ARP欺騙呢,?從根本上說就是雙方的IP-MAC地址對應(yīng)信息要正確,之前我們說過,,ARP是自動學(xué)習(xí)的,,是通過ARP Request和Response報文的交互,由別人告知的,,正是這個特性讓ARP欺騙有了可乘之機,,顯然最有效的方法就是不采用“學(xué)習(xí)”機制,現(xiàn)在很多設(shè)備廠商都是這么實現(xiàn)的,,但配置靜態(tài)ARP工作量非常大,,后期維護也極不方便,假設(shè)局域網(wǎng)內(nèi)主機數(shù)量為N,,那么最少要配置的ARP條目有N+(N-1)=2N-1個,;如果N=200,也就是說最后總共要配置400條,,這還不算原始IP,、MAC地址信息的收集、校對和維護工作,。如果要全網(wǎng)ARP綁定的話,,總條目可達N(N-1),那就更驚人了,。 是否可以避開靜態(tài)ARP綁定這種煩瑣的方式呢,?對Windows主機是沒有辦法的;但我們可以從路由器、Layer 3 Switch上著手,,要回答這個問題,,首先要弄清ARP欺騙的具體過程,先看實驗拓撲結(jié)構(gòu): 由于很難找到合適的病毒重現(xiàn)真正的ARP欺騙,,我們采用安裝聚生網(wǎng)管(也叫Netsense,、P2P終結(jié)者)來模擬,其實現(xiàn)的基礎(chǔ)就是進行ARP欺騙,。 在這個環(huán)境中,,使用路由器作為網(wǎng)關(guān),進行NAT操作,,內(nèi)網(wǎng)中連接兩個PC,,其中一臺安裝聚生網(wǎng)管,進行ARP欺騙,。開始時,,PC的ARP表中192.168.1.6對應(yīng)的MAC地址是正確的,然后啟動聚生網(wǎng)管,,來看看現(xiàn)象: 1,、第一階段,ARP Cheater會發(fā)送大量ARP Request來逐個掃描內(nèi)網(wǎng)中的PC: 正常情況下局域網(wǎng)PC會回應(yīng)ARP Request,,ARP Cheater就是靠這個來確認并收集內(nèi)網(wǎng)中已經(jīng)啟動的PC的,,并在本地形成一個數(shù)據(jù)庫。 2,、第二階段,,Cheater就開始進行實質(zhì)的欺騙了,其過程為就是向真實網(wǎng)關(guān)和PC同時發(fā)送免費ARP Response,,強行更新其ARP Table,。 其中,發(fā)送給PC的為: 顯然,,Cheater強行通告給PC的ARP內(nèi)容是錯誤的,,因為00-0D-60-8C-0D-C9和192.168.1.6分別是Cheater的MAC地址和路由器的網(wǎng)關(guān)IP。 其次,,發(fā)給網(wǎng)關(guān)路由器的為: 在這個信息中,,00-00-E2-58-AC-EA和192.168.1.158都是對應(yīng)的普通PC,是一個正確的信息,,Cheater代替PC向網(wǎng)關(guān)發(fā)送ARP強制更新信息,是為了確保通訊能夠正常完成,。 欺騙完成之后,,局域網(wǎng)中的所有PC都根據(jù)錯誤的ARP信息把數(shù)據(jù)包發(fā)給ARP Cheater,Cheater再通過路由器轉(zhuǎn)發(fā)到公網(wǎng)真正的服務(wù)器上,;當(dāng)數(shù)據(jù)包從公網(wǎng)返回到路由器之后,,路由器會把數(shù)據(jù)包直接返回到PC,,中間不再經(jīng)過ARP Cheater(如果需要,也可以經(jīng)過ARP Cheater),,參閱前面的拓撲結(jié)構(gòu)圖,。 這樣,ARP欺騙就完成了,,PC上面關(guān)于網(wǎng)關(guān)的ARP信息發(fā)生了改變,;不過為了“鞏固”成果,聚生網(wǎng)管每隔2秒再次進行欺騙,。 當(dāng)然,,聚生網(wǎng)管不算是一種病毒、木馬或者惡意程序,,只是它利用了ARP欺騙,,把所有的局域網(wǎng)所有的主機流量都導(dǎo)入的自己的網(wǎng)卡上,籍此,,聚生網(wǎng)管就可以進行相應(yīng)的過濾和限制了,。 現(xiàn)在比較流行的竊取密碼的木馬程序就是按照這個原理來實現(xiàn)的,當(dāng)然密碼只是在用戶登陸的時候才輸入的,,所以木馬程序會故意讓自己的網(wǎng)卡失效又立刻恢復(fù),,此時,內(nèi)網(wǎng)的用戶以為是網(wǎng)絡(luò)質(zhì)量不好掉線,,接著就是重新登陸,、輸入密碼…… 上面兩種情況雖然是ARP欺騙,但多數(shù)時間網(wǎng)絡(luò)還是正常運行的,;如果只是要讓網(wǎng)絡(luò)中斷,,那么ARP Cheater只需頻繁發(fā)送免費ARP Response即可,當(dāng)然里面包含的Sender Address是錯誤的,。 4.4 如何應(yīng)對ARP欺騙,? 前面提到,ARP欺騙可能會欺騙網(wǎng)關(guān)路由器或者內(nèi)網(wǎng)的PC,,下面我們就分這兩種情況來分析一下,。 4.4.1 避免ARP欺騙PC 要找到應(yīng)對方法,必須先識別出ARP欺騙的特點: 1,、ARP欺騙發(fā)生時 無論出于什么目的,, ARP欺騙最開始、也是最關(guān)鍵的一步就是通過免費ARP Response信息,,發(fā)送錯誤的網(wǎng)關(guān)ARP信息給局域網(wǎng)主機,,其方法不外乎兩種: n 在本網(wǎng)段首先發(fā)送大量的ARP Request掃描,通過Response報文收集當(dāng)前活動的主機,隨后給每個主機發(fā)送免費的ARP Response,;在這種情況下,,路由器只能看到從一個固定的MAC地址發(fā)出大量ARP請求廣播,而且這個過程可能會周期性重復(fù),。 n 第二,,ARP Cheater不需要逐個找局域網(wǎng)的主機IP,它直接冒充網(wǎng)關(guān),,通過免費ARP Response廣播通告全網(wǎng),;在這種情況下,路由器上應(yīng)該可以觀察到免費ARP Response報文,,其Sender Internet Addr信息就是自己的IP地址,,而且從上面的實驗中可以看到,這種免費ARP Response廣播報文是非常頻繁的,。 無論是那種情況,,其目的都是欺騙PC,路由器雖然可能通過某些特征判斷ARP欺騙的發(fā)生,,但是根本無法制止,,因為路由器對該PC是沒有控制權(quán)的。 2,、ARP欺騙發(fā)生后 ARP欺騙發(fā)生后的情況是怎樣呢,?當(dāng)然是PC的ARP表被篡改了,當(dāng)然我們可以通過手工方式來清除ARP表項重新學(xué)習(xí),,但ARP欺騙是不斷的重復(fù)進行的,,人工維護的工作量恐怕遠遠大于前面說的“靜態(tài)ARP”,顯然可行性為零,。 既然手工方式不行,,那么自動方式怎么樣呢?跟ARP Cheater一樣,,我們可以考慮讓網(wǎng)關(guān)路由器或者其他專用主機來發(fā)送免費ARP廣播,,把正確的網(wǎng)關(guān)ARP信息通報給全網(wǎng)。如果網(wǎng)內(nèi)的ARP欺騙不是很頻繁,,這種是方法可行,;但如果象聚生網(wǎng)管這樣的情況,ARP欺騙為每2秒一次,,要讓PC的ARP表正確,,路由器或?qū)S弥鳈C發(fā)送的免費ARP Response廣播必須更頻繁,即便如此,,內(nèi)網(wǎng)PC的ARP表可能還會處于頻繁變動的過程中,,導(dǎo)致其正常通訊也會隨之而產(chǎn)生丟包情況,,同時整個網(wǎng)絡(luò)上會因此而充滿大量的以太網(wǎng)廣播,,我想這事誰也不愿看到的,。RG Router的內(nèi)網(wǎng)口上 arp gratuitous interval xx 的配置實際上就是定期向網(wǎng)內(nèi)發(fā)送 arp Response; 綜上,,可以得出結(jié)論,,對于內(nèi)網(wǎng)主機的ARP欺騙,作為路由器本身基本上是無能為力的,,至少效果非常有限,。所以在對付ARP欺騙的時候,PC還是乖乖的進行靜態(tài)ARP綁定措施,。比如在PC機上配置autoexec.bat批處理文件: @echo off Arp –d Arp –s 192.168.1.1 00-d0-0f-23-44-89 使得在PC機上能夠靜態(tài)綁定網(wǎng)關(guān)的正確MAC地址,,防止網(wǎng)關(guān)欺騙; 在RG 2126G交換機上可以采用在端口下,,anti-arp-spoofing ip xxx.xxx.xxx.xxx xxx.xxx.xxx.xxx是網(wǎng)關(guān)地址,;RG 2126G將阻止源IP是本網(wǎng)段網(wǎng)關(guān)地址的報文從這個端口進入;達到防止該端口上連接的PC發(fā)出對其它PC進行網(wǎng)關(guān)欺騙的ARP Response,、ARP Request報文,; 4.4.2 避免ARP欺騙路由器 跟PC的情況不同,由于路由器,、Layer 3 Switch是一款三層設(shè)備,,幾乎沒有什么上層應(yīng)用會跟內(nèi)網(wǎng)主機直接通訊,所以它的ARP表項通常不是主動請求獲得的,,而是被動學(xué)習(xí)到的,,比如收到ARP Request或者免費的ARP Response前者是正常情況,不在我們討論范圍之內(nèi),;而后者就是ARP Cheater欺騙網(wǎng)關(guān)路由器的手段,。 還是分為兩個階段來分析: 1、ARP欺騙發(fā)生時 通常情況下下,,ARP Cheater是通過單播性質(zhì)的免費ARP Response把錯誤的主機ARP信息強制通告路由器,、Layer 3 Switch的,而且由于內(nèi)網(wǎng)的主機數(shù)量眾多,,路由器,、Layer 3 Switch每次會收到大量的免費ARP Response單播報文。它們的Sender Internet Addr分別是局域網(wǎng)的主機IP地址,,但是Sender Hardware Addr卻都是ARP Cheater的網(wǎng)卡MAC地址,。 顯然,路由器,、Layer 3 Switch完全可以通過免費ARP Response報文的特征來確定欺騙是否發(fā)生,,但當(dāng)確定的同時,,ARP欺騙的結(jié)果是已經(jīng)造成了的。 2,、ARP欺騙發(fā)生后 由于路由器,、Layer 3 Switch的ARP表項是被動學(xué)習(xí)的,所以在ARP欺騙發(fā)生之后,,路由器,、Layer 3 Switch必須自己主動的去查詢正確的ARP信息,方法恐怕只有一種:就是根據(jù)現(xiàn)有ARP表項中的IP地址列表,,強制性的逐一發(fā)送ARP Request,,通過對方的Response信息來更新校正自己的ARP Table。顯然這個工作量是很大的,。尤其是在ARP Cheater的欺騙非常頻繁的時候,,路由器、Layer 3 Switch的ARP“自我校正”機制顯得太蒼白無力了,。 4.5 應(yīng)對ARP欺騙的其他方法 從前面的分析來看,,單純的通過ARP機制本身來防止ARP欺騙,幾乎是不可能完成的任務(wù),。那么還有什么方法來避免呢,? 4.5.1 硬件角度 路由器畢竟是一種三層設(shè)備,對于ARP二層協(xié)議的支持和處理總是有限的,;我們是否可以從局域網(wǎng)交換機來入手呢,? 因為ARP發(fā)生之后的結(jié)果(錯誤的ARP信息)是存儲在網(wǎng)關(guān)路由器和主機中的,跟交換機沒有任何關(guān)系,,所以要通過交換機來處理,,重點就是一個字:“防”。從前面的分析來看,,無論怎樣欺騙,,其關(guān)鍵的特征就是發(fā)送免費ARP Response報文,而且ARP字段的Sender信息與其自身MAC地址不相符合,,如果二層以太網(wǎng)交換機能夠進行ARP報文合法性的判斷,,那么就自然可以進行相應(yīng)的屏蔽了; 這個技術(shù)看起來不是很難事先,,但涉及到交換機ASIC芯片的支持和軟件功能的增加,,其可行性和性價比還需要考證;同時需要把寬帶路由器和交換機作為一個整體推給使用者?,F(xiàn)在銳利網(wǎng)絡(luò)在網(wǎng)吧等寬帶市場中的路由交換一體化解決方案就是基于這個原理的,。 這種思路應(yīng)該可以從源頭上解決ARP欺騙的發(fā)生,但對于交換機的要求比較高,,不僅是功能方面,,還同時涉及到性能,、穩(wěn)定性和性價比等特性。 在RG 27,、29系列交換機上就是從硬件架構(gòu)上進行設(shè)計,,使得交換機能夠根據(jù)報文類型,比如對報文類型Type是0X0806的ARP報文會檢查其Source IP和Source MAC,,根據(jù)在該端口上綁定的IP地址與相應(yīng)的MAC地址來將攻擊者的欺騙性ARP Response過濾掉,,從而達到從根源上防止了ARP Attacking的實現(xiàn); 4.5.2 軟件角度 單純的利用ARP特性是解決不了ARP欺騙的問題的,,那么在軟件上還有什么出路呢?方法還是有的,,可以看一下艾泰的解決方案: 既然ARP欺騙最終影響的是ARP表項的內(nèi)容,,而表中的內(nèi)容又是動態(tài)學(xué)習(xí)的,所以ARP機制才不安全,,那么我為何不摒棄ARP自動學(xué)習(xí)這種機制呢,?當(dāng)然我們說的不是進行手工靜態(tài)ARP綁定。其具體處理方法是把ARP表項的相關(guān)信息放到NAT的表項中一起處理,。 原來NAT表項中的主要內(nèi)容有:NAT轉(zhuǎn)換前源IP地址,、轉(zhuǎn)換前源TCP/UDP端口、轉(zhuǎn)換后源IP地址,、轉(zhuǎn)換后TCP/UDP端口,、目的IP地址、目的端口等6項信息,,而轉(zhuǎn)換前IP地址和MAC地址的對應(yīng)關(guān)系是靠ARP的動態(tài)學(xué)習(xí)機制來實現(xiàn)的,。 現(xiàn)在,NAT表項的內(nèi)容調(diào)整為:NAT轉(zhuǎn)換前源IP地址,、轉(zhuǎn)換前源MAC地址,、轉(zhuǎn)換前源TCP/UDP端口、轉(zhuǎn)換后源IP地址,、轉(zhuǎn)換后TCP/UDP端口,、目的IP地址、目的端口等7項信息,。這個新增加的源MAC地址可以不作為NAT判斷的依據(jù),,其作用是讓數(shù)據(jù)包從公網(wǎng)一側(cè)回到路由器,經(jīng)過NAT轉(zhuǎn)換之后,,能夠送回到正確的PC主機,。 那么如何才能保證PC主機的數(shù)據(jù)包不受ARP欺騙的影響,正確的送到路由器呢,?很簡單,,進行手工的靜態(tài)ARP綁定,。前面分析過,對于ARP欺騙PC主機的情況,,路由器是無能為力的,。 這樣,PC可以根據(jù)靜態(tài)(正確)的ARP信息把數(shù)據(jù)包發(fā)到網(wǎng)關(guān)路由器,,路由器在記錄必要的信息轉(zhuǎn)存為NAT cache的時候,,把該以太網(wǎng)幀的源MAC地址也異同記錄,寫到NAT cache中,,作為數(shù)據(jù)包返回時的參考,。 這種方式的優(yōu)點是不用一來交換機,避免ARP的欺騙,,但PC主機還是需要進行手工的ARP綁定,。可以說這是“硬件角度”的一種折中方案,。其缺點是NAT存儲和判斷的因素較多,,必然影響性能;而且這種機制只能避免PC和路由器之間的通信免受ARP欺騙的干擾,,對于PC與PC之間的通訊則無能為力了,。 4.5.3 消極角度 什么是消極角度?簡單的說就是沒有辦法了,,我不用ARP了,,那么在以太網(wǎng)中怎么通訊?PPPoE,!在理論上,,這的確可以完全規(guī)避ARP的問題,但在實際應(yīng)用的時候,,需要讓路由器來充當(dāng)PPPoE服務(wù)器,,這樣所有局域網(wǎng)通訊的流量都要經(jīng)過路由器進行三層轉(zhuǎn)發(fā)。對于路由器的處理壓力可想而知――不過確實有這種網(wǎng)絡(luò)的實際案例,,比如ISP的運維辦公網(wǎng),,但他們使用PPPoE的目的更重要的是為了網(wǎng)絡(luò)信息安全和管理。 4.6 建議 對于ARP欺騙,,僅僅從ARP本身恐怕是沒有什么好的解決方案的,,要解決或避免ARP欺騙的問題,需要動一番手術(shù)的,。 而對于普通的ARP沖突,,我到時覺得還可以加強一下: u 路由器、Layer 3 Switch在確認網(wǎng)絡(luò)中有IP沖突后,,會立刻發(fā)送1個免費ARP Request,,用以確定沖突已經(jīng)消失,,如果沖突繼續(xù)存在,則強制發(fā)送1個免費ARP Response,。 ü 是否可以考慮延時一個時間段再發(fā)送免費ARP Request,?用以避免Windows主機沒有及時處理處于“非正常”狀態(tài)的情況,; ü 其次,,如果沖突繼續(xù)存在,發(fā)送1次ARP Response,;更合理的應(yīng)該是重復(fù)進行免費ARP Request探測,,沖突存在則強制進行免費ARP Response通報,直到?jīng)_突消失,。 4.7 總結(jié) 在主要的兩類ARP問題中,,一般的非惡意地址沖突不會對路由器、Layer 3 Switch造成實質(zhì)性的影響,。而對于各種目的的ARP欺騙機制,無論是從預(yù)防還是后期干預(yù)上,,路由器都沒有直接有效的手段,? 雖然現(xiàn)在可以使用雙向的靜態(tài)ARP來避免ARP欺騙帶來的影響,但就實施和后期的維護來看,,都非常的不方便,,而且也未嘗容易出錯。 比較好的出路在于從硬件結(jié)構(gòu)上對交換機進行改良,,實現(xiàn)成本與功能的平衡,,才是防止ARP問題的根本之路。 本文出自 “探尋解決方案營銷的奧秘” 博客,,請務(wù)必保留此出處http://jimqu.blog.51cto.com/105370/108798 |
|
來自: astrotycoon > 《tcp》