暂无图片
暂无图片
1
暂无图片
暂无图片
暂无图片

华为交换技术mac 安全深入详解(上)

爱婷如命一生一世 2019-07-28
3218


MAC地址是网络设备中不变的物理地址(不包括软件修改的方法),所以基于mac地址的接入控制,我认为是最直接,甚至在某些场合下是最有效的控制手段,在二层交换网络中,通过依靠保存在交换机的mac地址表来进行存执的,控制交换机中存储的mac地址表就可以控制一些非法设备的接入,在华为s系列的交换机中,为了实现这个目的有很多基于Mac 地址的安全手段,下面我分享的就是这一方面的理论和配置内容!

分享的思路是先把理论部分梳理一遍,最后根据实验演示去验证理论。

针对以太网传输在学习华为交换的时候,我知道交换机的mac地址表老化时间为300秒,这个老化时间作用就是在老化时间周期内,未收到新的报文进入端口,老化时间到了之后,MAC地址将在MAC地址表中删除掉


先巩固下基础,交换机MAC地址表形成过程,如图所示:交换机在最初的时候,Mac地址表为空,在学到mac地址表之后,会有一个计时器存在,倒计时开始,300秒计时,到0秒的时候,没有数据流入,相应的Mac地址表将会清空;计时未结束有数据从接口流入,Mac地址表项计时器重置为300秒。




老化时间长短的使用场景:

越短,设备对周边网络变化越敏感,适合在网络拓扑变化较频繁的场景。

越长,适合在网络拓扑比较稳定的环境。


深入分析交换机学习mac地址表的过程

在大部分交换机中所承载的mac表项为1K容量,就是1024条目(一个mac地址就代表了一个终端,在中小企业中,一台交换机能承载1000多台用户设备,规模也是很大的!)。华为S7系列交换机的mac地址表容量能达到4K

我在华为s5系列查看Mac地址表的最大容量

<SW1>display mac-address summary 

经过数据转换,证实是4K。

从   设备的角度   来看这个定时器,举例华为s3700接入层的交换机,可承载1000条mac地址条目,那么mac地址表老化时间的定时器数量也是1000个,这么多的定时器存在,几何倍增加的运算量势必会给设备CPU带来不小的消耗!最后导致忙于计时的资源消耗使得转发质量降低

如图所示:图中画圈的指的mac地址表的老化时间计时器


很多通信厂商也是考虑到了这一点。举例华为的做法--采用命中标志位,这样的机制带来的好处:提高交换设备检查mac地址条目效率,成批量的进行计时删除及重置,如图所示:注意的是,首次进入周期内的mac地址表必须置为1,置为0的后果就是存活时间过短导致多次删除的操作~

这样的话,可以大胆判断出,交换机中mac地址表的老化时间为:第一周期和第三周期之间,也就是600秒!

如图所示:有个极端的例子就打破了交换机老化时间300秒的原则!因此可以认为mac地址表老化存活周期最短为一个300秒周期内,最长600秒!

MAC地址漂移不仅仅仅是环路

当网络拓扑中出现环路出现的时候,局域网内会产生:mac地址漂移,广播风暴、未知单播帧!利用生成树可以解决此问题。

但是在环路发生时,也有STP协议束手无策的情况发生,黑客利用软件生成大量假的mac地址或者冒充PC1的mac地址,会造成网络传输异常~

如图所示:

PC1和PC2 -->PC4互相通信

PC3-->PC1通讯会产生mac地址漂移的问题。PC3传输给PC1的数据会被黑客窃取到~后文会有对Mac 地址漂移的方案解决。

交换机承载mac地址数量

在非正常情况下,黑客攻击机向网关发送大量的源mac地址,(例如kalinux中的工具可以实现)其余的正常用户设备在通讯时会出现异常!

当交换机mac地址承载状态为爆表时,(交换机的mac地址表满了)交换机不会丢弃来自其他接口的接受到的报文(不产生新的mac地址表项)无条件进行广播转发,形成未知单播帧(交换机就不会产生PC2的Mac地址表)!

为了解决这个端口下的安全隐患,可以让交换机的每个端口学习mac地址数量加以控制,也可以让交换机某个端口不学习mac地址,也可以基于vlan范围控制!!后文会详细介绍演示方法。

如图所示:在交换机刚启动时,在同一Vlan下,交换机下面分别有两个客户端A B !

如图所示:A向B发送ping包,是肯定ping通的!但是Ping通之前,A向B发送一个ARP请求,通过ARP响应B给A的回复一个mac地址,这时A向B发送ICMP报文~

问:此时状态下的交换机存在ARP表吗?

答“有”!

有的原因在于:交换机存在一次学习,N次转发的原则


首先要明白ARP表和MAC地址表的区别:

arp表中描述的是ip地址与mac地址的对应关系,用来通过ip地址解析mac地址的!在局域网内,最终通过mac地址表查找对应的出接口进行数据帧转发!

