《电子技术应用》
您所在的位置:首页 > 通信与网络 > 设计应用 > 链路层安全隐患及防范技术
链路层安全隐患及防范技术
来源:电子技术应用2011年第4期
王 群
江苏警官学院 公安科技系,江苏 南京 210012
摘要: 针对数据链路层的安全隐患,利用ARP、DHCP、STP、DTP、VTP等协议的网络攻击,提出了相应的防范对策。以交换式以太网技术为基础,分析数据链路层的不安全因素,有针对性地给出了相应的解决方法和思路。
中图分类号: TP309.2
文献标识码: A
文章编号: 0258-7998(2011)04-0133-05
Security risks and defense technology of data link layer
Wang Qun
Department of Science & Technology,Jiangsu Police Institute,Nanjing 210012,China
Abstract: For data link layer security troubles, the attacks using ARP,DHCP,STP,DTP,VTP and other network protocols,this paper puts forward the corresponding preventive measures. Based on the switching ethernet technology, the paper analyzes the security troubles of data link layer through the introduction of implementation details for communication protocol. At last, the paper provides the corresponding solutions and ideas.
Key words : switching Ethernet;data link layer;communication protocol;data frame;network security


    目前,网络和信息安全已上升到国家安全的层面。在早期的计算机网络安全研究中,普遍存在着重两头而轻中间的现象,将网络安全的注意力主要集中在网络体系结构的高层和低层,而忽视了中间层次的安全问题。如针对物理层的安全提出了大量的涉及物理、电子、电气和功能等特性的解决方案;针对应用层的安全出现了种类丰富、功能完善的面向协议的技术和产品。然而,只有当ARP欺骗攻击在局域网中大范围爆发而一时无法找到彻底的解决办法时,才注意到中间层,尤其是数据链路层的安全问题。数据链路层的主要功能是在相邻节点之间,通过各种控制协议和规程在有差错的物理信道中实现无差错的、可靠的数据帧传输[1]。本文以交换式局域网应用为主,集中分析了数据链路层的安全问题,有针对性地提出了相应的解决方法和思路,并以Cisco交换机为例,给出了相应的配置方法。
1 数据链路层主要安全问题
1.1 ARP欺骗攻击

    ARP(Address Resolution Protocol)的功能是通过IP地址查找对应端口的MAC地址,以便在TCP/IP网络中实现共享信道的节点之间利用MAC地址进行通信。由于ARP协议在设计中存在主动发送ARP报文的漏洞,使得主机可以发送虚假的ARP请求报文或响应报文,而报文中的源IP地址和源MAC地址均可以进行伪造。在局域网中,既可以伪造成某一台主机(如服务器)的IP地址和MAC地址的组合,也可以伪造成网关IP地址与MAC地址的组合。这种组合可以根据攻击者的意图进行任意搭配,而现有的局域网却没有相应的机制和协议来防止这种伪造行为。近几年来,几乎所有局域网都遭遇过ARP欺骗攻击的侵害。
    图1所示为假设主机C为局域网中的网关,主机D为ARP欺骗者。当局域网中的计算机要与其他网络进行通信(如访问Internet)时,所有发往其他网络的数据全部发给了主机D,而主机D并非真正的网关,这样整个网络将无法与其他网络进行通信。这种现象在ARP欺骗攻击中非常普遍。

1.2 DHCP欺骗攻击
    DHCP(Dynamic Host Configuration Protocol)的功能是对客户端动态地分配IP地址及相关参数。但DHCP却存在着一个非常大的安全隐患:当一台运行有DHCP客户端程序的计算机连接到网络中时,即使是一个没有权限使用网络的非法用户也能很容易地从DHCP服务器获得一个IP地址及网关、DNS等信息,成为网络的合法使用者[2]。由于DHCP客户端在获得DHCP服务器的IP地址等信息时,系统没有提供对合法DHCP服务器的认证,所以DHCP客户端从首先得到DHCP响应(DHCPOFFER)的DHCP服务器处获得IP地址等信息。为此,不管是人为的网络攻击、破坏,还是无意的操作,一旦在网络中接入了一台DHCP服务器,该DHCP服务器就可以为DHCP客户端提供IP地址等信息的服务。其结果是:(1)客户端从非法DHCP服务器获得了不正确的IP地址、网关、DNS等参数,无法实现正常的网络连接;(2)客户端从非法DHCP服务器处获得的IP地址与网络中正常用户使用的IP地址冲突,影响了网络的正常运行。尤其当客户端获得的IP地址与网络中某些重要的服务器的IP地址冲突时,整个网络将处于混乱状态;(3)攻击伪造大量的DHCP请求报文,将DHCP服务器中可供分配的IP地址耗尽,使正常的用户无法获得IP地址。
