VLAN(虚拟局域网)是一群尽管所处物理位置不同,却相互保持通信的主机。VLAN可向用户提供独立的网段,在节省带宽的同时也有利于设备的管理,而且通过VLAN所提供的一些功能还可以帮助企业节省成本。
VLAN建立在OSI的第二层数据链路层上,尽管OSI的每一层是独立的,但是他们之间是相互关联的。如果某一层出现问题,也必将会影响到其它层的数据传递,VLAN建立在数据链路层上,同其它层一样易于受到***。
VLAN所面临的安全问题
虽然VLAN适于流量管理但也并非特别安全。下面就列出了一系列VLAN所面临的安全威胁。
ARP(地址解析协议)的工作原理实际是将第三层的IP地址转换成第二层的MAC地址的过程。
一个恶意用户可以伪造IP地址和MAC地址,然而在ARP协议中却无法核实这些细节,ARP的这种缺陷就造成了安全问题。利用这些伪造的信息,恶意用户就会被误认为是一个合法的用户,他们不仅可以随意使用网络中的资源,甚至可以在VLAN的设备中发送ARP数据包。
更有甚者,恶意***者可以通过此缺陷制造中间人***。当一个网络设备被标示成另一个网络设备,例如默认网关之类,中间人***就可能会发生了,在这种情况下我们也是无法核实这些细节信息的。
当***者发送ARP数据包给目标受害者,这些ARP报文不能被接收器验证,这是因为接收的ARP表其实已经是经过***者伪造的信息了。这个时候,***者就可以接收到这个返回消息的设备的有关信息了,甚至还可以试图接收到其他网络设备的信息。最后,***者会将ARP表和网络设备恢复正常。
像Arpspoof,Arpoison,Cain and Abel,和Ettercap,Trapper(这个工具的创作灵感不少都来自于著名的Cain)这些工具都可以执行ARP欺骗。
推荐专题:网络安全工具百宝箱
对付ARP***的一个有效策略就是动态ARP监测(DAI)。DAI是一种验证网络中所有ARP数据包的安全功能,它可将ARP数据中的IP地址和MAC地址都丢掉。
VLAN中的DAI状态(CISCO中的DHCP环境)
进入全局配置指令
Router# configure terminal
通过使用iparp检查Vlan{vlan_id|vlan_range} ,在全局配置中允许在VLAN中使用DAI
Router(config)# iparp inspection vlan {vlan_ID |vlan_range}
最后,验证配置
Router(config-if)# do show iparp inspection vlan {vlan_ID |vlan_range} | begin Vlan
MAC泛洪***
MAC泛洪***是VLAN***中常见的一种。在MAC泛洪***中,交换机内充斥的不同的MAC地址,这些地址信息消耗了交换机中大多数内存空间。在这种情况下,交换机就变成了"hub"开始与大家分享所有端口的数据了。所以,通过这种方法,***者就可以用数据嗅探器搜集敏感数据了。
举个例子,比如有3三个工作站,分别是WA,WB和WC。当我们试图用WA给WB发送一条数据,因为交换机的缘故WC是看不见这条信息的。现在,把***者看作是WC,它开始在交换机内用不同的MAC地址来制造MAC泛洪***,交换机的内容被耗光了,然后交换机就像HUB一样开始收发信息了,当WA再次向WB发送数据时,WC能很容易地看到它们之间传送的信息了。
在VLAN中,MAC泛洪***防范的最佳方法是配置静态安全MAC地址。这个需要进行手动配置,具体操作方法是使用命令"switchport port-security mac-address mac-address interface"。另一种防范MAC泛洪***的方法便是限制端口接受MAC地址的数量。
DHCP***
DHCP(动态主机设置协议)可以是服务器自动分配IP地址、子网掩码、默认网关等信息给主机。在VLAN中有两种类型的DHCP***,一种是DHCP耗竭***(DHCP starvation Attack),另一种是DHCP欺骗***(DHCP rogue attack)。
DHCP耗竭***:***者使用伪造的MAC地址发送大量的DHCP请求。这会导致DHCP服务器发生拒绝服务的情况,这样,正常的用户就无法使用网络了。通过限制MAC地址的数量可以避免这个情况的发生。
DHCP欺骗***:***者可以伪装成一个DHCP服务器,然后向正常用户提供错误的网关、错误的DNS和错误的IP,那么用户就会遇到许多问题,比如连接问题和与其它主机通信的问题。通过使用有选择性丢包功能的多层交换机,可以防范此***。
可以实现这类***的工具是Yersinia。它是一种网络工具,可以发现许多协议的漏洞,同时它也可以用来进行生成树协议***。
生成树协议***
***者使用零优先级发送一条STP(Spanning-Tree Protocol,生成树协议)消息,创建一个新的根桥接,从而破坏整个网络,这就是著名的生成树协议***。在用户界面上禁用生成树功能可以避免这个***,也可以在思科设备上进行Root Guard配置或在用户端口上设置DPDU Guard功能,禁止使用零优先级值,这样***者也就不能获得根桥接了。
在操作系统中使用Root Guard
vega> (enable) set spantree guard root 1/1 Rootguard on port 1/1 is enabled. Warning!! Enabling rootguard may result in a topology change. vega> (enable)
在操作系统中使用DPDU guard
Console> (enable) set spantreeportfastbpdu-guard enablev
Spantreeportfastbpdu-guard enabled on this switch.(在交换机上激活Spantreeportfastbpdu-guard)
Console> (enable)
组播暴力***
组播暴力***的实现依赖于交换机在非常短的时间内轮番接收到一连串的组播帧,这将导致这些帧会泄漏到其它VLAN中,而不是保留于原有的VLAN中。这可能也会引发拒绝服务现象。
一台高品质的交换机可以保证帧不会从原本的VLAN中泄漏到其它VLAN里,从而防止这类***的发生。
PVLAN***(专用VLAN***)
PVLAN是第二层的功能,用于第二层的通信隔离。当一台三层设备--例如路由器--连接到某个专用VLAN中,那么该路由器所接收到的所有流量有可能会向任何一处不可知的目的地传输。在某些情况下这种特性会成为***者实现个人目的的有效手段。
通过配置VLAN的访问列表可以预防上述情况的发生。
定义VLAN访问映射
# vlan access-mapmap_name [0-65535]
删除VLAN访问映射图序列
# no vlan access-mapmap_name 0-65535
删除VLAN访问映射
# no vlan access-mapmap_name
VMPS/VQP***
这类***通常发生在动态VLAN访问端口。VMPS(VLAN管理策略服务器)使用VQP(VLAN查询)协议。VMPS有一个缺陷,它并不使用基于MAC地址的指定Vlans身份认证,而且UDP让它在被***中更加脆弱。
通常DoS***都发生在未经验证的VLAN中。
VLAN跨越***
VLAN跨越指的是数据包被传送到不正确的端口上。基本上VLAN跨越***有如下两个类型。
◆交换机欺骗
◆双标签
交换机欺骗
交换机欺骗:***者试图通过配置802.1Q或者ISL把自己伪装成一个交换机,通过DTP(动态中继协议)信号可以帮助***者完成欺骗。
双标签
双标签是包括2个802.1Q头的传输帧标签,一个头用于(受害者)用户的交换机,另一个用于***者的交换机。防止VLAN跨越***的最简单的方法就是在所有来历不明的端口上禁止DTP协议。
举例:
ciscoswitch# conf t
ciscoswitc(config)# int gi1/10
ciscoswitch(config-if)# switchportnonegotiate
From the example "switchportnonegotiate" disables the DTP.
双封装802.1Q
IEEE802.1Q有助于在大型网络之外创建小规模网络。大型网络速度慢而且非常消耗带宽,然而小型网络却更利于管理,占用的带宽也少。所以,相比大而复杂的网络来说,有时候我们更需要一个小型网络,因此在IEEE802的基础上研发了IEEE802.1Q。
我们必须在启用了Trunk(端口汇聚)功能下使用IEEE802.1Q,假设主干中启用了IEEE802.1Q,那么就可以执行一个特殊的***。这个***被称作双封装***,它在原始帧中增加了两个标签,在IEEE802.1Q中,对帧的修改基本上要通过消除外部标签完成,然而剩下的原始内部标签就成为了***的目标。
(TIPs:当双封装 802.1Q 分组从 VLAN 恰巧与干线的本地 VLAN 相同的设备进入网络时,这些分组的 VLAN 标识将无法端到端保留,因为 802.1Q 干线总会对分组进行修改,即剥离掉其外部标记。删除外部标记之后,内部标记将成为分组的惟一 VLAN 标识符。因此,如果用两个不同的标记对分组进行双封装,流量就可以在不同 VLAN 之间跳转。
这种情况将被视为误配置,因为 802.1Q 标准并不逼迫用户在这些情况下使用本地 VLAN 。事实上,应一贯使用的适当配置是从所有 802.1Q 干线清除本地 VLAN (将其设置为 802.1q-all-tagged 模式能够达到完全相同的效果)。在无法清除本地 VLAN 时, 应选择未使用的 VLAN 作为所有干线的本地 VLAN ,而且不能将该 VLAN 用于任何其它目的 。 STP 、 DTP 和 UDLD 等协议应为本地 VLAN 的唯一合法用户,而且其流量应该与所有数据分组完全隔离开。)
为了防止802.1Q中的双封装,本地VLAN应该不被放配到任何端口。我们必须使主干中的流量都携带着标签,而为了实现这一点,我们可以使用命令"Switch(config)# vlan dot1q tag native"。它是一个标记本地VLAN的全局命令。
随机帧重压***(Random Frame Stress Attack)
随机帧重压***的表现形式有很多,但通常只存在于几个领域中。在这种暴力***下,会让源地址和目标地址保持不变。当遇到异常的输入和计算时,它们主要是对交换机进行测试。
这种***是可以预防的,可以让专用VLAN隔离第二层的主机,免受恶意流量的侵害。(Tips:使用时,可以建立互信任主机组,将第二层网络分成多个子域,只让友好设备相互交流。)
结论:
我希望以上内容能够帮助大家了解VLAN的一些***方式,并能够让概念简单化。另外,想要对VLAN进行***并不容易的,但是请大家不要忘记更改设备的默认设置。最后为各位管理员总结以下几点:
◆以安全的方式管理交换机
◆本地VLAN ID 不应用于中继。使用专用LVAN ID作为中继端口。
◆所有用户端口设置为非中继
◆多做一些交换机端口安全配置,但需要小心。
◆避免使用VLAN 1
◆为用户端口尽可能设置安全功能
◆为了缓解STP***启用BPDU保护
◆使用专用VLAN并且进一步划分L2网络
◆如果使用VTP,请用MD5验证。
◆禁用未使用的端口
原文链接:http://resources.infosecinstitute.com/vlan-hacking/
【51CTO.com独家译稿,非经授权谢绝转载!合作媒体转载请注明原文出处及出处!】
转载于:https://blog.51cto.com/506398/798939