Mac 地址表用于同一子网,ARP用于不同子网


来验证下这个问题!此时交换机的mac地址表是空的~

<Huawei>dis mac-address

执行PC1ping 10.0.0.20,并抓取PC1的报文!

如图所示:pc1向PC2在发送ICMP报文之前,确实发送了ARP报文!

此时,交换机是存在mac地址表的!2、3号端口各自对应相应客户端的mac地址!

如图所示:我们能看到mac地址表记录了与交换机相连设备的mac地址,接口号,以及所属的vlan id对应关系,在研发层面所说的CAM---内容可寻址内存表。

在PC1和PC2第一次进行通讯时,会建立一个ARP表

10.0.0.10 ----> 54-89-98-2F-3D-9D

10.0.0.20 ---->54-89-98-F7-28-94

三层交换技术介入,使得再次流入端口的数据,让交换机直接查看IP地址进行转发~~但在ENSP模拟器下的交换机中,我并没有看到ARP表!但是物理机是有的!

<Huawei>dis arp

原因在于ENSP的bug!


注意:交换机ARP表是通过Mac地址表产生的!(注意区别:Mac 地址表用于同一子网,ARP用于不同子网)

对应不同的网段转发,交换机利用ARP表不同网段的通讯,需要将IP地址映射到真正的mac地址上~

而mac地址表的产生,却是由Vlan衍生!如果vlan号不同,交换机默认情况是不能进行转发,是进行隔离操作!


如图所示:基本配置忽略!证明不同网段下ARP表是存在,并且有对应关系!


PC1和PC3在不同网段内通讯正常!


查看交换机的mac地址和arp表,如图所示:

思科的交换机arp表 是不跟端口。

华为的交换机arp表 是跟端口。

ARP表存活时间:

思科5分钟。

华为20分钟。

当某个Mac地址表发生变化,而ARP表没有发生变化!带来的隐患是在不同网段通讯会中断!

考虑到这个问题的时候,我有想过华为定义的ARP表项这么长,要不要改成5分钟呢???(建议不更改!)

