网络安全 频道

知己知彼 用VLAN技术防御黑客攻击

二.TRUNK接口的安全性

  交换机的端口有两种工作状态:一是Access状态,也就是我们用户主机接入时所需要的端口状态;二是Trunk状态,主要用于跨交换的相同VLAN_id之间的VLAN通讯。、

  Access状态一般被我们称之为正常状态,是主机的正常接入接口,这种接口的状态能引起安全的问题很小,我们不在这里详细的描述了。

  干道技术(Trunking)是通过两个设备之间点对点的连接来承载多个VLAN数据的一种方法。以下两种方法可以实现以太网干道连接ISL(交换机间链路,Cisco私有协议) 802.1Q(IEEE组织制度,国际标准)。

  前文提到的802.1Q 和 ISL 标记攻击,就是利用的Trunk的原理来实现的。那么我们在进行Trunk的操作中,怎样做才能更有效的避免这个安全隐患呢?

  我们已经知道,在实施Trunk时,我们可以不进行任何的命令操作,也可以完成在跨交换的相同VLAN-ID之间的通讯。这是因为我们有DTP(DYNAMIC TRUNK PROTCOL)。我们所有的接口上缺省使用了下面这条命令:

  Switch(config-if)#switchport mode dynamic desirable

  这条命令使我们所有的接口都处于了自适应的状态,会根据对方的接口状态来发生自适应的变化,对方是Access,就设置自己为Access;对方是Trunk,就设置自己为Trunk。除了desirable这个参数以外,还有一个和它功能比较相似的参数:Auto。这两个参数其实都有自适应的功能,稍微的一点不同在于是否是主动的发出DTP(DYNAMIC TRUNK PROTCOL)的包,有就是说是否主动的和对方进行端口状态的协商。Desirable能主动的发送和接收DTP包,去积极和对方进行端口的商讨,不会去考虑对方的接口是否是有效的工作接口,而Auto只能被动的接收DTP包,如果对方不能发送DTP消息,则永远不会完成数据通信。说到这,大家肯定认为Auto这个参数安全系数要比Desirable参数,其实这两个参数的实施所产生的安全隐患是一样的。大家想想,VLAN跳跃攻击往往是对方将自己的接口设为主动自适应状态,那么我们不管用哪个参数,其结果是完全一样的。

  这样的两个参数本意是给我们减轻工作负担,加快VLAN的配置而产生的。但随着网络的不断发展,针对这个特性而引发的安全隐患(比如:VLAN的跳跃攻击就是利用了这个特性),越来越引起我们的关注。

  想要解决这个安全隐患,只需进行以下操作。

  步骤1:我们首先将交换机上所有接口上,输入这个命令:

  Switch(config-if)# switchport mode access

  我们将交换机的所有接口都强制设为Access状态,这样做的目的是当攻击者设定自己的接口为Desirable状态时,怎么协商所得到的结果都是Accsee状态。使攻击者没法利用交换机上的空闲端口,伪装成Trunk端口,进行局域网攻击。

  再在Trunk接口上输入:

  Switch(config-if)# switchport mode trunk

  这条命令的功能,就是强制使端口的状态成为Trunk。不会去考虑对方接口状态,也就是说不管对方的接口是什么状态,我的接口都是Trunk。大家注意:这条命令仅仅在Trunk的真实接口上输入,这样使我们的接口在状态上是唯一的,可控性明显的增强了。

  其次我们可以在Trunk的接口上再输入下面这条命令:

  Switch(config-if)#switchport trunk allowed vlan 10,20,30

  这条命令定义了在这个Trunk的接口只允许VLAN10,20,30的数据从此通过.如果还有其他VLAN存在,他们的数据将不能通过这个Trunk接口通过。这样允许那些VLAN通过,那些不能通过,就很容易实施。我们就通过这种简单控制数据的流向而达到安全的目的。

  在完成了上述提升我们的VLAN安全三条命令后,我们的这些接口已经具备了较高的安全性。但读者肯定还有个疑问,那就是使用了这些命令后,DTP这些协议是否还在工作?回答是肯定的,DTP协议依旧在工作。

  所以我们最后还有一条强烈建议大家在配制VLAN时,必加的命令:

  Switch(config-if)#switchport nonegotiate

  大家一看到这条命令,就知道它的功能了。Nonegotiate的意思就是不协商。所以上面这条命令就是帮助我们彻底的将发送和接收DTP包的功能完全关闭。在关闭的DTP协议后,该接口的状态将永远稳定成Trunk,使接口的状态达到了最大的稳定性,最大化避免了攻击者的各种试探努力。

  另外,在802.1Q的Trunk中还有一个相关的安全问题,那就是Native VLAN。众所周知,在Cisco的Catalyst系列的交换机中,有几个缺省的VLAN。对于以太网用户而言,我们需要了解其中最重要的一个,那就是VLAN 1。缺省情况下,交换机的所有以太网接口都属于VLAN 1。而且我们在配置二层交换机上配置IP地址时,也是在VLAN 1这个接口下完成的。

  在802.1Q的干道协议中,每个802.1Q封装的接口都被作为干道使用,这种接口都有一个Native VLAN并被分配Native VLAN ID(缺省是VLAN 1),802.1Q不会标记属于Native VLAN的数据帧,而所有未被标记VLAN号的数据帧都被视为Native VLAN的数据。那么VLAN 1作为缺省的Native VLAN,在所有的交换机上都是相同。因此由Native VLAN引起的安全问题,在局域网中必须引起我们的重视。这个安全隐患的解决办法就是更改缺省Native VLAN,我们可以用一条命令

  Switch(config-if)# switchport trunk native vlan 99

  这条命令需要在一个封装了801.1Q的接口下输入,这条命令将缺省的Native VLAN更改为VLAN 99。执行这条命令后,Native VLAN不相同的交换机将无法通讯。增加了交换机在划分VLAN后的安全性。

0
相关文章