HCNP Routing&Switching之MAC安全

  前文我們了解了GRE over IPSec 相關話題,回顧請參考//www.cnblogs.com/qiuhom-1874/p/16601491.html;今天我們來聊一聊mac安全相關話題;

  先來回顧下二層交換機的工作原理

  我知道對於一台二層交換機來說,它的核心功能就是根據mac地址來轉發數據;之所以能夠根據mac地址來轉發數據,是因為交換機的工作原理;交換機收到一個幀就會記錄對應的幀的源mac和對應介面做對應;這樣一來,當交換機收到對應目標mac的幀的時候,它就知道該把這個幀從那個介面轉發出去;如果交換機收到的目標mac幀,在對應mac地址表裡沒有,此時交換機就會把對應數據包進行泛洪,如果在某一個介面收到了對應包的回復,此時它就會把對應介面和對應介面回復的源mac記錄到mac地址表中;簡單講就是根據mac地址表來轉發數據,如果沒有就泛洪;

  基於MAC的攻擊

  基於mac的攻擊,通常手段有兩種,一種是泛洪,一種是欺騙;所謂泛洪就是指攻擊者在短時間內偽造很多mac地址幀,直接把交換機的mac地址表給寫滿;這樣做最直接的後果就是,正常的數據包,交換機里沒有對應mac,它不知道怎麼轉發,這個時候它就會泛洪,一泛洪,對應攻擊者就能抓到數據包,從而獲取數據;所謂欺騙是指攻擊者惡意發送arp廣播,告訴交換機,網關是我(通常就是欺騙網關,當然中間人攻擊,也是類似的過程,兩邊欺騙);交換機收到攻擊者的arp廣播,它肯定會記錄對應mac地址和介面,同時因為是arp廣播,交換機上的其他pc收到對應的包,就會在本地記錄對應mac和ip地址;從而在pc和網關通訊時,會封裝對應的mac地址,將數據發送給攻擊者;這樣一來攻擊者就能夠通過抓包等手段獲取用戶的數據;總之不管是mac泛洪攻擊還是欺騙攻擊,都是利用交換機的工作原理,通過mac地址表項來轉發數據的特性來實行的攻擊;

  提示:上圖為mac泛洪攻擊的示意圖;攻擊者偽造很多mac地址,發送給交換機,以此來佔用交換機mac地址表;使得正常的mac地址表項被覆蓋;正常的mac地址表項被覆蓋,正常用戶通訊時,交換機就會把對應數據包進行泛洪,使得用戶數據被攻擊者抓取;

  MAC地址表項分類

  提示:常見的就這三種表項,動態,靜態和黑洞;動態表項是指交換機通過對幀內的源mac進行學習而來,有老化時間;靜態和黑洞都是管理員手動配置的,都不會老化;黑洞表項是指收到對應mac地址的幀都會被丟棄,不管是源mac還是目標mac,交換機只要收到對應有黑洞表項的mac就會主動丟棄;

  MAC地址表安全功能

  MAC地址表特性參數

  提示:默認交換機不做任何配置,動態學習mac的功能是開啟的,老化時間為5分鐘,埠的mac地址的優先順序都是0;如果開啟了埠安全,默認埠安全mac地址學習限制數量為1,即只能學習到一個mac,多的學習不到;埠安全的保護動作為restrict,即轉發合法流量和發送告警;mac地址飄逸表項老化時間為5分鐘,丟棄全0非法mac地址,以及收到全0非法mac地址報警功能都是關閉的;mac刷新arp功能也是關閉的;

  實驗:基於mac的泛洪攻擊

  實驗環境說明:如上實驗拓撲,我們使用雲來橋接本地lo介面,另一端開一個kali來模擬攻擊者

  沒有攻擊,對應交換機mac地址表

  提示:正常情況下,如果交換機沒有收到幀,對應是mac地址表是空的才對,上面的mac地址是我們本地lo介面的mac,這是我們使用雲橋接lo介面,默認lo介面會每隔一段時間發送一個ssdp包來發現區域網里的設備,所以我們在交換機上能夠看到對應lo介面的mac地址;如下抓包

  使用kali ping pc1和pc2

  在交換機上查看mac地址表項

  提示:可以看到對應的mac和介面一一對應;真是因為這個mac表項,對應交換機就能正常的將數據包轉發到對應介面發送出去;

  查看交換機mac地址表項匯總

  提示:這裡是模擬器bug,它的統計數據顯示不出來;從上圖可以看到該交換機最大容納32768條mac地址和介面對應的記錄,一旦超過這個記錄就會覆蓋最老的記錄(覆蓋只針對動態學習到的mac,靜態是覆蓋不了的);

  使用kali攻擊sw1

  提示:使用macof工具來偽裝mac地址,該工具能在一瞬間偽造大量mac地址幀,然後從網卡發送出去;-i選項是用來指定從那個網卡發送;

  提示:可以看到我們只把macof工具開來不到5秒,對應交換機就收到了大量的mac地址幀,瞬間交換機的mac地址表也多了許多mac地址條目;

  以上就是mac泛洪攻擊的現象,我們總結一下,出現mac泛洪攻擊時,查看交換機的mac地址表項就會發現,在某一個介面下會存在大量的mac地址條目,很顯然這不正常;

  MAC安全特性配置

  1、添加靜態mac地址表項

  提示:添加靜態mac時,我們需要寫清楚對應mac 對應的介面和vlan即可;

  驗證:查看靜態mac是否添加成功?

  提示:可以看到對應mac地址表裡就多了一條我們剛才添加的記錄;匯總里也統計出有一條靜態條目;

  2、添加黑洞mac地址表項

  驗證:用kali ping pc2的地址,看看是否能夠ping通呢?

  提示:可以看到現在kali就不能正常ping通pc2,原因是kali拿不到pc2的mac,因為pc2的mac是一個黑洞mac,對應pc2收到kali的arp請求,在發送自己的mac時,交換機會丟棄對應pc2發送到任何包;

  提示:第二張截圖是在pc2上抓取的,可以看到pc2的確回復了kali的arp請求,但是kali卻沒有收到,原因就是交換機丟棄了pc2的包,因為pc2發送的包,源mac被設置成黑洞mac了;

  3、配置老化時間

  提示:默認mac地址表項的老化時間為300秒;

  4、禁止mac地址學習功能

  提示:以上命令可以在vlan模式和介面模式下使用,在介面模式下使用作用範圍為當前介面,在vlan模式下使用作用範圍是對應vlan;該命令後面還有兩個參數,一個是forward,一個是discard;默認是不寫後面的動作就是forward,表示轉發;即對應埠或vlan所有介面,只是關閉動態學習mac的功能,但收到arp回復包進行轉發;discard則表示根據目標mac地址,如果目標mac地址在mac地址表項存在,則轉發,如果目標mac地址不存在mac地址表則丟棄;

  實驗:把g0/0/4介面的學習mac功能關閉,並配置默認動作為discard

  查看mac地址表,看看對應g0/0/4口是否學習到mac?

  提示:可以看到現在mac表,對應g0/0/4口沒有學習到任何mac;

  用pc1 ping pc3,看看對應介面是否會學習到mac?通訊是否會通呢 ?

  提示:可以看到對應pc1pingpc3並沒有ping通;

  查看mac地址表項

  提示:可以看到4口也沒有學習到mac;

  抓包查看過程

  提示:在pc3上抓包,可以看到對應pc3收到pc1的arp廣播,並做了回復;

  在pc1上抓包

  提示:在pc1上抓包,對應pc3的arp回復包並沒有收到,說明g0/0/4口丟棄了arp回復包,導致pc1拿不到pc3的mac,也就無法正常通訊;

  刪除g0/0/4的禁止動態學習mac地址,先讓g0/0/4學習到mac,然後再禁用學習功能呢

  pc3發包,讓交換機學習到mac

  禁用4口學習mac功能

  提示:可以看到現在4口已經學習到mac;

  現在pc1 ping pc3 看看是否能通?

  提示:可以看到現在pc1pingpc3是能夠正常ping通的,這是因為交換機的mac地址表項里對應通訊的目標mac,對應數據包會轉發,如果沒有則丟棄;當然,如果mac地址表老化,對應條目被刪除,那麼通訊也無法正常進行;

  把動作改為forward,看看對應介面是否能夠學習到mac呢?通訊是否正常呢?

  pc1 ping pc3看看g0/0/4是否學習到mac?對應通訊是否能夠正常通行呢?

 

  提示:可以看到通訊是可以正常通訊,但是對應介面是不能夠學習到mac條目的;

  5、限制埠學習mac地址的數量

  提示:該命令可以在介面模式和vlan模式下使用,在介面模式下作用範圍當前介面,在vlan模式下作用範圍是對應vlan;

  驗證:用macof工具攻擊,看看對應3口是否只能學習到10條mac地址條目呢?

  提示:可以看到對應交換機的終端在報警,對應3口也只能學習到10條mac地址條目;這裡需要注意,這個學習到的mac是先學滿10條,後面的就不學習了,並不是重複覆蓋;

  6、配置告警

  提示:開啟或關閉報警,必須配置前邊的最大學習限制才可以,否則它會提示Error: Failed to change the configurations of the action or alarm because the MAC-limit rule does not exist.;

  7、開啟丟棄全0非法mac地址報文的功能

  提示:以上兩條命令在全局模式下使用;第一條作用是開啟因收到全0非法mac報警;第二條表示開啟丟棄全0非法mac;

  8、配置mac刷新arp功能

  提示:arp表是ip地址和mac地址以及出介面的對應表,mac地址表是mac地址和出介面的對應表;兩者老化時間不一樣,就導致當mac地址表是g0/0/1介面更新到g0/0/2口,對應arp里的資訊還在g0/0/1口,這會導致通訊中斷;為了避免這樣的問題,上述命令就表示當mac表項發生變化,通知arp表項對應條目更新,從而避免通訊中斷的問題;

  官方文檔示意圖