1.3 生成树协议攻击
    生成树协议STP(Spanning Tree Protocol)是用于解决网络环路问题的一种智能算法。在交换式网络中,通过在两个交换节点之间提供多条物理链路来提供线路冗余,以增加设备之间连接的可靠性。但是,当在两个交换节点(如交换机)之间存在两条以上的物理链路时将会形成环路。如果没有相应的备份策略,环路的存在将会形成广播风暴。轻则严重影响网络的性能,重则导致网络瘫痪。生成树协议的实现基础是BPDU(Bridge Protocol Data Units)报文,通过在不同交换机之间交换的BPDU报文,在网络中选举一台网桥ID(Bridge ID)最低的交换机作为根网桥(Root Bridge),并将交换机上发送该BPDU报文端口ID(Port ID)的值设置为最低,交换机上端口ID值最低的端口为根端口(Root Port),根端口连接的链路为主链路。通过计算网络中各个交换机到达根网桥的路径开销,选择各交换节点到达根网桥的最优路径,同时阻断其他的次优路径(即冗余链路),从而形成逻辑上无环路的树形拓扑结构。
    根据STP的工作原理,同一网络中的所有交换机之间都可以通过网桥ID的值来选择根网桥,这样攻击者可以在网络中接入一台交换机或一台计算机,然后通过构造网桥ID最低的BPDU报文,使这台接入的交换机或计算机成为根网桥,进而扰乱正常的网络运行,最终导致网络瘫痪。
1.4 MAC地址泛洪攻击
    交换机根据MAC地址来转发数据帧,交换机端口与所连设备MAC地址的对应关系存储在内容寻址存储器CAM(Content Addressable Memory)表中,CAM表中还可能包含MAC地址对应的VLAN ID等参数。当交换机从某一端口接收到一个数据帧时,交换机首先从数据帧中提取源MAC地址和目的MAC地址,然后将端口与源MAC地址的对应关系记录在CAM表中。同时,交换机查询CAM表中是否有目的MAC地址对应的记录,如果有,则可通过对应的端口将数据帧转发出去,如果没有,交换机的作用则类似于集线器,会将数据帧广播到交换机其他所有的端口[3]。
    MAC地址泛洪攻击也称为CAM表溢出攻击。因为任何一台交换机的CAM表大小是有限制的,当记录数填满CAM表时,凡到达交换机的具有不同源MAC地址的数据帧,其端口和MAC地址的对应关系将不会被添加在CAM表中。基于此原理,攻击者将大量虚构的具有不同源MAC地址的数据帧发送给交换机,直至交换机的CAM表填满。之后,交换机将进入fail-open(失效开放)模式,其功能将类似于一台集线器。此时,交换机接收到的任何一个单播帧都会以广播方式处理,攻击者的计算机将会接收到这些单播帧,从而获得其他用户的信息。
1.5 VLAN 攻击
    虚拟局域网VLAN(Virtual Local Area Network)是在交换式局域网基础上出现的一项管理技术,通过在数据帧的头部添加VLAN tag(VLAN标识)字段,将局域网用户设备逻辑地划分为多个网段,以缩小广播域,提高用户通信的安全性及网络的可管理性。VLAN在局域网中一般被作为一项安全技术使用,但VLAN本身却存在安全隐患。目前针对VLAN的攻击主要集中在VLAN Hopping攻击和VTP攻击两个方面。
    (1)VLAN Hopping攻击。VLAN Hopping(VLAN跳跃)攻击是基于动态主干协议DTP(Dynamic Trunk Protocol)来实现的。当两台交换机互联时,通过DTP可以对互联端口进行协商,确认是否设置为支持IEEE 802.1Q的主干(trunk)端口。如果设置为主干端口,则允许转发所有VLAN中的数据帧。VLAN Hopping攻击又分为基本VLAN Hopping攻击和双重封装VLAN跳跃攻击两类。①基本VLAN Hopping攻击是攻击者将计算机伪装成为一台交换机,并发送虚假的DTP协商报文,请求成为主干端口。局域网中交换机在收到这个DTP报文后,便启用基于IEEE 802.1Q的Trunk功能,将攻击者的计算机误认为一台合法的交换机。之后,所有VLAN的数据帧都会发送到攻击者的计算机上。②双重封装VLAN跳跃攻击是指利用目前大部分局域网交换机仅支持单层VLAN tag的特点,攻击者根据要入侵的VLAN ID,首先构造一个包含该VLAN ID的IEEE 802.1Q数据帧,然后在该IEEE 802.1Q数据帧的外层再封装一层适合当前网络的VLAN tag,从而通过外层VLAN ID实现对非授权VLAN ID的非法访问,以获取非授权VLAN ID中的用户数据。
    (2)VTP攻击。VTP(VLAN Trunk Protocol)以组播方式在同一个管理域中同步VLAN信息,从而实现对管理域中VLAN信息的集中管理。VTP报文只能在trunk端口上转发。VTP的三种工作模式及对应的功能如下:
    ①Server(缺省)。可以添加、删除、修改VLAN,并同步VLAN信息。VLAN信息存放在NVRAM中。
  ②Client。不允许添加、删除、修改VLAN,但会同步VLAN信息。VLAN信息不存放在NVRAM中,断电后会自动消失。
  ③Transparent。可以添加、删除、修改VLAN,但不同步VLAN信息。VLAN信息存放在NVRAM中。
  使用VTP的主要目的是实现对局域网中VLAN信息的集中管理,以减少网络管理员的工作量。但攻击者可以接入一台交换机或直接使用一台计算机,并与上联交换机之间建立一条主干(trunk)通道后,通过修改自己的修订号(Configuration Revision)来拥有Server的权限,进而对局域网的VLAN架构进行任意更改,以获得所需要的信息或扰乱网络的正常运行。
