無論是管理平面管理員登錄的安全,還是控制平面CPU的安全,最終目的都是爲了保證轉發平面數據流量的正常轉發。不管是二層網絡還是三層網絡,只有交換機的轉發表正常了,數據流量才能正常轉發。二層轉發的轉發表是MAC表,設備通過MAC表查找報文的出接口,如果查表失敗,報文就會進行廣播,所以廣播風暴是二層網絡中最常見的現象。因此,如何保證轉發表的安全和如何抑制廣播風暴,是二層網絡安全的重點問題。下邊我們也將結合這兩個方面看下交換機二層網絡的安全問題。
1 如何保證轉發表安全?
爲了保證二層流量能夠正常轉發,針對不同的應用場景,交換機提供了不同的方法保證轉發表的安全。譬如:MAC防漂移和端口安全通過MAC和接口的綁定,保證MAC表的安全。DHCP Snooping通過記錄用戶DHCP的認證信息,保證動態用戶的安全接入。
1.1 MAC防漂移
接口只要接收到報文,就會進行MAC表項學習。交換機從正確的接口學習到合法用戶的MAC表後,又從其他接口接收到非法用戶的***報文時,就會導致MAC表項學習錯誤,二層轉發出現異常。
最典型的場景如圖1所示,非法用戶通過模擬網關的源MAC向接入交換機發送報文,網關對應MAC1的出接口就會從IF1漂移到IF2。這樣下行用戶向網關發送報文時,通過MAC表項查詢到的出接口就是錯誤的IF2,用戶的報文就無法轉發到網關,二層轉發異常。
圖1 MAC防漂移場景
針對該場景,S交換機有兩種方法進行安全預防:
Ø 配置靜態MAC:把網關的MAC和接口手動綁定,使網關的MAC無法發生漂移。如果不知道網關MAC或網關MAC不固定時,該方法不適用。S交換機的配置方法如下:
[SwitchA] mac-address static 3-3-3 gigabitethernet 0/0/10 vlan 4 //假設網關的MAC是3-3-3,接口是GE0/0/10,把接口和MAC在VLAN 4的廣播域內綁定
Ø 配置MAC學習優先級:使IF1接口MAC學習優先級高於IF2接口,這樣如果IF2接口再收到源MAC是MAC1的報文時,不再進行MAC學習,使MAC地址不進行漂移。S交換機的配置方法如下:
[SwitchA] interface gigabitethernet 0/0/10 //連接網關的接口
[SwitchA-GigabitEthernet0/0/10] mac-learning priority 3 //配置接口MAC學習優先級爲最高值3
說明:S交換機有些形態不支持配置MAC學習優先級,可以通過配置MAC Spoofing功能設置網關接口爲信任接口,防止網關的MAC地址漂移,配置方法如下:
[SwitchA] mac-spoofing-defend enable //全局使能MAC Spoofing功能
[SwitchA] interface gigabitethernet 0/0/10 //連接網關的接口
[SwitchA-GigabitEthernet0/0/10] mac-spoofing-defend enable //配置接口爲信任接口
1.2 端口安全
端口安全也是一種保證轉發表安全的特性。在接口上使能端口安全功能後,接口上學習到的MAC地址就會自動轉換爲安全MAC,實現MAC地址和接口綁定,這樣該MAC對應的用戶就只能從該接口接入,無法再從其他接口接入。
另外,端口安全還可以通過設置接口下MAC表項的個數限制用戶接入,保證只有先到的用戶能夠接入,後來的用戶無法接入,同時也防止了黑洞MAC泛洪***導致MAC表溢出的問題。
但是端口安全無法判斷接入的用戶是否合法,只能保證先到的用戶可以接入,如果先到的用戶是非法的,也是可以接入的。
圖2 端口安全應用場景
如圖2所示,某企業爲了保證接入用戶的安全性,防止非法用戶通過發送源MAC頻繁變化的報文***網絡,同時防止非法用戶通過仿冒MAC地址接入網絡。要求一個接口下只允許三個用戶接入,同時要求這三個用戶只能從指定接口接入,不能從任意端口接入。
爲了實現上面安全策略,可以在SwitchA的GE0/0/1接口上配置端口安全功能,在有非法用戶想要通過該接口接入時,還可以上報告警。S交換機配置端口安全的方法如下:
[SwitchA] interface gigabitethernet 0/0/1
[SwitchA-GigabitEthernet0/0/1] port-security enable //接口使能端口安全功能
[SwitchA-GigabitEthernet0/0/1] port-security max-mac-num 3 //配置接口下只允許綁定三個MAC地址,也就是說只允許三個用戶接入,默認情況下接口使能端口安全後,只能綁定一個MAC地址
[SwitchA-GigabitEthernet0/0/1] port-security mac-address sticky //使能Sticky MAC功能,在保存配置重啓後,接口和MAC的綁定不會消失
說明:端口安全轉換的安全MAC達到限制數後,如果有非法用戶想要接入,端口安全就會執行懲罰動作。S交換機支持三種懲罰動作:
動作 | 實現說明 |
protect | 丟棄源地址在MAC表以外的報文。 |
restrict | 丟棄源地址在MAC表以外的報文,同時上報告告警,通知網絡管理員進行處理。交換機默認是該動作。 |
shutdown | 接口直接被shutdown,需要網絡管理員手動恢復。 |
1.3 DHCP Snooping
DHCP Snooping是DHCP的一種安全特性,用來保證DHCP客戶端能夠正確的從DHCP服務器獲取IP地址,防止網絡中針對DHCP的***。
DHCP Snooping是如何防止DHCP***的呢?在這之前我們先了解一下什麼是DHCP?
DHCP,動態主機配置協議,在IPv4網絡中爲客戶端動態分配IP地址,採用客戶端/服務器通信模式,由客戶端(DHCP Client)向服務器(DHCP Server)提出申請,服務器返回爲客戶端分配的IP信息,包括IP地址、缺省網關、DNS Server等參數。
圖3 DHCP組網圖
如圖3所示,DHCP組網中包括以下兩種角色:
Ø DHCP客戶端(DHCP Client):通過DHCP協議請求獲取IP地址的設備,如IP電話、PC等。
Ø DHCP服務器(DHCP Server):負責爲DHCP客戶端分配IP地址的設備。
由於DHCP的客戶端/服務器通信模式,非法用戶一般從下面幾個方法進行***。
圖4 DHCP常見***方式
***方式 | ***原理 |
DHCP Server仿冒*** | 非法用戶通過仿冒DHCP Server,爲客戶端分配錯誤的IP地址,導致客戶端無法正常接入網絡。 |
DHCP報文仿冒*** | Ø 已獲取到IP地址的合法用戶通過向服務器發送DHCP Request報文用以續租IP地址。非法用戶冒充合法用戶不斷向DHCP Server發送DHCP Request報文來續租IP地址,導致到期的IP地址無法正常回收,新的合法用戶不能再獲得IP地址。 Ø 已獲取到IP地址的合法用戶通過向服務器發送DHCP Release報文用以釋放IP地址。非法用戶仿冒合法用戶向DHCP Server發送DHCP Release報文,使合法用戶異常下線。 |
DHCP報文泛洪*** | 非法用戶在短時間內發送大量DHCP報文,使DHCP Server無法正常處理報文,從而無法爲客戶端分配IP地址。 |
DHCP Server拒絕服務*** | Ø 非法用戶通過惡意申請IP地址,使DHCP服務器中的IP地址快速耗盡,無法爲合法用戶再分配IP地址。 Ø DHCP Server通常僅根據DHCP Request報文中的CHADDR(Client Hardware Address)字段來確認客戶端的MAC地址。非法用戶通過不斷改變CHADDR字段向DHCP Server申請IP地址,使DHCP服務器中的IP地址快速耗盡,無法爲合法用戶再分配IP地址。 |
DHCP Snooping針對不同的DHCP***方式提供相應的防禦方法,其一般配置在接入交換機上。
***方式 | 防禦方法 |
DHCP Server仿冒*** | 配置接入交換機與DHCP Server相連的接口爲信任接口,只有信任接口能夠接收和轉發DHCP報文。 |
DHCP報文仿冒*** | 在DHCP Server爲客戶端分配IP地址過程中,根據DHCP報文生成DHCP Snooping綁定表,該綁定表記錄MAC地址、IP地址、租約時間、VLAN ID、接口等信息,然後通過DHCP報文與綁定表的合法性檢查,丟棄非法報文,防止DHCP報文仿冒***。 |
DHCP報文泛洪*** | 限制DHCP報文上送CPU的速率。 |
DHCP Server拒絕服務*** | Ø 通過限制DHCP Snooping綁定表的個數,限制用戶接入數。當用戶數達到指定值時,任何用戶將無法通過此接口申請到IP地址。 Ø 通過檢查DHCP Request報文幀頭MAC與DHCP數據區中CHADDR字段的一致性,丟棄不一致的報文,防止非法用戶***。 |
DHCP Snooping的各種防禦方法應該怎麼配置呢?我們通過一個具體的實例來看一下。
圖5 DHCP Snooping應用場景
如圖5所示,DHCP Client1和DHCP Client2通過SwitchA向DHCP Server申請IP地址。通過在SwitchA上配置DHCP Snooping功能,防止以下類型的***:
Ø DHCP Server仿冒***
Ø DHCP報文仿冒***
Ø DHCP報文泛洪***
Ø DHCP Server拒絕服務***
S交換機的配置方法如下:
1. 全局和接口下使能DHCP Snooping功能。
[SwitchA] dhcp enable //需要先全局使能DHCP功能
[SwitchA] dhcp snooping enable
[SwitchA] interface gigabitethernet 0/0/1
[SwitchA-GigabitEthernet0/0/1] dhcp snooping enable
[SwitchA-GigabitEthernet0/0/1] quit
[SwitchA] interface gigabitethernet 0/0/2
[SwitchA-GigabitEthernet0/0/2] dhcp snooping enable
[SwitchA-GigabitEthernet0/0/2] quit
2. 連接DHCP Server的接口配置爲信任接口,防止DHCP Server仿冒者***。
[SwitchA] interface gigabitethernet 0/0/10
[SwitchA-GigabitEthernet0/0/10] dhcp snooping enable
[SwitchA-GigabitEthernet0/0/10] dhcp snooping trusted
[SwitchA-GigabitEthernet0/0/10] quit
3. DHCP報文與綁定表的合法性檢查,防止DHCP報文仿冒***。
[SwitchA] dhcp enable
[SwitchA] dhcp snooping check dhcp-request enable vlan 10 //對VLAN 10內的用戶進行合法性檢查
4. 限制DHCP報文上送CPU的個數,防止DHCP報文泛洪***。
[SwitchA] dhcp snooping check dhcp-rate enable //使能對DHCP報文上送CPU的速率檢測功能
[SwitchA] dhcp snooping check dhcp-rate 90 //每秒最多處理90個DHCP報文
5. 配置DHCP Snooping綁定表個數和DHCP Request報文幀頭源MAC地址與CHADDR字段一致性檢查功能,防止DHCP Server拒絕服務***。
[SwitchA] dhcp snooping max-user-number 2 vlan 10 //配置VLAN 10內只允許兩個用戶接入
[SwitchA] dhcp snooping check dhcp-chaddr enable vlan 10
2 如何抑制廣播風暴?
什麼是廣播風暴?
就是廣播、未知組播以及未知單播報文過多或者在網絡中成環的一種現象。
爲什麼會有廣播風暴?
二層轉發是根據MAC表項轉發的,如果報文的MAC地址在MAC表中找不到對應的出接口,報文就會在VLAN內所有端口進行轉發,從而產生廣播風暴。
怎麼抑制廣播風暴呢?
抑制廣播風暴最根本的方法是找到報文的出接口,使報文進行單播轉發。然而在實際應用中,由於MAC表的規格限制和二層轉發的原理,廣播風暴是無法徹底解決的,只能儘可能的減少安全風險。
交換機提供了兩種安全方法:一是基於不同維度進行流量抑制,二是通過風暴控制阻塞端口或Error-Down端口。
2.1 流量抑制
流量抑制可以從下面3個維度進行抑制:
功能點 | 說明 |
基於接口進行流量限制 | 在接口的入方向上,分別對三類報文按百分比、包速率和比特速率進行流量抑制。 |
基於VLAN進行流量限制 | 對某個VLAN的上行流量,分別對三類報文按比特速率進行流量抑制。 |
基於接口進行流量阻塞 | 在接口的出方向上,阻塞這三類報文的轉發。 |
這些功能又該怎麼應用呢?我們從下圖看一下應用場景和配置方法。
圖6 流量抑制應用場景
如圖6所示,SwitchA是匯聚層交換機,通過接口GE0/0/1接入網絡的用戶屬於兩個VLAN,VLAN 10和 VLAN 20;通過接口GE0/0/2接入網絡的用戶屬於VLAN 30;通過接口GE0/0/3接入網絡只有一個固定的用戶,該用戶對安全要求較高,不希望收到廣播、未知組播以及未知單播報文。
配置思路:
Ÿ 接口GE0/0/1下的用戶屬於不同的VLAN域,可以針對不同的VLAN分別進行流量抑制。
Ÿ 接口GE0/0/2下的用戶屬於同一個VLAN,可以直接針對該接口進行流量抑制。
Ÿ 接口GE0/0/3下的用戶對安全要求較高,基於接口阻塞廣播、未知組播以及未知單播報文的流量。
配置方法:
1. 基於VLAN配置流量抑制,限制每個VLAN廣播、未知組播以及未知單播報文的流量。
[SwitchA] qos car qoscar1 cir 1000 //配置Qos模板,承諾速率是1000kbit/s
[SwitchA] vlan 10
[SwitchA-vlan10] broadcast-suppression qoscar1 //在VLAN視圖下應用該模板,對廣播報文進行抑制,承諾速率是1000kbit/s
[SwitchA-vlan10] multicast-suppression qoscar1 //在VLAN視圖下應用該模板,對未知組播的抑制,承諾速率是1000kbit/s
[SwitchA-vlan10] unicast-suppression qoscar1 //在VLAN視圖下應用該模板,對未知單播的抑制,承諾速率是1000kbit/s
說明:
Ÿ 在VLAN視圖下應用Qos模板時,如果指定關鍵字share,則廣播,未知組播和未知單播報文承諾的速率一共是1000kbit/s。
Ÿ 以上配置是框式設備,對於盒式設備,直接在VLAN視圖下設置抑制速率,不需要配置Qos模板。
2. 基於接口配置流量抑制,限制該接口廣播、未知組播以及未知單播報文的流量。
[SwitchA] interface gigabitethernet 0/0/2
[SwitchA-GigabitEthernet0/0/2] broadcast-suppression 5 //廣播報文速率最多佔接口速率的5%
[SwitchA-GigabitEthernet0/0/2] multicast-suppression 5 //未知組播報文速率最多佔接口速率的5%
[SwitchA-GigabitEthernet0/0/2] unicast-suppression 5 //未知單播報文速率最多佔接口速率的5%
說明:基於接口的流量抑制,有三種配置方式:可以基於百分比,包速率和比特速率分別抑制。其他兩種配置方法不再詳細說明,配置命令如下。
broadcast-suppression { percent-value | cir cir-value [ cbs cbs-value ] | packets packets-per-second }
multicast-suppression { percent-value | cir cir-value [ cbs cbs-value ] | packets packets-per-second }
unicast-suppression { percent-value | cir cir-value [ cbs cbs-value ] | packets packets-per-second }
3. 基於接口阻塞廣播、未知組播以及未知單播報文的流量。
[SwitchA] interface gigabitethernet 0/0/3
[SwitchA-GigabitEthernet0/0/3] broadcast-suppression block outbound //阻塞廣播報文
[SwitchA-GigabitEthernet0/0/3] multicast-suppression block outbound //阻塞未知組播報文
[SwitchA-GigabitEthernet0/0/3] unicast-suppression block outbound //阻塞未知單播報文
2.2 風暴控制
風暴控制不僅可以通過設置速率控制廣播、未知組播以及未知單播報文,還可以在速率超過設置閾值時對接口執行懲罰動作。
Ø 阻塞端口:
當一個檢測週期內,接口上這三類報文中任意報文的平均速率大於指定的最大閾值時,接口就會被阻塞。
當一個檢測週期內,接口上這三類報文中任意報文的平均速率小於指定的最小閾值時,接口就會放開阻塞。
Ø Error-Down端口:
當一個檢測週期內,接口上這三類報文中任意報文的平均速率大於指定的最大閾值時,接口就會被Error-Down。
缺省情況下,被Error-Down的接口不會自動恢復,需要手動執行restart命令進行恢復。
如果在接口被Error-Down之前配置了自動恢復時間,到達時間後接口就會自動恢復。
配置方法:
[SwitchA] error-down auto-recovery cause storm-control interval 20 //如果接口被風暴控制error down,20秒後接口自動恢復
[SwitchA] interface gigabitethernet 0/0/5
[SwitchA-GigabitEthernet0/0/5] storm-control broadcast min-rate 1000 max-rate 2000 //廣播報文執行懲罰動作的閾值
[SwitchA-GigabitEthernet0/0/5] storm-control action error-down //風暴控制的懲罰動作是error down
[SwitchA-GigabitEthernet0/0/5] quit
[SwitchA] interface gigabitethernet 0/0/6
[SwitchA-GigabitEthernet0/0/6] storm-control multicast min-rate percent 5 max-rate percent 20 //未知組播報文執行懲罰動作的閾值
[SwitchA-GigabitEthernet0/0/6] storm-control action block //風暴控制的懲罰動作是阻塞端口