我们都知道,组建我们的网络,交换机是必不可少的一个设备,我们都会用它来做一些相应的配置,如划分VLAN、VTP、以及生成树这些,,但是当我们配置了这些以后呢?我们如何来保证我们局域网内的端口安全呢?这是一个必要的操作。那么下面我们就使用Cisco Packet Tracer 5.2来做做这方面的实验,但是还是有一些不足,哎……,这也没有办法,毕竟是模拟器不是真实的交换机。
我们知道交换机在网络中存在规模最大,
p_w_picpath
通过这个图我们得出一个结论那就是:离接入层越近风险越大,所以问题主要集中在接入层。
那么下来我们就来分析一下这个交换机倒底存在那些安全呢?
交换机所面临***的层面:
MAC layer attacks    
VLAN attacks
Spoofing attacks
Attacks on switch devices
那么我们知道了交换机所面临这四种***,我们现在来一个一个的分析一下这些:
Mac Flooding Attack:
利用伪造数据帧或数据包软件,不停变化源MAC地址向外发包,让有限的MAC地址表空间无法容纳进而破坏MAC地址表。
应对:限定端口映射的MAC数量
p_w_picpath
在这里三台PC的IP地址如下:
p_w_picpath p_w_picpath
p_w_picpath
p_w_picpath
以下我们在交换机上面配置MAC地址绑定。
Switch(config)#interface fastEthernet 0/1        
Switch(config-if)#switchport mode access        (当端口连接是主机时,接入链路)
Switch(config-if)#switchport port-security        (启动端口安全)
Switch(config-if)#switchport port-security mac-address 00E0.A342.20E6   (绑定一个MAC地址,默认只能绑定一个MAC地址)
Switch(config-if)#switchport port-security violation ?
  protect   Security violation protect mode             (不转发数据)
  restrict  Security violation restrict mode                (不转发数据,上报网管平台)
  shutdown  Security violation shutdown mode      (关闭接口,并上报网管平台)
Switch(config-if)#switchport port-security violation shutdown
那现我们来测试一下看看能否正常使用。
p_w_picpath
从这里我们可以看见,PC0能够正常使用。那我们再新添加一台PC并将这台PC接到FA0/1端口上面看看会是什么效果。
p_w_picpath
从这个图我们可以看见,PC3接在FA0/1接口上面,当PC3没有向其它网段发送数据包的时候一切正常,那么下面我们来发送一个数据包看看呢?会有什么样的反应?
p_w_picpath p_w_picpath
我们可以看出来,当交换机的FA0/1接口接PC0的时候,能够正常使用,但是当我的PC3接入到交换机的FA0/1上,当我发送数据包PC2上面时候,而交换机发现我PC3的MAC地址不是我当初指定的那个MAC地址,所以就执行将此接口shutdown掉,从上图我们也可以看见,PC3连接的FA0/1已经被shutdown了。
那么当有其它MAC地址的计算机接入一我们这个端口以后,该端口会自动shutdown,那么当shutdown以后的接口如何恢复呢?
注意以下来条命令不能在Cisco Packet Tracer 5.2中使用,这个软件里面现在还没有集成这几条命令。
Switch(config)#errdisable recovery interval ?
<30-86400> timer-interval(sec)
可以调整在30-86400秒,缺省是300秒。
这种方法只能对付下挂交换机的情况,不能对付下挂路由器的情况。
如果产生err-disable的原因是udld,下面有一条命令非常管用:
Switch#udld reset
No ports are disabled by UDLD.
同时,接口在被置为err-disable的时候,通常有一系列的日志产生,如下:
*Mar 15 15:47:19.984: %SPANTREE-2-BLOCK_BPDUGUARD: Received BPDU on port FastEthernet0/47 with BPDU Guard enabled. Disabling port.
sw1#
*Mar 15 15:47:19.984: %PM-4-ERR_DISABLE: bpduguard error detected on Fa0/47, putting Fa0/47 in err-disable state
sw1#
*Mar 15 15:47:21.996: %LINK-3-UPDOWN: Interface FastEthernet0/47, changed state to down
收集这些日志也非常管用。
所以建议配置一个syslog server,收集log信息。
刚才在上面我们绑定的那个MAC地址是PC0的,我们现在查看一下交换机上面的MAC地址表看看:
Switch#show mac-address-table
          Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   1    0009.7c11.89e7    DYNAMIC     Fa0/3              而这一条是动态学习到的
   1    000a.41a9.79b0    DYNAMIC     Fa0/2              这条也是动态学习到的
   1    00e0.a342.20e6    STATIC      Fa0/1 这一个端口的MAC地址我们可以看见是静态指定的。
