分享免费的编程资源和教程

网站首页 > 技术教程 正文

科普一下:什么叫MAC地址表溢出,一分钟了解一下

goqiw 2024-11-25 12:12:02 技术教程 7 ℃ 0 评论

概述

前两篇文章通过学习MAC地址的学习机制,我们已经知道交换机每收到一个报文,都会取出其源MAC地址,在MAC地址表中添加或者刷新表项。

这种正常的MAC地址学习流程,却被黑客利用,变成交换机的一个漏洞。因为黑客可以发送成千上万的源MAC地址变化的报文,把交换机的MAC地址表填满,从而造成正常用户之间通信的报文也以泛洪的形式来转发,从而阻塞整个网络

下面我们还是以一个例子来阐述MAC地址表溢出攻击和其防御手段。

MAC地址表溢出

拓扑

  • 交换机的4个端口E0/0-3都在同一个VLAN 10里;
  • 假设交换机的最大MAC地址表项值为5(最多能创建5个表项);
  • 攻击者持续不断的发送源MAC地址变化的报文(源MAC总共变化5次);
  • PC2向PC1发送报文。

测试配置

PC的配置:PC1、PC2、PC3的配置都类似,以PC1为例,

交换机配置:所有的PC在同一个VLAN里。

测试过程

  • 攻击者持续不断的发送源MAC地址变化的报文,会导致交换机所有的MAC表项都被占用,如下图所示:MAC地址表已经达到最大值(5);
  • PC2访问PC1,发送的报文到达交换机;交换机会取出报文的目的MAC地址,查找MAC地址表,发现没有PC1对于的表项;
  • 交换机会把这个报文从所有在同一个VLAN的接口发送出去,这样就形成泛洪;
  • 在这个场景下,PC1和PC3都能收到PC2发送给PC1的报文,这不仅导致网络中有多余的流量,也会让PC2发送的数据不安全。
  • 造成这样的现象是因为交换机没有学习PC1的MAC地址,如果交换机学习了PC1的MAC地址,则PC2的流量只会从E0/1转发出去,不会泛洪。但是攻击者把MAC地址表填充满了,交换机没有能力把PC1的MAC加入到表中。
  • 如果网络的规模比较大,则网络中所有PC互通的流量都泛洪到网络中,带宽很快的就会被占满。

防御手段

防御手段1:MAC地址老化

MAC地址老化是防止MAC地址表溢出的天然手段,不过它仅仅能用在正常使用的环境中,如果遇到有黑客攻击的场景,功能非常有限。

因为黑客会持续不断的发送报文,导致交换机也持续不断的刷新MAC地址表,这样交换机永远没有机会把正常PC的源MAC记录在MAC地址表中

防御手段2:限制MAC地址数量

MAC地址溢出攻击非常容易判断,当发现来自一个或者几个端口的MAC地址把整个MAC地址表填满之后,就可以判断这是MAC地址表溢出攻击了。

?如下图:打印MAC地址表出来以后,发现来自E0/1的MAC占据了所有的表项,

这时就可以采用限制MAC地址数量的方法来防止攻击了。将最大允许的MAC地址数量设置为2,超过的报文都丢弃,这样就能让交换机腾出表项,学习其它正常PC的MAC,配置如下图所示:

总结

MAC地址表溢出是黑客利用交换机正常的MAC地址学习流程中的漏洞而所做的攻击,它通过持续不断的发送源MAC地址变化的报文,从而填满并且一直占用所有的MAC地址表项而实现的。

对于MAC地址表溢出攻击我们也要引起足够的重视,不要说交换机性能足够强悍,不用担心这样的攻击。事实上如果不采取措施,没有交换机能抵得住MAC地址泛洪攻击,因为黑客发送上亿个MAC地址变化的报文,也是轻而易举的事情。

各位经过上面的描述,对于MAC地址表溢出攻击已经了解了吧?

如果还有疑问,欢迎留言谈论!也非常欢迎关注我的头条号,一起讨论网络问题!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表