2 数据链路层安全防范方法
2.1 针对ARP欺骗攻击的防范方法

    ARP缓存表中的记录既可以是动态的,也可以是静态的。如果ARP缓存表中的记录是动态的,则可以通过老化机制减少ARP缓存表的长度并加快查询速度;静态ARP缓存表中的记录是永久性的,用户可以使用TCP/IP工具来创建和修改,如Windows操作系统自带的ARP工具。对于计算机来说,可以通过绑定网关等重要设备的IP与MAC地址记录来防止ARP欺骗攻击。在交换机上防范ARP欺骗攻击的方法与在计算机上基本相同,可以将下连设备的MAC地址与交换机端口进行绑定,并通过端口安全功能(Port Security feature)对违背规则的主机(攻击者)进行相应的处理。通过Cisco交换机可以在DHCP Snooping绑定表的基础上,使用DAI(Dynamic ARP Inspection)技术来检测ARP请求,拦截非法的ARP报文,具体配置如下:
    Switch(config)#ip arp inspection vlan 20-30,100-110,315(定义ARP检测的VLAN范围,该范围根据DHCP snooping binding表做判断)
    Switch(config-if)#ip arp inspection limit rate 30 (限制端口每秒转发ARP报文的数量为30)
2.2 针对DHCP欺骗攻击的防范方法
    对于DHCP欺骗攻击的防洪可以采用两种方法。
    (1)采用DHCP Snooping过滤来自网络中非法DHCP服务器或其他设备的非信任DHCP响应报文。在交换机上,当某一端口设置为非信任端口时,可以限制客户端特定的IP地址、MAC地址或VLAN ID等报文通过。为此,可以使用DHCP Snooping特性中的可信任端口来防止用户私置DHCP服务器或DHCP代理[4]。一旦将交换机的某一端口设置为指向正确DHCP服务器的接入端口,则交换机会自动丢失从其他端口上接收到的DHCP响应报文。例如,在Cisco交换机上通过以下命令将指定端口设置为信任端口:
     Switch(config-if)# ip dhcp snooping trust(定义该端口为DHCP信任端口)
     Switch(config)#ip dhcp snooping (启用DHCP snooping功能)
     Switch(config)#ip dhcp snooping vlan 20-30,100-110,315 (定义DHCP snooping作用的VLAN)
  (2)通过DHCP服务器(如基于Windows 2003/2008操作系统的DHCP服务器)绑定IP与MAC地址,实现对指定计算机IP地址的安全分配。
2.3 针对生成树协议攻击的防范方法
    对于STP攻击可以采取STP环路保护机制来防范。为了防止客户端交换机偶然成为根网桥,在Cisco交换机中可以使用Root Guard特性来避免这种现象的发生[5]。如图2所示,如果STP偶然选择出客户端交换机(交换机D)成为根网桥,即交换机C与交换机D相连接的端口成为根端口(Root Port),则Root Guard特性自动将交换机C与交换机D相连接的端口设置为root-inconsistent状态(根阻塞状态),以防止客户端交换机D成为根网桥。一旦在交换机中配置了Root Guard特性,其将对所有的VLAN都有效。

    在Cicsco交换机中配置Root Guard特性的命令如下:
    Switch(config-if)#spanning-tree guard root