Switch#
但是针对Cisco Packet Tracer 5.2来说,我们不能直接使用no shutdown命令来启用,也不能使用我们上面的那条命令,那么我们现在就只能将我们上面的那条的那条命令改成当发现有其他的MAC地址接入到此端口的时候我们就将它设置不不转发数据并且上报网管平台。
Switch(config)#interface fastEthernet 0/1        
Switch(config-if)#switchport port-security violation restrict
p_w_picpath p_w_picpath
从上面我们可以看见,当设置为数据包不转发以后,我们从PC3上面还是ping不通我们的PC2,而我们的交换机只是不转发此数据包,当我们的PC3不发送数据而我们交换FA0/1这个端口没有被shutdown。
那么我们又出现一个新的问题?我们不可能一个端口只绑定一个MAC地址吧!那么我们如何给一个端口绑定多个MAC地址通行呢?
SW1(config)#interface fastethernet 0/1
Switch(config-if)#Switch port-security maximum 3 设置绑定多少个MAC地址,而这里我设置的是3条
Switch(config-if)#Switchport port-security max-address ***        第一条的MAC地址。
Switch(config-if)#Switchport port-security mac-address ***        第二条的MAC地址。
Switch(config-if)#Switchport port-security max-address ***        第三条的MAC地址。
但是这个设置手工绑定多条MAC地址的命令在这里没有,所以这个也不能使用。
但是在这里如果我设置了maximum设置为100的话,那么不是我们手工需要绑定100条?而且我们还需要去收集这100个MAC地址。这对于我们网管员来说是一个非常烦琐的事,那么有没有一种办法让它将接入到此端口的MAC地址自动绑定到这个MAC地址中呢?
SW1(config)#interface fastethernet 0/1
Switch(config-if)#Switch port-security maximum 3 设置绑定多少个MAC地址,而这里我设置的是3条
Switch(config-if)#switchport port-security mac-address sticky 这条命令就是将前三个接入到这个端口的计算机的MAC地址自动的加入到我们的MAC地址表中。
那么我们再来试试看呢?
Switch(config)#interface fastEthernet 0/2
Switch(config-if)#switchport mode access
Switch(config-if)#switchport port-security
Switch(config-if)#switchport port-security mac-address sticky
我们使用接入到交换机端口FA0/2这个接口的计算机发送一点数据包来看看。
p_w_picpath
现在来在交换机上面来查看一下MAC地址表。
这个表是没有发达数据包之前的。我们可以看见还是动态学习到的。
Switch#show mac-address-table
          Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   1    0009.7c11.89e7    DYNAMIC     Fa0/3
   1    000a.41a9.79b0    DYNAMIC     Fa0/2
   1    00e0.a342.20e6    STATIC      Fa0/1
Switch#
而下面的是我们命令了动态学习的到第一台通过这个端口发送数据包的那台计算机的MAC地址。而自动变成静态绑定的。
Switch#show mac-address-table
          Mac Address Table
-------------------------------------------
Vlan    Mac Address       Type        Ports
----    -----------       --------    -----
   1    0009.7c11.89e7    DYNAMIC     Fa0/3
   1    000a.41a9.79b0    STATIC      Fa0/2
   1    00e0.a342.20e6    STATIC      Fa0/1
Switch#
看看,这样是不是就解决了我们手工去绑定MAC地址那些烦琐的事件了。这样是不是给我们减轻了很大的工作量。
下面这条命令是查看端口安全的,以及每一个端口
Switch#show port-security
Secure Port MaxSecureAddr CurrentAddr SecurityViolation Security Action
               (Count)       (Count)        (Count)
--------------------------------------------------------------------
        Fa0/1        1          1                 3         Restrict
        Fa0/2        1          1                 0         Shutdown
----------------------------------------------------------------------
Switch#
从上面我们可以看出FA0/1端口有3条违反我们策略的。指行的是Restrict。而Fa0/2没有违反我们的策略,如果说现有呢就执行Shutdown。
 
以上就是我们基于MAC地址的限制。我想这个功能对于大家在实际工程中应用的还是比较广泛。我们用来做端口安全的还有一种方法那就是使用802.1x认证。
而这里使用这个软件不能做基于交换机的802.1x认证。那么那天用到真机以后我再将这方面的内容发送出来!
这里只是解决了Mac Flooding Attack现在由于时间太晚了,剩下的明天继续。