交换机转发过滤 提高网络安全性能
来源:网界网 更新时间:2009-03-30

   当数据帧到达交换机接口时,交换机就将数据帧的目的地址与转发/过滤MAC数据库中的地址进行比较,如果目的硬件地址是已知的且已经在交换机的MAC数据库中,帧就只会被发送到正确的外出接口。交换机将不会把帧送往除了目的地接口之外的任何其他接口,这就保留了在其它网段上的带宽。这种技术就是交换机的转发过滤技术。

  这种技术对于提高网络性能与网络安全很有作用。笔者将通过两个例子来谈谈这种技术对于交换式网络的重要意义。

  案例一:利用二层交换机来隔离冲突域

  如现在有一台交换机连着四台主机,分别为A、B、C、D。假设现在主机A要发一个数据包给主机D。当交换机收到主机A发过来的数据帧之后,该如何处理呢?

  1、 若交换机中没有主机A或者主机D的MAC地址信息

  如果这个网络是刚刚组建,又或则出于某种原因,网络管理员把交换机重置后,则交换机的转发/过滤表会被清除。此时,由于主机A的MAC地址不在转发/过滤表中,所以,交换机会将主机A的MAC地址和端口添加到自己的MAC数据库中,然后再把帧转发到主机D中。但是,如果主机D的MAC地址不在交换机的MAC数据库中,则交换机会将帧转发到除了主机A连接的接口之外的其他所有接口中。也就是说,在交换机不知道目的主机MAC地址的时候,则交换机上的除了本台设备之外的其他任何设备,如主机B、C、D都将收到主机A发出的数据包。很明显,此时交换机的一些带宽就会被浪费掉。在这种情形下,转发过滤技术并不能够带来多大的益处。

  2、 若交换机知道目的主机的MAC地址

  假设交换机通过ARP等机制,在自己的MAC地址库中已经知道了所连接设备的MAC地址,如主机A、B、C、D的MAC地址。要了解这些信息不难。只要这个网络存在一定时间,则通过地址学习功能,交换机可以记录相关设备的MAC地址信息。

  在交换机已经了解了其相邻设备的MAC地址后,当交换机接收到主机A发过来的数据帧之后,会如何处理呢?交换机首先会读取数据帧中的目的MAC地址。然后在自己的MAC地址库中进行查找。发现有匹配的MAC地址后,就从MAC地址库中查询中对应的交换机出口。然后再把数据帧从这个出口转发出去。从这个转发的过程中,我们可以看到数据帧是一进一出。而不像集线器一样,是一进多出;或者像上面提到的不知道目的MAC地址那样,也是一进多出。在这种情形下,交换机直接把数据帧准确无误的转发到对应的接口上。很明显,此时就不会对其他网段的带宽带来不利的影响。

  通过这种转发过滤技术,就可以在最大限度内避免冲突域的产生,从而在很大程度上提高网络性能。

  在利用二层交换机来隔离冲突域时,要注意一个问题。当交换机不知道目的MAC地址的话,则交换机并不能够起到隔离冲突域的作用。因为此时,交换机仍然会把数据帧转发到所有的交换机接口中。故当网络管理员利用交换机组建比较大型的网络时,不要频繁的重复启动交换机等网络设备。因为重新启动后,其MAC地址库中的内容可能会丢失。如此的话,交换机就又要重零开始学习MAC地址以及MAC地址与端口的对应表。

  案例二:保护交换机端口的安全

  在交换机管理中,还有一个难点就是如何防止非授权用户的主机介入到交换机的端口上? 也就是说,在一个角落中放置了一台交换机,其中可能还有一些空闲的端口。此时,如何来保障这些端口的安全性呢?是否所有人或者网络设备都可以随意的连接到这些空闲的端口呢?答案当然是否定的。接下去,笔者就谈谈如何来保护交换机端口的安全。这跟交换机的转发过滤决定也是息息相关的。

  在思科的二层交换机中,提供了一些端口安全的保护机制。我们进入到某个交换机的接口之后,利用Switchport port-security命令,加上?通配符,就可以查看相关的端口安全选项。其实,要实现端口安全,也是基于转发过滤技术实现的。其基本原理就是通过对交换机的MAC地址库进行管理,来实现交换机端口的安全性。

  若不设置交换机端口安全(这是思科交换机的默认设置),交换机采用的是动态的MAC地址映射技术。即交换机可以自动学习连接到其接口的网络设备的MAC地址,从而完成数据帧的转发。而基于端口的安全策略的实现,就是对这个自动MAC地址学习的能力进行干预。如下面几种方式,就是笔者常用的一些解决方法。

  一是把交换机某个接口允许的源MAC地址进行设置。在思科交换机中,可以利用Switchport port-security MAC地址 MAC地址命令,把某个交换机接口允许接入的网络设备的MAC地址手工的添加进去。通过这个命令,可以将单个的MAC地址分配到交换机的每个端口中。若新接入的网络设备,其MAC地址不在这个列表中,则就无法通过这个端口进行通信。也就是说,只要采用了这个命令,交换机就会关闭地址学习功能。当然,这种配置的话,当连接在某个接口上的网络设备比较多,工作量就会变得比较大。为此,除非有特殊的需要,否则的话,笔者基本不采用这种方式。

  二是可以通过设置,让交换机一个接口只允许接入一台网络设备。默认情况下,交换机的一个端口可以接入无数的设备,在不考虑网络性能与IP地址限制的前提下。但是,在一些特殊的应用下,我们往往只允许交换机的某个端口只允许接入一台网络设备。如有时候,在部门级别的网络应用上,如网络打印机等等。出于性能与安全的考虑,网络管理员要确保这个服务器所在的接口只连接一台网络设备。因为若有多个设备连接到同一个接口中,则它们属于同一个冲突域。一方面这会影响这个服务器的性能;另一方面,其他用户也可以通过网络侦听技术窃取服务器的相关信息,从而降低服务器的安全性能。为此,网络管理员就有必要确保交换机某个接口上只能够连接有一台网络设备。这即可以利用上面的静态配置MAC地址实现;也可以通过如下的命令实现。

  Switchport port-security maximun 1

  Switchport port-security violation shutdown

  这两条命令的意思就是某个交换机的接口最多只能够连接一台网络设备。当超过这个最大数量时,这个端口就会被关闭。如果发生了端口被关闭的状况,即时用户把新增加的网络设备移除,这个端口仍然不会被自动启用。网络管理员要通过no shutdown来重新启动端口。

  三是可以通过Sticky来实现交换机端口的安全性。这跟静态配置MAC地址就有异曲同工之妙。只是其不用用户手工的配置MAC地址。当网络管理员组建好网络之后,交换机首先会自动学习相关的MAC地址。等到网络运行稳定之后,网络管理员在进行特定的接口并利用Sticky参数。此时交换机对应接口的MAC地址库动态学习功能就会被关闭。若用户增加其他网络设备,这个接口将不会接受其新的MAC地址。通过这种方式,就可以省去手工配置MAC地址的麻烦。设置后,只要在交换机不间断运行的过程中,这个MAC地址限制将会一直有效,除非网络管理员认为的改变他。

  思科交换机就是通过这种方式来提高其端口的安全性。同时也可以通过这种方式,提高特定接口的工作效率。

  不过基于转发过滤的二层交换机,还有一个先天性的缺陷。如当主机A因为某种原因,如病毒等等,发送广播数据包的时候,那么非常不幸的,这个数据包将会在交换机的各个接口进行转发,从而占用了一些不必要的带宽支出。可见,交换机虽然可以有效隔离冲突域,但是对于广播域则无能为力。

  随着交换机设备越来越便宜,笔者越来越喜欢在企业网络中采用交换机设备来提高网络的性能与实现部分安全性。转发过滤技术确实可以在很大程度上帮助网络管理员实现网络性能与安全方面的需求。若企业真在采用思科的交换机设备,那么就不要浪费,把其潜力尽量发挥出来吧。