二層網(wǎng)絡(luò)安全你知道多少
二層轉(zhuǎn)發(fā)的轉(zhuǎn)發(fā)表是MAC表,設(shè)備通過MAC表查找報文的出接口,如果查表失敗,報文就會進行廣播,所以廣播風(fēng)暴是二層網(wǎng)絡(luò)中最常見的現(xiàn)象。因此,如何保證轉(zhuǎn)發(fā)表的安全和如何抑制廣播風(fēng)暴,是二層網(wǎng)絡(luò)安全的重點問題。
一、如何保證轉(zhuǎn)發(fā)表安全?
為了保證二層流量能夠正常轉(zhuǎn)發(fā),針對不同的應(yīng)用場景,交換機提供了不同的方法保證轉(zhuǎn)發(fā)表的安全。譬如:MAC防漂移和端口安全通過MAC和接口的綁定,保證MAC表的安全。DHCP Snooping通過記錄用戶DHCP的認證信息,保證動態(tài)用戶的安全接入。
二、MAC防漂移
接口只要接收到報文,就會進行MAC表項學(xué)習(xí)。交換機從正確的接口學(xué)習(xí)到合法用戶的MAC表后,又從其他接口接收到非法用戶的攻擊報文時,就會導(dǎo)致MAC表項學(xué)習(xí)錯誤,二層轉(zhuǎn)發(fā)出現(xiàn)異常。
最典型的場景如下圖所示,非法用戶通過模擬網(wǎng)關(guān)的源MAC向接入交換機發(fā)送報文,網(wǎng)關(guān)對應(yīng)MAC1的出接口就會從IF1漂移到IF2。這樣下行用戶向網(wǎng)關(guān)發(fā)送報文時,通過MAC表項查詢到的出接口就是錯誤的IF2,用戶的報文就無法轉(zhuǎn)發(fā)到網(wǎng)關(guān),二層轉(zhuǎn)發(fā)異常。
針對該場景,S交換機有兩種方法進行安全預(yù)防:
1. 配置靜態(tài)MAC:
把網(wǎng)關(guān)的MAC和接口手動綁定,使網(wǎng)關(guān)的MAC無法發(fā)生漂移。
- [SwitchA] mac-address static 3-3-3 gigabitethernet 0/0/10 vlan 4 //假設(shè)網(wǎng)關(guān)的MAC是3-3-3,接口是GE0/0/10,把接口和MAC在VLAN 4的廣播域內(nèi)綁定
2. 配置MAC學(xué)習(xí)優(yōu)先級:
使IF1接口MAC學(xué)習(xí)優(yōu)先級高于IF2接口,這樣如果IF2接口再收到源MAC是MAC1的報文時,不再進行MAC學(xué)習(xí),使MAC地址不進行漂移。
- [SwitchA] interface gigabitethernet 0/0/10 //連接網(wǎng)關(guān)的接口[SwitchA-GigabitEthernet0/0/10] mac-learning priority 3 //配置接口MAC學(xué)習(xí)優(yōu)先級為最高值3
說明:有些交換機不支持配置MAC學(xué)習(xí)優(yōu)先級,可以通過配置MAC Spoofing功能設(shè)置網(wǎng)關(guān)接口為信任接口,防止網(wǎng)關(guān)的MAC地址漂移,配置方法如下:
- [SwitchA] mac-spoofing-defend enable //全局使能MAC Spoofing功能
- [SwitchA] interface gigabitethernet 0/0/10 //連接網(wǎng)關(guān)的接口
- [SwitchA-GigabitEthernet0/0/10] mac-spoofing-defend enable //配置接口為信任接口
三、端口安全
端口安全也是一種保證轉(zhuǎn)發(fā)表安全的特性。在接口上使能端口安全功能后,接口上學(xué)習(xí)到的MAC地址就會自動轉(zhuǎn)換為安全MAC,實現(xiàn)MAC地址和接口綁定,這樣該MAC對應(yīng)的用戶就只能從該接口接入,無法再從其他接口接入。
另外,端口安全還可以通過設(shè)置接口下MAC表項的個數(shù)限制用戶接入,保證只有先到的用戶能夠接入,后來的用戶無法接入,同時也防止了黑洞MAC泛洪攻擊導(dǎo)致MAC表溢出的問題。
但是端口安全無法判斷接入的用戶是否合法,只能保證先到的用戶可以接入,如果先到的用戶是非法的,也是可以接入的。
如上圖,某企業(yè)為了保證接入用戶的安全性,防止非法用戶通過發(fā)送源MAC頻繁變化的報文攻擊網(wǎng)絡(luò),同時防止非法用戶通過仿冒MAC地址接入網(wǎng)絡(luò)。要求一個接口下只允許三個用戶接入,同時要求這三個用戶只能從指定接口接入,不能從任意端口接入。
為了實現(xiàn)上面安全策略,可以在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的綁定不會消失
四、如何抑制廣播風(fēng)暴?
1. 什么是廣播風(fēng)暴?
就是廣播、未知組播以及未知單播報文過多或者在網(wǎng)絡(luò)中成環(huán)的一種現(xiàn)象。
2. 為什么會有廣播風(fēng)暴?
二層轉(zhuǎn)發(fā)是根據(jù)MAC表項轉(zhuǎn)發(fā)的,如果報文的MAC地址在MAC表中找不到對應(yīng)的出接口,報文就會在VLAN內(nèi)所有端口進行轉(zhuǎn)發(fā),從而產(chǎn)生廣播風(fēng)暴。
3. 怎么抑制廣播風(fēng)暴呢?
抑制廣播風(fēng)暴最根本的方法是找到報文的出接口,使報文進行單播轉(zhuǎn)發(fā)。然而在實際應(yīng)用中,由于MAC表的規(guī)格限制和二層轉(zhuǎn)發(fā)的原理,廣播風(fēng)暴是無法徹底解決的,只能盡可能的減少安全風(fēng)險。
交換機提供了兩種安全方法:一是基于不同維度進行流量抑制,二是通過風(fēng)暴控制阻塞端口或Error-Down端口。
五、流量抑制
流量抑制可以從下面3個維度進行抑制:
1. 基于接口進行流量限制
在接口的入方向上,分別對三類報文按百分比、包速率和比特速率進行流量抑制。
2. 基于VLAN進行流量限制
對某個VLAN的上行流量,分別對三類報文按比特速率進行流量抑制。
3. 基于接口進行流量阻塞
在接口的出方向上,阻塞這三類報文的轉(zhuǎn)發(fā)。
這些功能又該怎么應(yīng)用呢?我們從下圖拓撲看一下應(yīng)用場景和配置方法。
SwitchA是匯聚層交換機,通過接口GE0/0/1接入網(wǎng)絡(luò)的用戶屬于兩個VLAN,VLAN 10和 VLAN 20;通過接口GE0/0/2接入網(wǎng)絡(luò)的用戶屬于VLAN 30;通過接口GE0/0/3接入網(wǎng)絡(luò)只有一個固定的用戶,該用戶對安全要求較高,不希望收到廣播、未知組播以及未知單播報文。
(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視圖下應(yīng)用該模板,對廣播報文進行抑制,承諾速率是1000kbit/s
- [SwitchA-vlan10] multicast-suppression qoscar1 //在VLAN視圖下應(yīng)用該模板,對未知組播的抑制,承諾速率是1000kbit/s
- [SwitchA-vlan10] unicast-suppression qoscar1 //在VLAN視圖下應(yīng)用該模板,對未知單播的抑制,承諾速率是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 //阻塞未知單播報文
六、風(fēng)暴控制
風(fēng)暴控制不僅可以通過設(shè)置速率控制廣播、未知組播以及未知單播報文,還可以在速率超過設(shè)置閾值時對接口執(zhí)行懲罰動作。
1. 阻塞端口:
- 當(dāng)一個檢測周期內(nèi),接口上這三類報文中任意報文的平均速率大于指定的最大閾值時,接口就會被阻塞。
- 當(dāng)一個檢測周期內(nèi),接口上這三類報文中任意報文的平均速率小于指定的最小閾值時,接口就會放開阻塞。
2. Error-Down端口:
- 當(dāng)一個檢測周期內(nèi),接口上這三類報文中任意報文的平均速率大于指定的最大閾值時,接口就會被Error-Down。
- 缺省情況下,被Error-Down的接口不會自動恢復(fù),需要手動執(zhí)行restart命令進行恢復(fù)。
- 如果在接口被Error-Down之前配置了自動恢復(fù)時間,到達時間后接口就會自動恢復(fù)。
配置方法:
- [SwitchA] error-down auto-recovery cause storm-control interval 20 //如果接口被風(fēng)暴控制error down,20秒后接口自動恢復(fù)
- [SwitchA] interface gigabitethernet 0/0/5
- [SwitchA-GigabitEthernet0/0/5] storm-control broadcast min-rate 1000 max-rate 2000 //廣播報文執(zhí)行懲罰動作的閾值
- [SwitchA-GigabitEthernet0/0/5] storm-control action error-down //風(fēng)暴控制的懲罰動作是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 //未知組播報文執(zhí)行懲罰動作的閾值
- [SwitchA-GigabitEthernet0/0/6] storm-control action block //風(fēng)暴控制的懲罰動作是阻塞端口