對于ARP欺騙,提出幾點加強安全防範的措施。環境是主機或者網關是基于Linux/BSD的。
一、理論前提
本着“不冤枉好人,不放過一個壞人的原則”,先說說我的一些想法和理論依據。首先,大家肯定發送ARP欺騙包肯定是一個惡毒的程式自動發送的,正常的TCP/IP網絡是不會有這樣的錯誤包發送的。
這就假設,如果犯罪嫌疑人沒有啟動這個破壞程式的時候,網絡環境是正常的,或者說網絡的ARP 環境是正常的,如果我們能在犯罪嫌疑人啟動這個犯罪程式的第一時間,一開始就發現了他的犯罪活動,那麼就是人贓俱在,不可抵賴了,因為剛才提到,前面網絡正常的時候證據是可信和可依靠的。好,接下來我們談論如何在第一時間發現他的犯罪活動。
ARP欺騙的原理如下:
假設這樣一個網絡,一個Hub接了3台機器
HostA HostB HostC 其中
A的位址為:IP:192.168.10.1 MAC: AA-AA-AA-AA-AA-AA
B的位址為:IP:192.168.10.2 MAC: BB-BB-BB-BB-BB-BB
C的位址為:IP:192.168.10.3 MAC: CC-CC-CC-CC-CC-CC
正常情況下 C:arp -a
Interface: 192.168.10.1 on Interface 0x1000003
Internet Address Physical Address Type
192.168.10.3 CC-CC-CC-CC-CC-CC dynamic
現在假設HostB開始了罪惡的ARP欺騙:
B向A發送一個自己僞造的ARP應答,而這個應答中的資料為發送方IP位址是192.168.10.3(C的IP位址),MAC位址是DD-DD-DD-DD-DD-DD(C的MAC位址本來應該是CC-CC-CC-CC-CC-CC,這裡被僞造了)。當A接收到B僞造的ARP應答,就會更新本地的ARP緩存(A可不知道被僞造了)。而且A不知道其實是從B發送過來的,A這裡隻有192.168.10.3(C的IP位址)和無效的DD-DD-DD-DD-DD-DD mac位址,沒有和犯罪分子B相關的證據,哈哈,這樣犯罪分子豈不樂死了。
現在A機器的ARP緩存更新了:
這可不是小事。區域網路的網絡流通可不是根據IP位址進行,而是按照MAC位址進行傳輸。現在192.168.10.3的MAC位址在A上被改變成一個本不存在的MAC位址。現在A開始Ping 192.168.10.3,網卡遞交的MAC位址是DD-DD-DD-DD-DD-DD,結果是什麼呢?網絡不通,A根本不能Ping通C!
是以,區域網路中一台機器,反複向其他機器,特别是向網關,發送這樣無效假冒的ARP應答資訊包,NND,嚴重的網絡堵塞就開始了!網吧管理者的噩夢開始了。我的目标和任務,就是第一時間,抓住他。
不過從剛才的表述好像犯罪分子完美的利用了以太網的缺陷,掩蓋了自己的罪行。但其實,以上方法也有留下了蛛絲馬迹。盡管,ARP資料包沒有留下HostB的位址,但是,承載這個ARP包的ethernet幀卻包含了HostB的源位址。
而且,正常情況下ethernet資料幀中,幀頭中的MAC源位址/目标位址應該和幀資料包中ARP資訊配對,這樣的ARP包才算是正确的。如果不正确,肯定是假冒的包,可以提醒!但如果比對的話,也不一定代表正确,說不定僞造者也考慮到了這一步,而僞造出符合格式要求,但内容假冒的ARP資料包。
不過這樣也沒關系,隻要網關這裡擁有本網段所有MAC位址的網卡資料庫,如果和Mac資料庫中資料不比對也是假冒的ARP資料包。也能提醒犯罪分子動手了。
二、防範措施
1.建立DHCP伺服器(建議建在網關上,因為DHCP不占用多少CPU,而且ARP欺騙攻擊一般總是先攻擊網關,我們就是要讓他先攻擊網關,因為網關這裡有監控程式的,網關位址建議選擇192.168.10.2,把192.168.10.1留白,如果犯罪程式愚蠢的話讓他去攻擊空位址吧),另外所有客戶機的IP位址及其相關主機資訊,隻能由網關這裡取得,網關這裡開通DHCP服務,但是要給每個網卡,綁定固定唯一IP位址。
一定要保持網内的機器IP/MAC一一對應的關系。這樣客戶機雖然是DHCP取位址,但每次開機的IP位址都是一樣的。
2.建立MAC資料庫,把網吧内所有網卡的MAC位址記錄下來,每個MAC和IP、地理位置統統裝入資料庫,以便及時查詢備案。
3.網關機器關閉ARP動态重新整理的過程,使用靜态路郵,這樣的話,即使犯罪嫌疑人使用ARP欺騙攻擊網關的話,這樣對網關也是沒有用的,確定主機安全。
網關建立靜态IP/MAC捆綁的方法是:建立/etc/ethers檔案,其中包含正确的IP/MAC對應關系,格式如下:
192.168.2.32 08:00:4E:B0:24:47
然後再/etc/rc.d/rc.local最後添加:
arp -f 生效即可
4.網關監聽網絡安全。網關上面使用TCPDUMP程式截取每個ARP程式包,弄一個腳本分析軟體分析這些ARP協定。ARP欺騙攻擊的包一般有以下兩個特點,滿足之一可視為攻擊包報警:第一以太網資料標頭的源位址、目标位址和ARP資料包的協定位址不比對。
或者,ARP資料包的發送和目标位址不在自己網絡網卡MAC資料庫内,或者與自己網絡MAC資料庫 MAC/IP不比對。這些統統第一時間報警,查這些資料包(以太網資料包)的源位址(也有可能僞造),就大緻知道那台機器在發起攻擊了。
5.偷偷摸摸的走到那台機器,看看使用人是否故意,還是被任放了什麼木馬程式陷害的。如果後者,不聲不響的找個借口支開他,拔掉網線(不關機,特别要看看Win98裡的計劃任務),看看機器的目前使用記錄和運作情況,确定是否是在攻擊。
本文轉自 fish_yy 51CTO部落格,原文連結:http://blog.51cto.com/tester2test/138692,如需轉載請自行聯系原作者