2.4 针对MAC地址泛洪攻击的防范方法
    针对MAC地址泛洪攻击,可以采取以下多种方法进行防范:
    (1)限制未知目的MAC地址的组播(multicast)帧和单播(unicast)帧通过本端口进行转发。在Cisco交换机的配置如下:
    Switch(config-if)# switchport block multicast
    Switch(config-if)# switchport block unicast
    (2)限制端口学习到的最大MAC地址数量。以下配置中将该端口最大能够学习到的MAC地址数限制为10:
    Switch(config-if)#switchport port-security maximum 10
    (3)限制端口单位时间(一般为每秒)通过的最大数据帧数量,可以分别针对单播帧、组播帧和广播帧进行设置。以下配置中将该端口每秒通过的单播帧、组播帧和广播帧的数量分别限制为10:
    Switch(config-if)# storm-control unicast level 10
    Switch(config-if)# storm-control multicast level 10
    Switch(config-if)# storm-control broadcast level 10
    当通过以上方式对交换机的端口进行限制后,对于违背安全规则的端口,交换机将自动采取protect(丢弃非法流量,不报警)、restrict(丢弃非法流量,报警)、shutdown(关闭端口)和shutdown vlan(关闭VLAN)等安全保护方式。
2.5 针对VLAN攻击的防范方法
    (1)针对基本VLAN Hopping攻击,最有效的解决方法是关闭交换机的DTP功能,将交换机之间的互联端口手动设置为Trunk即可。在Cisco交换机上将某一端口设置为Trunk的配置如下:
  Switch(config-if)# switchport(设置为二层端口)
  Switch(config-if)#switchport trunk encapsulation dot1q(启用IEEE 802.1Q)
  Switch(config-if)#switchport mode trunk(设置该端口为trunk)或
  Switch(config-if)# switchport mode dynamic desirable(使该端口既主动发送DTP报文,也允许对DTP报文进行响应,这是以太网端口的默认状态)
  关闭交换机上DTP功能的配置如下:
  Switch(config-if)# switchport mode access(设置为访问端口,不具有DTP功能)或
  Switch(config-if)# switchport mode dynamic auto(使该端口可以响应DTP报文,但不允许主动发送DTP报文)
  针对双重封装VLAN Hopping攻击,目前最有效的解决办法是为trunk端口单独设置一个native VLAN,且在native VLAN中不加入任何用户的端口。配置方法如下:
  Switch(config-if)#switchport trunk native vlan vlan-id
  (2)由于实现VTP攻击的前提是攻击者与上联交换机之间要建立一条主干(trunk)通道,所以可以采取与防范基本VLAN Hopping攻击相同的方法来解决这一问题。另外,可以为VTP域设置密码,当域中要加入新的交换机时必须输入正确的密码,通过对VTP域密码的管理便可以防范VTP攻击。在Cisco交换机中的配置实例如下:
  Switch(config)# vtp mode server(将VTP的工作模式设置为Server)
  Switch(config)# vtp domain VTP-JSPI(设置VTP的域名为VTP-JSPI)
  Switch(config)#vtp pruning (设置VTP修剪,以减少trunk端口上不必要的流量)
  Switch(config)#vtp version 2(设置VTP的版本号为2)
  Switch(config)#vtp password cisco-jspi(将VTP域的密码设置为cisco-jspi)
    需要说明的是:VTP域中的所有交换机必须设置相同的密码,否则无法正确工作。另外,VTP的域密码是以明文方式在网络中传输,安全性较差。
    在OSI参考模型中,局域网仅涉及到物理层和数据链路层,以上各层的功能由局域网操作系统来完成。在网络体系结构中,越是低层的安全问题所产生的影响也越大,而且越不容易彻底解决。正因为如此,当ARP、DHCP、VLAN、STP等主要针对数据链路层协议的攻击出现时,一般借助于对交换机等数据链路层设备的安全管理来解决。针对局域网应用和管理实际,本文仅对数据链路层的主要安全问题进行了分析,并给出了Cisco交换机上的配置方法,其他品牌交换机的配置读者可参阅相关的技术文档。随着网络应用不断深入,新的安全问题也将不断出现,针对数据链路层的安全研究也将是一项长期的工作。
参考文献
[1] TANENBAUM A S. Computer networks fourth edition(影印版)[M].北京:清华大学出版,2008.
[2] 任凤姣,王 洪,贾卓生.DHCP安全系统[J].计算机工程,2004,17(9):127-129.
[3] 王群.计算机网络安全技术[M].北京:清华大学出版,2008.
[4] PATRICK M. Motorola BCS. DHCP relay agent information option[EB/OL]. http://www.rfc-editor.org/rfc/rfc3046.txt, January 2001.
[5] Cisco Systems, Inc. Spanning tree protocol root guard enhancement[EB/OL]. http://www.cisco.com/application/pdf/paws/10588/74.pdf, August 2005.

此内容为AET网站原创,未经授权禁止转载。