為了不影響學校局域網內其他計算機的正常上網,文本實驗只在一個計算機室的子網192.168.10.64/26內進行。該子網處于雙核心VRRP局域網中,經過匯聚層的雙鏈路上聯到雙核心層。核心1和核心2的實網關分別為192.168.10.124和192.168.10.125。子網內各計算機的默認網關均設為VRRP的虛擬網關192.168.10.126,其中 vrid=12D=0CH。按虛擬網關的組成結構00-00-5E-00-01-XX,得出該虛擬網關的MAC地址為00-00-5E-00-01-0C。
在該子網的計算機上常ping外網某域名,比如“ping www.baidu.com -t”,在沒有假冒網關的計算機存在前都是連通的。現用MAC地址為EC-6C-9F-9B-11-D5的PC1模擬假冒網關,簡單點就是把PC1的IP地址修改為虛擬網關的IP地址192.168.10.126,其“默認網關”欄會自動更改為空格。這雖然與ARP欺騙有所區別,但也是好奇心比較強的學生常用的、簡單的、不用ARP欺騙攻擊軟件的一個有效的搗亂方法。假冒網關開始后,稍等片刻就能觀察到其他計算機斷開了網絡連接,假冒網關開始奏效。

圖1 終端計算機ARP表
以下分別在終端計算機和接入交換機上進行一系列的防范和解除防范操作,觀察網絡通斷的正反效果。
在終端計算機的ARP表中,網關的MAC地址默認是動態的。靜態網關法就是使終端計算機ARP表中的MAC地址成為靜態地址,即保證其始終是正確的網關MAC地址而不會被假冒者的MAC地址所替代。在Windows 7以前的版本中,使網關成為靜態的命令是“ARP -s inet_addr eth_addr”。 而 netsh(Network Shell)是Windows 7系統提供的功能強大的網絡配置命令,代替上述命令的是“netsh interface ipv4 add neighbors idx ip mac”。
第一步:查看網關的IP地址、物理地址和類型
在終端計算機上執行arp -a命令,結果如圖1所示。
由于還沒有執行使網關MAC地址改變狀態的命令,所以“類型”項為“動態”;由于現已經存在了假冒網關的計算機,所以網關192.168.10.126對應的MAC地址已經不是正確的MAC地址 00-00-5E-00-01-0C,而是假冒者的MAC地址EC-6C-9F-9B-11-D5了。
第二步:查看網卡IDX號
執行命令“netsh inter face ipv4 show interface”查看網卡的IDX號,顯示結果如圖2所示。
雖然此時假冒已經存在,網絡已經斷開,但“狀態”信息仍然顯示為“connected”。
第三步:靜態網關
執行命令“netsh inter face ipv4 add neighbors 14 192.168.10.126 00-00-5E-00-01-0C”使網關的MAC地址成為靜態,使網關的IP地址與MAC地址成為一一對應關系,這樣就不會因為子網中存在假冒者而改變其真實的MAC地址。
第四步:再次查看計算機的網絡狀態和連通性
在終端計算機上再次執行arp -a命令,結果如圖3所示。
這時觀察到“ping www.baidu.com -t”沒有丟包現象,網絡連通了。
第五步:故障重現
執行命令“netsh inter face ipv4 delete neigh bors 14”刪除ARP表中的靜態網關,網絡就又被斷開了。
小結:哪臺計算機進行了上述靜態網關操作,哪臺計算機就能連接到網絡,否則網絡為斷開狀態。

圖2 網卡的IDX號

圖3 正確的ARP表
“靜態網關法”是在每一臺終端計算機上進行的ARP表操作,而“IP-MAC核對法”是在接入交換機上的操作,其步驟如下。
第一步:捆綁所有計算機的IP地址和MAC地址
在接入交換機的全局配置模式中執行命令“userbind static ip-address 192.168.10.X mac-address HHHH-HHHH-HHHH”,把所有終端計算機的IP地址和MAC地址進行捆綁。
第二步:地址核對(Check)
在終端計算機對應的交換機端口執行命令“arp anti-attack check userbind enable”,對進出數據包中的IP地址和MAC地址進行核對(Check),與已經存在的靜態(Static)捆綁(Bind)不一致的數據包全部丟棄。
第三步:故障重現
解除非假冒者的捆綁,不影響網絡的通斷性;解除假冒者的捆綁,則所有子網內的計算機斷開了連接。
小結:由于在實際情況下,不能預先知道誰將要假冒網關,所以需要對所有的IP-MAC進行捆綁。
子網內有假冒網關的計算機存在時,其它計算機就會獲取到假冒者的MAC地址做為網關的MAC地址。在接入交換機上進行端口隔離使它們之間不能互相通信,則就不能獲取到假冒者的MAC地址了。
第一步:端口隔離
進入端口組,執行命令“Port-isolate enable”。與假冒者相互隔離后,被隔離者的網絡就連通了,沒有和假冒者隔離的計算機仍然不能連通網絡。
第二步:解除端口隔離
解除端口隔離的命令是“Undo port-isolate enable”,解除了哪臺計算機對應交換機端口與假冒者的隔離,則哪臺計算機就不能連通網絡了。
小結:端口隔離效果雖然明顯,但端口隔離后各計算機之間不能共享資源。
在VRRP網絡中,假冒者假冒的是VRRP的虛擬網關,并沒有假冒實網關。所以,只要把計算機的“默認網關”更改為核心交換機1的實網關 192.168.10.124,或者核心交換機2的實網關192.168.10.125,則可以避開假冒者的目的。
第一步:修改計算機的“默認網關”為實網關;
第二步:檢查網絡的通斷情況,修改為實網關后的計算機能連通網絡。
小結:雖然這樣對防范假冒網關是有效的,但是雙核心VRRP冗余就失去了意義,相當于是單核心了,但是在有假冒網關存在時也不失是一個臨時應急的辦法。
在接入交換機、匯聚交換機和核心交換機上配置防范ARP攻擊的相關命令。比如,配置防ARP欺騙攻擊、配置防ARP泛洪攻擊、配置ARP防網關沖突、配置ARP報文內MAC地址一致性檢查等均沒有明顯效果。
對于假冒網關防范的有效方法有:靜態網關法、IPMAC核對法、實網關法、端口隔離法。交換機操作手冊上介紹的有關防范ARP欺騙的所有方法均無明顯效果。