基於Layer2交換網絡的ARP***防禦

故障現象   

    客戶企業反映“常有部分人不能上網”,且毫無規律。經瞭解整棟大樓物理拓撲結構爲“接入-匯聚-網關”,整個交換網絡工作在二層(Layer2)模式 ,客戶端基本採用固定IP,接入層交換機華爲二層1700/1720系列,核心匯聚爲華爲5700 千兆三層(Layer3)交換。

排查步驟

 STEP1:蒐集

    登陸網關(H3C-F1000-c防火牆)查看安全日誌,幸運的是很快就發現類似“duplicate ip 192.168.1.1.../ARP”相關日誌 ... 至此,故障範圍基本鎖定。

同時我們也看到了,其實很多企業在網絡建立之初就缺乏最基本的規劃,而且不見得全是低成本成本所導致,這樣的問題本可以避免的 ... 好吧! 至少請不要用192.168.1.1/24這樣的默認地址做企業網關的IP。

 STEP2:分析

    儘管找到了故障的元兇,但我並不打算查找&拔掉那個辦公室僱員私自添加的無線路由器(WiFi),有一句話叫“存在即是合理”,因爲這不是用戶的錯誤,是我們技術管理策略上的失誤。

    對!就是這樣! —— 我們應該找到這個網絡脆弱的根源,事情雖小,但這種低級錯誤是絕對不能容忍的。一個茁壯網絡架構不應給用戶留有挑釁的機會,不管有意還是無意的動機。無論如何,防禦應該在網絡和用戶的邊緣就開始,而且是越嚴格越好。

 STEP2:方案

    基本思路:心想在交換機上啓用ARP***防護、DHCP防護、三要素綁定(IP/MAC/端口)應該可以解決的吧?!

    環境模擬如下:

wKiom1esK22wLPCtAACCajxx5Y0894.png

    如圖2個網關都是“192.168.1.1”並且都宣稱自己是DHCP-SERVER,如此一來我們需要一套有效的機制來明確告訴所有交換機“到底誰是親爹”這樣的事實。

    當然,你如果去百度關於ARP相關方案的話,你會看到很多類似在交換機上配置“ARP annt-attack ... ”等等這樣答案。但是啊!但是!請注意!!—— 那些防護都是在Layer3上現實的!!!我們面對現實是我們只有一個Layer2!!YES !! YES !! YES !! Just F*U*C+KING  Layer 2 !!  我們知道Layer2交換網絡是根據MAC來轉發的,與IP沒有任何毛線關係!!換句話說也就是說 —— 即便是你把那些命令都在交換機上敲個遍,其結果仍然是“然!並!卵!”,不服氣你在交換機 敲個"dis arp、 show arp"看看——木有表項!對!就是沒有(除了你手動綁定的,你該不會跟我一樣真的去綁定了1個吧^_^?)! 倒是通過“display mac-address、show mac”可以看到一些有用的信息。

 STEP2:實施

     好吧!現實很苛刻,我們總可以做點別的吧?!答案是肯定的!至少DHCP防護我們目前是可以做的(儘管對於靜態IP用戶意義不大,但是必須的)!

   DHCP-SERVER防護原理:僅讓連接真正網關的接口放行DHCP-Offer報文其他接口拒絕進入。

    核心交換配置如下: 其他交換機同理

[SW2] dhcp enable 
 #全局允許DHCP
[SW2] dhcp snooping  enable  ipv4 
 #全局允許DHCP-SNOOPING
[SW2] port-group 10 
 #創建端口組 方便對端口批量操作
[SW2-port-group-10] group-member Ethernet 0/0/1 to e0/0/22
 #端口批量加入到組 上行端口除外
[SW2-port-group-10] dhcp snooping enable 
 #下行端口全部啓用DHCP-SNOOPING(拒絕Offer報文)
[SW2] interface GigabitEthernet 0/0/1 
 #配置上行端口
[SW2-GigabitEthernet0/0/1] dhcp snooping  enable 
 #上行端口啓用DHCP-SNOOPING
[SW2-GigabitEthernet0/0/1] dhcp snooping  trusted 
#上行端口爲信任端口(Offer報文正常下發)

    接着我們來驗證以上面配置工作的效果

    僞網關地址池爲192.168.1.2~99,網關地址池爲192.168.1.100~200.

wKioL1esW8-w-ajnAAA-2SV0qek482.png

    上圖是連續執行8次“ ipconfig/renew"以重新獲取地址的結果,始終不再獲取僞網關分配的地址。

    如果說還不夠明顯,接着往下看在覈心交換上通往兩個網關的抓包結果

wKiom1esXmWhAcM-AAAzv8tEWCg735.png-wh_50

上下圖分別爲“核心——僞網關”,“核心——網關”抓包截圖

wKioL1esXmXT6erGAACUvkzcH2U293.png-wh_50

    上面實驗充分論證了交換機的“DHCP-SNOOPING”特性

    至此,我們仍然沒有告訴交換機那2個‘192.168.1.1’與“到底誰是親爹”這個關鍵問題

    這回我們轉化一下思路:既然交換機沒法自己識別,那麼我們不如把所有人的嘴巴都堵上(網關除外)而且不允許他們私下溝通只允許和網關溝通,讓真正的網關告訴交換機"我!是你親爹!"

    好!歷交換機文檔中的特性發現確實可以這樣那就是端口隔離這個偉大的特性

    端口隔離基本原 :同一隔離組(下行口)之間不準交頭接耳,不同隔離組(上下行口)之間可以互通,這樣就迫使ARP廣播直接被髮送給工作在Layer3之上的網關,並由網關直接答覆,這就意味着除了上行接口任何接口通告的ARP答覆都會被視而不見,事實上根本不會再有任何ARP請求被髮送到網關之外的地方。

    核心交換配置如下: 其他交換機同理

[SW2-GigabitEthernet0/0/1] port-isolate enable group 5
 #創建隔離組5並加入上行端口
[SW2] port-group 10  
 #進入端口組10以便對下行端口批量操作
[SW2-port-group-10] port-isolate  enable  group  10 
 #下行端口全部加入隔離組10。
 #“隔離組10”與端口組的10沒任何關係自己隨便取小於64的值,
 # 重點是在同一交換機上與上行隔離組5號碼不能相同,否則數據沒法上行。

wKiom1esX_PTmUc0AABXXfSREe4417.png

    以上爲客戶端多次執行ARP刷新結果,同樣不再獲取到僞網關MAC的ARP項,始終顯示正確網關的ARP項。

    至此,所有來自下行接口的ARP請求都會被送往網關,至於在網關設備上要做何等ARP防護,那不就是任由我們處理嗎?通常我會選擇動態或者靜態綁定。

應用延伸

    這個案例很典型,普遍適用於酒店、企業、公共WiFi等多種場合。如企業內有服務器只需要把服務器另外放入一個隔離組即可。事實上隨着網絡終端應用越來越豐富,每一個企業在構建網絡之初,應該儘可能把接入層設備的性能提高到一定層次,以適應未來幾年終端擴充的需求。另外從綜合成本上來也是明智之選。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章