二层安全之MAC Flooding解析与解决方法

一、了解MAC Flooding原理

1.1 如图所示,网络中有3个PC和一个交换机,在正常情况下,如果PC A向PC B发送信息,PC C是不会知道的,过程都通过中间的交换机进行透明的处理,并且会记录下源MAC地址和源端口的信息到交换机中,以便下次快速转发。

mac_learning

  1.2 当攻击者PC C利用MAC flooding攻击对交换机发送很多非法的包含不同源MAC地址的封包时,交换机会把所有这些MAC地址记录到自己的CAM(Content Addressable Memory)表之中,当这些记录超过一定的数量(不同型号的机器不同,详情请查看文章最后),超过交换机所能承载的内存的时候,MAC flooding的效果就达成了。

mac_flooding_attack

  1.3 当MAC flooding效果达成的时候,交换机就变成了集线器,对所有信息进行无定向广播,PC A 发送给PC B的信息PC C也可以收到了。这个时候PC C就可以捕获数据进行数据截取等操作。

mac_flooding_attack_2

二、解决方法-启用端口安全

2.1 端口安全就是限制端口访问的MAC地址,具体操作步骤可以从以下几点去考虑

  • 启用端口安全 
  • 设置mac地址限制
  • 指定允许的MAC地址
  • 定义违规后的操作

2.2 以思科交换机操作为例,在指定的端口上开启端口安全并且指定最大的MAC地址数量操作命令如下

switch(config-if)#switchport port-security [maximum value] violation { protest | restrict | shutdown}

2.3 简单拓扑示例图:

2.4 Violation操作的三种方式:

  1. protect:如果MAC地址超过定义数量(默认为1),则新的无定义源MAC地址的封包进入交换机,交换机将直接丢弃该报
  2. restrict:如果MAC地址超过定义数量(默认为1),则新的无定义源MAC地址的封包进入交换机,交换机将直接丢弃该报,并向SNMP发送trap报文
  3. shutdown:如果MAC地址超过定义数量(默认为1),则新的无定义源MAC地址的封包进入交换机,交换机端口直接变为errdisable状态,并向SNMP发送trap报文

三、详细步骤 

3.1 开启交换机端口交换模式

命令解析:

 3.2 MAC 地址绑定策略,非法数据包处理策略

命令解析:

四、检查端口安全设置情况

4.1 show port-security

由下图可以看到,当前设置为允许最大mac连接数为2,当前连接数为1台mac,同时定义违规后的

操作动作为Protect。

4.2 show port-security address

显示MAC地址表的安全信息

 

部分参考:

 http://www.xiaopeiqing.com/posts/1439.html

原文地址:https://www.cnblogs.com/tdcqma/p/5519316.html