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