我們經常聽說“端口安全”功能是如何強大,應用如何靈活,但我們很少人系統地對“端口安全”功能有一個比較系統的了解。Cisco IOS交換機中的端口安全(Port security)功能可以使你限制在端口上使用的MAC地址(稱之為“安全MAC地址”),或者MAC地址范圍,或者最大安全地址數,以實現阻止未授權MAC地址的用戶訪問,當然它的應用方式很靈活。本篇僅介紹其基本簡介,詳細的介紹參見《Cisco/H3C交換機高級醘與管理技術手冊》一書。
【說明】以下內容摘自筆者編著的,新市的《Cisco/H3C交換機高級配置與管理技術手冊》一書。其姊妹篇《Cisco/H3C交換機配置與管理完全手冊》(第二版)(目前當當網和卓越網上最低為震撼的63折)實際時間僅用了三個多月就已實現重印,感謝各位的大力支持!!
15.3.1 端口安全功能簡介
Cisco IOS交換機的端口安全功能允許你通過配置靜態安全MAC地址實現僅允許固定設備連接,也允許你在一個端口上配置一個最大的安全MAC地址數,僅允許在此數之前識別到的設備連接在該端口上。當超過了所設置的最大安全端口數,將觸發一個安全違例事件,在端口上配置的一個基於違例行為模式的違例行為將被執行。如果你在某個端口上配置的最大安全MAC地址數為1,則設備上的該安全端口僅允許與固定設備連接。如果一個安全MAC地址在一個端口上進行了安全綁定,則這個MAC地址不能進入該端口加入的VLAN以外的任何其他端口,否則包將在硬件層被悄悄地丟棄。
1. 端口安全功能支持的安全MAC地址類型
Cisco IOS交換機端口安全功能支持以下幾種安全MAC地址類型:
l 動態或者學習類型:動態安全MAC地址是在接收到連接在安全端口上主機發來的包時學習到的。在用戶的MAC地址不固定時(如網絡用戶使用的經常移動的便攜式電腦,如筆記本電腦),你可以使用此種類型。
l 靜態或配置類型:靜態安全MAC地址是用戶通過CLI或者SNMP配置的MAC地址。在你的MAC地址保持固定時(如用戶使用的是PC機),可以使用這種類型。
l 粘性(Sticky)類型:粘性安全MAC地址也是像動態安全MAC地址一樣,是通過學習得到的,但是它是交換機重啟後仍然有效,又有點像靜態安全MAC地址那樣。在存在大量固定MAC地址,而且你又不想手動配置這些安全MAC地址時,就可以使用這種類型。
如果一個端口已達到了它最大的安全MAC地址數,而你又想配置一個靜態安全MAC地址,此時會被拒絕的,並顯示一個錯誤提示。如果一個端口已達到了它最大的安全MAC地址數,而又添加了一個新的動態安全MAC地址,則會觸發一個違例行為。
你可以使用clear port-security命令清除動態安全MAC地址,你可以使用no switchport port-security mac-address命令一次性清除粘性和靜態安全MAC地址。
2. 安全MAC地址的最大數
一個安全端口默認有一個安全MAC地址。你可以改變這個默認值在1~3000之間。當你在一個端口上設置最大安全MAC數後,你可以以下任一方式在地址表中包括這些安全MAC地址:
l 你可以使用switchport port-security mac-address mac_address接口配置模式命令配置安全MAC地址。
l 你可以通過port-security mac-address VLAN范圍配置命令在中繼端口上一個范圍VLAN中配置所有安全MAC地址。
l 你可以允許端口用所連接設備的MAC地址動態配置安全MAC地址。
l 你可以靜態配置一些安全MAC地址,而允許其余的安全MAC地址動態配置(如果端口鏈路關閉,則該端口上所有動態安全MAC地址將不再是安全的)。
l 你可以MAC地址為粘性的(sticky)。這些安全MAC地址可以動態學習,也可以手動配置,然後保存在MAC地址表中,並添加到運行配置文件中。然後這些地址會保存在交換機的啟動配置文件中,在交換機重啟後,接口不用再重新學習。雖然你可以手動配置粘性安全MAC地址,但這種做法是不建議的。
【經驗之談】在一個中繼端口上,最大的安全MAC地址數可以基於端口和基於端口VLAN來配置。端口上配置的最大安全MAC地址數可以大於或等於(不能小於)端口VLAN上配置的最大安全MAC地址數。如果端口上配置的最大安全MAC地址數小於端口VLAN上配置的最大安全MAC地址數(例如VLAN 10上設置的最大安全MAC地址為3,而端口的最大安全MAC地址數采用默認的1),則在端口VLAN上的安全MAC地址數超過端口上設置的最大安全MAC地址數時,端口就將被關閉。
3.安全MAC地址老化
在接收超過3000個MAC地址時,你可能想要老化安全MAC地址,以便對一些長時間沒有連接的安全MAC地址從MAC地址表中除去。但是粘性(sticky)安全MAC地址不支持老化過程。
默認情況下,端口安全不會對安全地址進行老化的,學習到後,這個MAC地址將一直在端口上保留,直到交換機重啟或才鏈路斷開(當然這是在沒有啟用粘性MAC地址功能時)。端口安全允許你基於絕對(absolute)或者靜止(inactivity)模式配置MAC地址老化和老化時間。絕對模式的老化周期是n~n+1分鐘之間;靜止模式的老化周期是在n+1~n+2分鐘之間(時間增量為1分鐘)。
使用安全MAC地址老化功能可以還沒達到端口上配置的最大安全MAC地址數之前,在安全端口上刪除和添加PC,無需手動刪除現有的安全MAC地址。
除非明確地使用switchport port-security aging static命令靜態配置MAC地址老化時間,靜態安全MAC地址是不會進行老化進程的,即使在在該端口上配置了老化進程。
4.端口上的粘性MAC地址
通過啟用粘性端口安全功能,你可以配置一個接口去轉換動態MAC地址為粘性安全MAC地址,並添加他們到交換機的運行配置文件中。在你不需要用戶移動到其他端口時,你可以使用這種功能,這樣你就無需要在每個端口上手動配置大量的安全MAC地址。
要啟用粘性端口安全功能,可鍵入switchport port-security mac-address sticky接口配置模式命令。此時,接口將轉換所有動態安全MAC地址為粘性安全MAC地址,包括在啟用粘性安全MAC地址功能前動態學習到的所有MAC地址。
粘性安全MAC地址不會自動成為交換機啟動配置文件的一部分,如果你保存了運行配置文件,則在交換機重啟後,接口也不用再重新學習MAC地址了,但是如果你不保存運行配置文件,則以前自動轉換的粘性安全MAC地址表將丟失。
如果禁止粘性端口安全功能,則粘性安全MAC地址將自動轉換為動態安全MAC地址,並自動從交換機的運行配置文件中刪除。在配置了最大安全MAC地址數後,這些粘性安全MAC地址將以表的形式存儲。要使某設備成為某端口唯一的連接者,則可以在該端口上配置最大的安全MAC地址數為1。如果添加到某端口的安全MAC地址數超過配置的最大安全MAC地址數將發生違例事件。
5. 違例行為模式
你可以配置發生違例事件後所采取的行為模式:
l 保護(protect):當安全MAC地址數超過端口上配置的最大安全MAC地址數時,未知源MAC地址的包將被丟棄,直到MAC地址表中的安全MAC地址數降到所配置的最大安全MAC地址數以內,或者增加最大安全MAC地址數。而且這種行為沒有安全違例行為發生通知。建議不要在中繼端口上配置保護行為,因為在中繼端口上某個VLAN達到該VLAN中所配置的最大安全MAC地址數時端口將被禁止,即使端口上的安全MAC地址數並未達到端口上配置的最大安全MAC地址數。
l 限制(Restrict):與前面的保護模式差不多,也是在安全MAC地址數達到端口上配置的最大安全MAC地址數時,未知源MAC地址的包將被丟棄,直到MAC地址表中的安全MAC地址數降到所配置的最大安全MAC地址數以內,或者增加最大安全MAC地址數。但這種行為模式會有一個SNMP捕獲消息發送,並記錄系統日志,違例計數器增加1。SNMP捕獲通知發送的頻率可以通過snmp-server enable traps port-security trap-rate命令來控制,默認值為0,表示在發生任何安全違例事件時發送SNMP捕獲通知。
l 關閉(Shutdown):發生安全違例事件時,端口立即呈現錯誤(error-disabled)狀態,關閉端口(端口指示燈熄滅)。同時也會發送一個SNMP捕獲消息並記錄系統日志,違例計數器增加1。在想禁止非MAC地址,需要安全安全環境下,你可以使用這種模式。
l 關閉VLAN(Shutdown VLAN):適用於VLAN的安全違例模式。在這種模式下,在發生安全違者罰款例事件時,該端口對應的VLAN都將呈錯誤禁止狀態,關閉對應VLAN,而不關閉對應的端口。
表15-1列出了各種違例模式和對應采取的行為。
表15-1 端口安全下的各種違例模式和對應采取的行為
違例模式 違例通信轉發 發送SNMP trap消息 發送系統日志消息 顯示錯誤消息 違例計數器遞增 關閉端口 保護(protect) No No No No No No 限制(restrict) No Yes Yes