不更改的原因在于一个机制问题:当mac地址表对应的端口信息发生变化时,它会立即反馈给ARP表(当某个端口新学习到mac地址,反馈给ARP表,进行双表同步!

不同步的特殊情况:生产环境中存在着服务器双网卡的情况,当服务器的网卡A出现问题,主交换机是感应不到的!

服务器的Mac地址会发生变化(mac地址会变成mac2的地址),通讯顶多闪退后保持正常,只不过数据流的方向是经过备用--->主设备--->ISP

但是主交换机是不知道服务器发生问题(虚拟三层地址转发),这就导致主设备中的默认情况下mac地址表发生变化,而ARP没发生变化!

大概的理论部分讲解完毕,下面进行试验操作部分。

Mac地址实验演示

mac地址表的表项分类:

  1. 静态mac地址表项:由用户手动配置,不存在老化时间。优先级最高!

  2. 动态mac地址表项:由接口通过对报文中的源mac地址学习方式动态获得,存在老化时间。

  3. 黑洞mac地址表项:一种特殊的静态mac地址表,用于丢弃含有特定源mac地址或目的mac地址的数据帧,也不会有老化时间。



部署静态mac地址表实验演示

拓扑中实现全网互通,sw1的交换机mac地址正常显示,相应的mac地址对应相应的端口。

PC2充当局域网内威胁机,生产环境中可以利用kail linux更改mac地址即可,这里,将PC2的mac地址改为pc1的Mac地址:

现在PC1和pc2之间,互相进行通讯,我发现在实验中PC2的Mac 地址只要更改了pc1的mac地址,两者间通讯直接中断,但之前版本的ENSP模拟器是不会中断的!实际的生产环境中也是一样,直接会导致正常的用户(PC1)无法通讯的!并且在交换机中提示了g0/0/2和G0/0/3端口出现了漂移。

而且交换机的mac地址表也出现了问题:非法的G0/0/3口出现了两个mac地址!出现这样的漂移现象,会给局域网带来很大的通讯问题。


方法1:

在sw1的g0/0/2接口下设置mac地址固定(添加静态的mac地址表),可以保证pc1的通讯。

[SW1]mac-address static 5489-9867-0275 GigabitEthernet 0/0/2 vlan 1

H-H-H的H代表了1-4位的十六进制数。将pc1的Mac地址表固定在g0/0/2的端口中去。

在交换机下查看静态mac地址表:

[SW1]display  mac-address static 

但是这样的办法在遇到大量的mac地址部署时,这条命令的效率还会很低~!这就需要黑洞路由表项去解决。

设置完静态的mac地址表后,PC2就不能跟局域网任何一台主机进行通讯了:


黑洞mac地址表项

先删掉之前的静态mac地址表命令[

SW1]undo mac-address static 5489-9867-0275 GigabitEthernet 0/0/2 vlan 1

黑洞mac地址表作为一个特殊的静态Mac地址表,防止无用的mac地址占用mac地址表,同时为了防止黑客通过Mac地址攻击用户设备或网络,可将非信任用户mac地址设置成黑洞mac地址,当设备收到目的mac或源Mac为黑洞mac地址表时,直接丢弃。拓扑中,在正常通讯的时候,交换机的Mac地表项是这样的:

当PC2确实是局域网内的病毒机,确定PC2的Mac表后,设置了mac黑洞,PC2所在的端口就不能够正常通讯了。

[SW1]mac-address blackhole 5489-9889-0556 vlan 1

注意:这条命令后面必须跟vlan 参数,如果不跟vlan,导致这条命令不生效!

因为,跟vlan的背后理论是二层技术中mac地址的广播是在某个vlan下进行广播,并不是全部的广播的理论(排除一个交换机一个vlan)!带来的好处就是范围缩小!

当设置了mac地址黑洞表项命令的时候,PC1和PC2直接就不能通讯了。

查看sw1的mac黑洞地址表:

[SW1]display  mac-address blackhole 

取消mac地址黑洞命令[SW1]undo mac-address blackhole 

mac地址的老化时间

[SW1]mac-address aging-time ?

如果将Mac 地址表的老化时间设置为0,意味着mac地址老化功能失效,mac地址时间永不老化,默认的时间是300秒。

你可以随意指定mac地址表的老化时间:

[SW1]mac-address aging-time 10

查看修改后的Mac地址老化时间:

<SW1>display  mac-address aging-time 

问:

当mac地址表爆满时,新加入的PC端,是否能和其他终端进行通信?

答:

可以正常通信,但是在交换机中无法形成mac地址表,以广播的形式发送未知单播帧!


关闭mac地址学习功能

提高网络安全性,防止设备学习到非法的mac地址,可选择此功能,这样设备将不再从这些接口上学习新的mac地址的。也是为设置防止mac地址表数量呈现爆满状态导致的交换机通讯异常!关闭此功能,交换机依旧可以转发数据!(注意是针对动态mac地址表项关闭的)

关闭方式分为两种:

①端口下关闭

②vlan下关闭 : vlan视图,不治之丢弃或转发动作的选择,都是默认的forward动作,毕竟针对vlan中所有的接口进行配置,全部丢弃,影响范围过大!

两者间最大的区别在于端口下有动作选项,vlan下关闭没有动作选项华为选用这样的机制,意义在于当局域网出现大量出现伪造mac地址的现象,保证网络通畅,不让交换机学习Mac 地址的情况下(初始化mac地址表数量),减轻设备负载能力,从而最快定位问题所在


端口下关闭

[SW1-GigabitEthernet0/0/3]mac-address learning disable 

交换机不能够学到g0/0/3接口下的pc2的mac地址,但是会转发其他终端的数据!不跟动作的情况下默认是转发动作!

即使关闭了sw1中的g0/0/3接口的mac地址学习功能,当pc5 ping 10.0.1.12进行通讯时,g/0/0/2接口依旧会转发广播报文,如图所示:g0/0/2接口会发送一个arp报文,问10.0.1.12是谁?请告诉10.0.1.15,紧接着出现了大量的icmp的request报文,由于sw1没有54-89-98-89-05-56所在的g0/0/3接口的mac地址表项,(在pc5 ping 10.0.1.12(pc2)时,不设置这个功能时,不会给g0/0/2口进行转发数据)设置了在g0/0/3下关闭了mac地址学习功能后,在g0/0/2号口抓取报文发现竟然有icmp的请求报文,而icmp的回应报文是不会有的!因为PC2回应PC5的报文时,G0/0/3接口是没有学习功能的!因此sw1的g0/0/2的接口就转发了来自PC5ping PC2的请求报文。



关闭学习功能后在不指定动作的情况下,默认是转发动作是forward,这里我指定的动作是discard。

[SW1-GigabitEthernet0/0/3]mac-address learning disable action  discard

当设置了discard之后,PC2就不能跟任何主机通信了。但是其他主机之间可以正常通讯!

vlan下关闭

[SW1]vlan 1

[SW1-vlan1]mac-address learning disable ?

如图所示:我们看到在vlan下关闭mac地址学习功能后没有任何参数可接,意味着依旧可以进行转发

取消vlan下禁止学习mac地址功能:

[SW1-vlan1]undo mac-address learning disable


接下来,深入分析端口下和vlan下配置禁止学习mac地址功能演示:

实验拓扑

验证问题1:sw1交换机上同时配置端口、VLAN下的禁止学习mac地址功能


52..........

文章转载自爱婷如命一生一世,如果涉嫌侵权,请发送邮件至:contact@modb.pro进行举报,并提供相关证据,一经查实,墨天轮将立刻删除相关内容。

评论