二層網絡安全你知道多少
二層轉發的轉發表是MAC表,設備通過MAC表查找報文的出接口,如果查表失敗,報文就會進行廣播,所以廣播風暴是二層網絡中最常見的現象。因此,如何保證轉發表的安全和如何抑制廣播風暴,是二層網絡安全的重點問題。
一、如何保證轉發表安全?
為了保證二層流量能夠正常轉發,針對不同的應用場景,交換機提供了不同的方法保證轉發表的安全。譬如:MAC防漂移和端口安全通過MAC和接口的綁定,保證MAC表的安全。DHCP Snooping通過記錄用戶DHCP的認證信息,保證動態用戶的安全接入。
二、MAC防漂移
接口只要接收到報文,就會進行MAC表項學習。交換機從正確的接口學習到合法用戶的MAC表后,又從其他接口接收到非法用戶的攻擊報文時,就會導致MAC表項學習錯誤,二層轉發出現異常。
最典型的場景如下圖所示,非法用戶通過模擬網關的源MAC向接入交換機發送報文,網關對應MAC1的出接口就會從IF1漂移到IF2。這樣下行用戶向網關發送報文時,通過MAC表項查詢到的出接口就是錯誤的IF2,用戶的報文就無法轉發到網關,二層轉發異常。
針對該場景,S交換機有兩種方法進行安全預防:
1. 配置靜態MAC:
把網關的MAC和接口手動綁定,使網關的MAC無法發生漂移。
- [SwitchA] mac-address static 3-3-3 gigabitethernet 0/0/10 vlan 4 //假設網關的MAC是3-3-3,接口是GE0/0/10,把接口和MAC在VLAN 4的廣播域內綁定
2. 配置MAC學習優先級:
使IF1接口MAC學習優先級高于IF2接口,這樣如果IF2接口再收到源MAC是MAC1的報文時,不再進行MAC學習,使MAC地址不進行漂移。
- [SwitchA] interface gigabitethernet 0/0/10 //連接網關的接口[SwitchA-GigabitEthernet0/0/10] mac-learning priority 3 //配置接口MAC學習優先級為最高值3
說明:有些交換機不支持配置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 //配置接口為信任接口
三、端口安全
端口安全也是一種保證轉發表安全的特性。在接口上使能端口安全功能后,接口上學習到的MAC地址就會自動轉換為安全MAC,實現MAC地址和接口綁定,這樣該MAC對應的用戶就只能從該接口接入,無法再從其他接口接入。
另外,端口安全還可以通過設置接口下MAC表項的個數限制用戶接入,保證只有先到的用戶能夠接入,后來的用戶無法接入,同時也防止了黑洞MAC泛洪攻擊導致MAC表溢出的問題。
但是端口安全無法判斷接入的用戶是否合法,只能保證先到的用戶可以接入,如果先到的用戶是非法的,也是可以接入的。
如上圖,某企業為了保證接入用戶的安全性,防止非法用戶通過發送源MAC頻繁變化的報文攻擊網絡,同時防止非法用戶通過仿冒MAC地址接入網絡。要求一個接口下只允許三個用戶接入,同時要求這三個用戶只能從指定接口接入,不能從任意端口接入。
為了實現上面安全策略,可以在SwitchA的GE0/0/1接口上配置端口安全功能,在有非法用戶想要通過該接口接入時,還可以上報告警。在交換機配置端口安全的方法如下:
- [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的綁定不會消失
四、如何抑制廣播風暴?
1. 什么是廣播風暴?
就是廣播、未知組播以及未知單播報文過多或者在網絡中成環的一種現象。
2. 為什么會有廣播風暴?
二層轉發是根據MAC表項轉發的,如果報文的MAC地址在MAC表中找不到對應的出接口,報文就會在VLAN內所有端口進行轉發,從而產生廣播風暴。
3. 怎么抑制廣播風暴呢?
抑制廣播風暴最根本的方法是找到報文的出接口,使報文進行單播轉發。然而在實際應用中,由于MAC表的規格限制和二層轉發的原理,廣播風暴是無法徹底解決的,只能盡可能的減少安全風險。
交換機提供了兩種安全方法:一是基于不同維度進行流量抑制,二是通過風暴控制阻塞端口或Error-Down端口。
五、流量抑制
流量抑制可以從下面3個維度進行抑制:
1. 基于接口進行流量限制
在接口的入方向上,分別對三類報文按百分比、包速率和比特速率進行流量抑制。
2. 基于VLAN進行流量限制
對某個VLAN的上行流量,分別對三類報文按比特速率進行流量抑制。
3. 基于接口進行流量阻塞
在接口的出方向上,阻塞這三類報文的轉發。
這些功能又該怎么應用呢?我們從下圖拓撲看一下應用場景和配置方法。
SwitchA是匯聚層交換機,通過接口GE0/0/1接入網絡的用戶屬于兩個VLAN,VLAN 10和 VLAN 20;通過接口GE0/0/2接入網絡的用戶屬于VLAN 30;通過接口GE0/0/3接入網絡只有一個固定的用戶,該用戶對安全要求較高,不希望收到廣播、未知組播以及未知單播報文。
(1) 配置思路:
- 接口GE0/0/1下的用戶屬于不同的VLAN域,可以針對不同的VLAN分別進行流量抑制。
- 接口GE0/0/2下的用戶屬于同一個VLAN,可以直接針對該接口進行流量抑制。
- 接口GE0/0/3下的用戶對安全要求較高,基于接口阻塞廣播、未知組播以及未知單播報文的流量
(2) 配置方法:
基于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/
基于接口配置流量抑制,限制該接口廣播、未知組播以及未知單播報文的流量。
- [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%
說明:基于接口的流量抑制,有三種配置方式:可以基于百分比,包速率和比特速率分別抑制
基于接口阻塞廣播、未知組播以及未知單播報文的流量
- [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 //阻塞未知單播報文
六、風暴控制
風暴控制不僅可以通過設置速率控制廣播、未知組播以及未知單播報文,還可以在速率超過設置閾值時對接口執行懲罰動作。
1. 阻塞端口:
- 當一個檢測周期內,接口上這三類報文中任意報文的平均速率大于指定的最大閾值時,接口就會被阻塞。
- 當一個檢測周期內,接口上這三類報文中任意報文的平均速率小于指定的最小閾值時,接口就會放開阻塞。
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 //風暴控制的懲罰動作是阻塞端口