在网络安全设计中,设计者较多地分析了来自组织外部的安全威胁,而对来自组织内部的安全威胁则分析较少。内部用户由于直接接入二层网络,拥有更多的可控制协议(包括二层网络协议),因而利用这些协议特性所造成的安全威胁也更加多样。在OSI模型的不同层次,标准化组织开发了各种安全协议,其中涉及认证、加密等,但是针对OSI二层—数据链路层的安全协议却较少。同时网络二层的安全普遍较少引起规划人员的注意,这就造成了网络二层成为网络安全中的薄弱环节。本文针对网络中存在的二层安全威胁做一些深入讨论,同时提出合理的防范建议。
MAC洪泛
MAC洪泛是针对二层交换机发起的攻击,但主要目的是实现在交换网络环境下的嗅探(Sniffing)。当MAC帧通过交换机时,交换机会检查帧中的源MAC地址,并建立该MAC地址和端口的映射表,这张映射表存储于交换机的CAM(内容可寻址存储器)中。当进行帧转发时,交换机会查看该映射表,把MAC地址已知的帧转发到相应端口,只有MAC地址未知的帧才洪泛到所有端口。通过这样的转发行为,交换机有效地避免了在HUB环境下产生的嗅探攻击。
MAC洪泛中,攻击者发送源地址不断变化的MAC帧(携带虚假MAC地址),导致CAM溢出,这样交换机便不能再学习新的MAC地址。同时攻击者配合使用TCN BPDU(STP协议中宣布生成树拓扑变化的BPDU),加速已有真实MAC地址条目的老化,最终使CAM中完全充斥着虚假的MAC地址条目。经过交换机的数据帧因查不到相应的MAC条目,被洪泛到所有的端口。
通过MAC洪泛,攻击者把难以进行嗅探的交换环境演变成为可以进行嗅探的共享环境。在Cisco交换机中启用Port Security,限制每个端口可以出现的MAC地址,可以抑制MAC洪泛攻击。
配置命令:
CatOS(enable)>set port security 1/1 maximum 2 |
CatOS(enable)>set port security 1/1 maximum 2
#限制1/1端口最多可能出现的2个MAC地址
CatOS(enable)>set port security 1/1 violation shudown|restriction
#当超过MAC地址数后是关闭接口还是丢弃后来的MAC帧
STP安全
STP(Spanning Tree Protocol,生成树协议)是二层网络中普遍运行的协议,主要目的避免网络二层环路的存在。STP以根网桥(Root Bridge)为根,通过发送BPDU(Bridge Protocol Data Unit,网桥协议数据单元)来构建一个无环的树形拓扑。由于STP缺乏信息的验证机制,所以虚假的STP信息会造成严重的网络安全问题。
如图1所示,攻击者接入两台交换机,并使用拥有更小Bridge ID的TCN BPDU宣告自己为根网桥。这样生成树拓扑发生变化,以攻击者为根,所有的流量不再经过交换机之间的链路,而是经过攻击者。这样攻击者便可以发动嗅探、会话劫持、中间人(Man In The Middle)等诸如此类的攻击。
图 1
Cisco交换机中的BPDU Guard特性可以很好地解决针对STP的攻击。当端口上开BPDU Guard以后,交换机不接受从此接口上收到的BPDU。通常可以在PortFast端口上开启BPDU Guard,因为PortFast端口大部分只连接主机终端,不会产生BPDU。当交换机从开启BPDU Guard特性的端口上收到BPDU时,则会关闭该端口。
配置命令:
CatOS(enable)>set spantree porfast bpduguard enable #在PortFast端口上开启BPDU Guard特性 |
Root Guard特性使交换机不接受该端口上的根网桥BPDU宣告,防止攻击者宣告自己为根网桥。但是,攻击者通过精心选择Bridge ID,还是可以把流量进行通信定向。所以使用BPDU Guard是防止针对STP攻击的根本方法。
配置命令:
CatOS(enable)>set spantree guard root 1/4 #1/4端口上不接受根网桥BPDU宣告 |
CDP安全
攻击者发动攻击之前,往往会通过各种手段搜集攻击目标的相关信息,以便发现安全漏洞。CDP(Cisco Discovery Protocol,思科发现协议)是Cisco网络环境下用来在相邻设备下交换设备相关信息的协议。这些信息包括设备的能力、运行IOS版本号等。攻击者可能通过IOS版本号得知该版本安全漏洞,并针对漏洞进行攻击。CDP在了解网络状况,进性故障排除时拥有一定作用,所以建议在连接终端用户的端口上关闭CDP协议(如图2所示)。如果有需要,可以彻底地关闭网络中的CDP协议。
图 2
配置命令:
Switch(config-if)#no cdp enable #在接口上停止运行CDP |
VTP安全
VTP(VLAN Trunk Protocol,VLAN中继协议)通过处于VTP Server模式的交换机发送VTP信息,达到在交换机之间共享VLAN数据库的目的,从而减少VLAN配置工作量。如果攻击者伪造VTP信息,删除VTP域中的所有VLAN,则导致以前划入VLAN的接口关闭,产生DoS攻击。通过在VTP域中设置Password则可以有效防止VTP信息的伪造。Password可以在VTP信息加入MD5认证信息,使VTP信息伪造变得困难。
配置命令:
CatOS(enable)>set vtp domain vtpdomain mode server passwd XXX #设置VTP域的认证Password |
VLAN安全
VLAN把网络分割成为多个广播域,使VLAN间的访问要经过三层设备(路由器、三层交换机),通过在三层设备上放置ACL就能达到很好的访问安全性。但是通过使用特殊的方法仍然能够达到VLAN跳转,对VLAN安全产生极大的威胁。
VLAN跳转利用了交换机默认不安全的配置。在交换机上,端口使用DTP(Dynamic Trunk Protocol)协议和对端口进行端口类型协商,决定端口处于Access还是Trunk状态。如果一台主机扮演交换机角色和交换机的端口协商成为Trunk,那么该主机将能够访问到所有的VLAN。解决基本VLAN跳转方法是关闭DTP协商,或者把接入端口置为Access状态。
配置命令:
CatOS(enable)>set trunk 1/1 off #关闭DTP协议 |
ARP安全
ARP(Address Resolution Protocol)是把IP地址映射为MAC地址的协议。因为ARP没有IP所有权的概念,即MAC地址和IP地址是分离的,意味着一个MAC地址都可能扮演任意一个MAC地址。通过ARP欺骗,可以发动多种攻击。
图 3
如图3所示,主机192.168.1.25发送伪造ARP信息,向路由器宣告192.168.1.34的MAC地址为11-22-33-44-55-66,造成路由器ARP表错误,这样路由器到192.168.1.34的信息被发往不存在的MAC地址。
ARP重定向比ARP欺骗更近一步,不仅造成被攻击主机不能访问网络,还可以造成主机信息被嗅探。如图4所示,192.168.1.25向路由器宣告192.168.1.34的MAC地址为00-0f-3d-82-bc-7e(192.168.1.25的MAC),这造成路由器发往192.168.1.34的信息被定向到00-0f-3d-82-bc-7e(192.168.1.25),在这里信息遭到嗅探或者修改。
图 4
不管是ARP欺骗还是ARP重定向,都是以伪造ARP应答为基础的。通过绑定IP-MAC可以有效地避免ARP欺骗。Catalyst交换机拥有ARP检查特性(ARP ACL),过滤不符合IP-MAC绑定规则的ARP应答。ARP ACL与ACL相似,同样为显式允许隐式拒绝。网络中主机较多时,配置ARP ACL的工作量较大。
配置命令:
CatOS(enable)>set security acl ip acl-95 permit arp-inspection host 192.168.1.25 00-0f-3d-82-bc-7e |
要保持ARP欺骗的有效性,需要持续不断地发送伪造ARP应答。通过限制接口上的ARP应答数量,达到一定阈值时丢弃ARP应答或者关闭接口,可以抑制ARP欺骗。
CatOS(enable)#set port arp-inspection 1/1 drop-threshold 10 shutdown-threshold 20 |
DHCP安全
DHCP(Dynamic Host Configuration Protocol)通过DHCP服务器分配给客户机IP地址、网关等配置信息。通过在网络上引入一台未经授权的DHCP服务器,可能为客户机分配错误的IP地址,导致客户机不能访问网络。如果未授权DHCP服务器分给恶意DNS,造成客户访问到虚假的服务器;如果是恶意的网关,则导致用户信息有可能被嗅探或者修改。
在交换机上配置DHCP窥探(DHCP Snooping),允许信任端口连接的主机发送DHCP应答,非信任端口则不允许DHCP应答。
配置命令:
Switch(config)#ip dhcp snooping #开启DHCP窥探 |
以上我们介绍了网络二层可能出现的安全问题及其防范方法。下面我们将来探讨两种加强网络二层安全的措施PVLAN(Private VLAN)。
PVLAN
PVLAN通过把处于VLAN中端口分割成为具有相同子网地址的隔离端口来增强网络的安全性。使用PVLAN隔离端口不必划分IP网段,大大节省了IP地址。由于这些特点,PVLAN广泛应用于小区宽带接入和DMZ区服务器接入。
PVLAN的端口分为三种:孤立端口(Isolated Port)、混杂端口(Promiscuous Port)和团体端口(Community Port)。独立端口只能和混杂端口通信,连接不和子网内主机通信的主机;混杂端口能和任何端口通信,通常连接上层设备的端口;团体端口之间可以通信,也可以和混杂端口通信,连接和一部分子网主机通信的主机。
配置命令:
CatOS(enable)>setvlan 10 pvlanprimary #设置vlan10为主vlan |
发生在网络二层的安全威胁都需要攻击者直接接入网络,所以要保证网络安全,除了使用各种措施以外,对用户的安全教育和监管也必不可少。