- VLAN 将物理网络划分为隔离的逻辑网络,从而减少广播流量并提高性能。
- 正确使用接入端口、中继端口和本地 VLAN 是防止 VLAN 跳跃和交换机欺骗攻击的关键。
- VLAN 间路由应始终与 ACL 或防火墙配合使用,以精确控制谁可以与谁通信。
- VACL、PVLAN 和对未使用端口的严格管理加强了复杂企业网络的安全性和控制。
如果您管理企业网络,您一定知道,要保证所有服务快速安全地运行绝非易事。随着团队、服务和应用程序的增长,广播、瓶颈和安全问题也会层出不穷。
解决这种混乱局面最有效的工具之一是VLAN(虚拟局域网)。设计和配置得当的 VLAN 可以帮助您划分网络、减少不必要的流量、隔离部门并保护关键服务……但如果实施不当,它们可能会变成安全漏洞或管理噩梦。
VLAN究竟是什么?它对安全为何如此重要?
VLAN本质上是一个独立的逻辑网络,它运行在同一物理基础设施上:相同的交换机、相同的线缆、相同的Wi-Fi接入点。从逻辑上讲,VLAN上的设备就像位于独立的局域网(LAN)中一样,即使它们位于不同的楼层或不同的建筑物中。
这样一来,一组PC、服务器、IP电话、打印机或IP摄像头就可以组成自己的广播域,与其他组隔离。广播和组播数据包会保留在各自的VLAN内,而不是泛洪整个网络,从而提高性能并更容易控制哪些用户可以访问哪些设备。
在商业环境中,通常会为不同部门(例如会计、工程、市场营销)创建 VLAN ,以隔离管理流量、语音流量、访客流量、物联网流量,甚至创建专用的备份 VLAN。每个 VLAN 都有自己的路由、安全和服务质量规则。
此外,VLAN 是网络分段和零信任策略的关键组成部分:网络不再被假定为“完全可信”,攻击面也得到了明确定义。一个 VLAN 的故障或感染不应导致整个组织像多米诺骨牌一样崩溃。
基本概念:接入端口、中继端口和本地VLAN
要全面理解 VLAN 配置和安全,三个概念至关重要:接入端口、干线端口和原生 VLAN。掌握这三个概念会让其他一切都变得容易得多。
接入端口是交换机上的一个端口,它将来自单个 VLAN 的流量传输到终端设备,例如 PC、打印机、IP 摄像头、电话等。流量离开交换机到达设备时没有802.1Q 标签。交换机内部知道设备属于哪个 VLAN,但设备看不到该标签。
中继端口是网络设备(例如交换机-交换机、交换机-路由器、交换机-AP)之间的链路,多个 VLAN 可以同时通过该链路传输。在这种情况下,帧会携带 802.1Q 标签,用于指示其所属的 VLAN。这使得 VLAN 可以扩展到整个网络拓扑中,并且多个逻辑网络可以通过同一物理链路传输。
本地VLAN是用于 802.1Q 链路上未标记流量的 VLAN。每个进入中继端口且未带标签的帧都会被分配到此本地 VLAN。默认情况下,在许多设备上,本地 VLAN 为 VLAN 1,如果不更改此配置,安全问题就会由此产生。
基于VLAN的网络架构与设计
在中大型网络中,通常采用三层拓扑结构:核心层、汇聚层和接入层。每一层都有其特定的功能,而这些层如何与VLAN结合使用,在实际应用中具有重要的意义。
接入层由直接连接用户和终端设备的交换机组成。这些交换机拥有最多的接入端口,并且大多数用户、语音、物联网和其他VLAN都定义在这里。因此,端口分配和物理安全措施(防止未经授权的线缆插入)在这一层需要格外重视。
分发层由交换机组成,用于聚合来自多个接入交换机的流量。它通常是 VLAN 间路由发生的地方,也是应用更精细的 ACL、终止光纤链路、添加链路(以太网通道)以及实施更高级策略(QoS、风暴控制等)的地方。
核心层包含分发链路以及连接互联网或外部网络的网关。在超大型网络中,核心层通常只负责高速交换,很少承担其他功能,以降低延迟和复杂性。
在设计带有 VLAN 的网络时,建议先定义需要哪些逻辑组(按功能、重要性、信任级别等),然后在精心规划的 IP 方案(子网、掩码、VLSM、动态和静态范围)中实现,并在每个交换机上清晰地分配端口。
VLAN 类型和常见用途
目前最广泛用于干线链路帧标记的标准是IEEE 802.1Q。它在以太网帧头中添加 4 个字节,用于存储 VLAN ID 和其他字段,这样交换机就可以准确地知道每个帧属于哪个 VLAN,而无需封装整个帧。
在交换机上使用 802.1Q 配置 VLAN 时,每个端口都可以标记为特定 VLAN 的标记端口或未标记端口。一个端口可以在多个 VLAN 中被标记(典型的 trunk 端口),但只能在一个 VLAN 中被标记为未标记(如果端口是接入端口,则终端设备将看到的那个 VLAN)。
除了基于 802.1Q 的标准 VLAN 之外,企业环境中还存在其他常用的 VLAN 模式:基于端口的 VLAN、基于 MAC 地址的 VLAN、管理 VLAN、控制 VLAN、自定义原生 VLAN、混合 VLAN,甚至在数据中心和云环境中,当需要数百万个逻辑网络时,还会使用 VXLAN 。此外,还应考虑使用802.1X 和动态 VLAN等技术来实现更高级的分配和安全性。
管理VLAN专门用于对交换机、路由器、接入点、防火墙和监控系统进行管理访问。它通常拥有独立的 IP 子网和严格的访问控制列表 (ACL),以限制哪些用户可以访问。将设备与用户设备置于同一 VLAN 中进行管理是非常糟糕的做法。
所谓的控制 VLAN专用于内部网络协议流量:STP、路由协议、CDP、LLDP、VTP 等。将此流量与数据或管理流量分离,可以减少噪声,提高稳定性,并允许应用特定的安全措施。
VLAN 1、本地 VLAN 以及它们为何会成为安全问题
在大多数交换机上,VLAN 1 被配置为所有端口的默认本地 VLAN。这意味着,如果不作更改,所有进入中继链路的未标记流量都将被路由到 VLAN 1,并且所有端口都被视为 VLAN 1 的一部分。
问题在于,任何稍有经验的攻击者都知道这一点。VLAN 1 是VLAN 跳跃、交换机欺骗以及其他利用默认配置渗透其他 VLAN 的攻击的主要目标。
例如,在交换机欺骗攻击中,攻击者将自己的设备连接到动态模式下 DTP 处于活动的端口,并与交换机协商建立中继链路,从而获得对多个本不应该到达主机的 VLAN 的访问权限。
在双重标记攻击中,两个 802.1Q 标签混合在同一个帧中,利用本地 VLAN 不加标记的特性,试图通过安全性较差的中继从一个 VLAN 跳到另一个 VLAN。
鉴于以上所有原因,目前安全建议很明确:不要将 VLAN 1 用于用户,不要将其保留为中继上的本地 VLAN,不要为其分配管理 IP 地址,如果可能的话,隔离甚至过滤它,使其不承载生产流量。
港口设计和分配的最佳实践
配置 VLAN 时,关键决策之一是如何将交换机端口分配给每个 VLAN 以及如何处理未使用的端口。这看似微不足道,但却关系到性能和安全性。
在接入端口上,最好始终只保留一个未标记的 VLAN(即该用户或设备的 VLAN),并将其他 VLAN 标记为排除。这样可以防止接口“看到”不属于它的 VLAN,即使有人意外更改了设置。
在干线链路中,建议显式配置允许哪些 VLAN 通过(例如,`switchport trunk allowed vlan 10, 20, 99`),而不是让网络中的所有 VLAN 都通过。每个干线链路应该只承载它实际需要的 VLAN。
对于未使用的端口,最安全的做法是将其关闭,并将其分配到一个没有网关或 DHCP 服务器的“黑洞”VLAN,同时确保它们未被标记为干线端口或启用 DTP。这样可以防止有人连接设备后突然出现在生产网络中。
在端口数量较多的环境中,必须详细记录每个接口连接的设备,标记线缆,并及时更新接线图。许多 VLAN 连接问题仅仅是由于线缆移动后未更新文档造成的;接线指南有助于避免错误。
非出口 VLAN 和未使用的端口
保护空闲端口的一个简单而有效的技术是创建一个“无输出”VLAN,即一个没有DHCP、路由和服务的VLAN,并将所有未使用的接入端口放入其中。
其理念是,即使有人将设备连接到这些端口之一,该主机也不会获得 IP 地址,不会有网关,无法访问其他设备,其流量将完全隔离。这是一种网络隔离状态。
在许多环境中,会使用易于识别的 ID,例如VLAN 777、999 或 4094。交换机配置为将所有其他 VLAN 从这些端口排除,未为该 VLAN 定义任何三层接口,并且未在任何路由器上通告该 VLAN。
此外,建议在所有接入端口上禁用 DTP,并配置switchport nonegotiate,这样它们就不会尝试通过与邻居协商自动成为中继端口。
用于语音、数据和特殊设备的 VLAN
在采用IP电话和语音流量的网络中,通常的做法是将语音流量隔离到与PC流量不同的特定VLAN中。这样做有两个原因:服务质量要求和安全性。
语音流量对延迟、抖动和丢包非常敏感。如果将其与大量下载、视频流或备份等流量混杂在一起,通话质量会迅速下降。将语音流量隔离到 VLAN 中,可以让你通过 QoS 对其进行优先级排序,并应用更精确的策略。
此外,IP电话通常具备自身的VLAN标记功能(802.1Q):它们与PC级联,连接网络的端口充当中继端口(语音标记,数据不标记),连接PC的端口充当接入端口。这需要更精确的端口配置以避免安全漏洞。
将物联网设备、家庭自动化系统、IP摄像头、电视、智能插座等设备隔离到特定的VLAN中也是个好主意。这些设备的安全性通常较差,固件维护也不完善,最好将它们与管理PC或关键服务器放在不同的逻辑网络中。
在无线网络领域,大多数专业接入点都允许您将SSID 与每个 VLAN关联起来。这使得有线网络的划分扩展到了无线网络:管理 VLAN、企业 VLAN、物联网 VLAN、访客 VLAN,每个 VLAN 都有自己的 SSID 和规则。
VLAN、ACL 和防火墙之间的路由
根据设计,VLAN在第二层(网络层)是无法“看到”彼此的。如果希望不同 VLAN 上的设备能够通信,则需要使用第三层(网络层):VLAN 间路由。这通常在路由器、防火墙或三层交换机中实现。
主要有两种方法。第一种是使用连接到交换机骨干网的兼容 802.1Q 的路由器或防火墙。路由器创建子接口(每个 VLAN 一个),为其分配 IP 地址,并充当网关。此外,防火墙还会强制执行细粒度的通信规则,控制哪些设备可以与哪些设备通信。
第二种方法是在汇聚层或核心层使用三层管理型交换机。在该交换机上创建 VLAN 接口(SVI),作为每个子网的网关。交换机本身处理内部路由和相应的访问控制列表 (ACL),从而减轻边缘路由器的负担。
无论哪种情况,都必须配合访问控制列表 (ACL) 或严格的防火墙规则来配置路由。VLAN 之间存在 IP 路径并不意味着所有流量都应该被允许。必须根据源地址、目标地址、端口、协议和连接方向进行过滤。
一个典型的例子:访客 VLAN 只能访问互联网,IoT VLAN 只能与特定服务器(如 NTP、syslog 或 MQTT 代理)通信,学生 VLAN 不能访问管理 VLAN,备份 VLAN 只能发起与备份服务器的连接,等等。
VLAN 管理协议:VTP 等
在拥有众多交换机的大型网络中,手动在每台设备上创建 VLAN 既不切实际又容易出错。因此,思科生态系统中的VTP(VLAN 中继协议)等协议允许集中分发 VLAN 列表。
VTP 为交换机定义了三种运行模式:服务器模式、客户端模式和透明模式。服务器可以创建、重命名或删除 VLAN,并将此信息发送给同一域内的客户端。客户端接收并应用这些更改,但不会对其进行修改。透明客户端不处理 VLAN 数据库,它们仅转发信息。
这些类型的协议大大简化了操作,但它们也有其不足之处:服务器交换机中的错误、管理不善的 VTP 密码,或者将数据库过时的旧交换机重新引入网络,都可能突然破坏整个组织的VLAN 配置。
因此,在许多当前设计中,最好使用透明模式下的 VTP ,或者根本不使用 VTP,而是使用自动化工具(Ansible、模板、集中式控制器等)或更静态和受控的设计来管理 VLAN。
高级安全:VACL、PVLAN 和攻击缓解
随着网络规模扩大和关键性提升,仅靠 VLAN 已无法满足需求。为了更精细地控制 VLAN 内的流量,可以使用VACL(VLAN ACL 或 VLAN 映射),从而在 VLAN 级别而非特定接口上过滤或重定向流量。
VACL 的配置方法是为每个 VLAN定义访问映射,使用 IP 或 MAC 访问列表,并指定如何处理匹配的流量:允许其通过、阻止其通过、将其发送到监控端口、重定向其通过等。然后,它们被全局应用于交换机上的一个或多个 VLAN。
如果您需要隔离同一子网内的主机,可以使用私有 VLAN (PVLAN)。PVLAN 首先创建一个主 VLAN(通常网关位于该 VLAN 中),然后创建两种类型的关联辅助 VLAN:隔离型和社区型。
隔离式辅助 VLAN允许每台主机仅看到网关,而看不到其他主机,即使它们位于同一个隔离式辅助 VLAN 中。社区式辅助 VLAN允许一组主机彼此可见并看到网关,但看不到同一主 VLAN 上的其他主机组。
关于具体的攻击,除了之前讨论过的VLAN 1和DTP之外,通过双重标记来缓解VLAN跳跃攻击至关重要。为此,建议将本地VLAN更改为主机未使用的VLAN,尽可能从中继链路中移除本地VLAN,禁用DTP,将端口显式定义为接入端口或中继端口,并使用命令确保本地VLAN始终被标记,丢弃未标记的流量。
VLAN网络的诊断与维护
搭建 VLAN 网络只是成功的一半;另一半在于维护网络和排除故障,同时还要避免崩溃。典型的 VLAN 连接问题通常由一些比较常见的原因造成。如需实用指南和步骤,请参阅网络故障排除方面的资源。
一方面,存在物理错误:电缆从一个端口移动到另一个端口而没有更新文档,端口配置为接入端口而不是中继端口,反之亦然,定义不明确的冗余链路如果 STP 没有正确调整就会形成环路。
另一方面,也存在一些逻辑故障:某些交换机上创建了 VLAN,但其他交换机上没有创建 VLAN;中继上允许的 VLAN 列表配置错误;DHCP 范围与掩码不匹配;或者终端设备上的网关设置错误。
关键的诊断工具是常用的命令:show vlan、show interfaces trunk、show spanning-tree、show ip interface brief、ping、traceroute等。将这些命令与特定端口的流量捕获以及良好的监控系统结合起来,会有很大帮助。
此外,建议定期审查ACL、防火墙规则、PVLAN、VACL 和管理配置,以确保在项目变更、扩展或迁移后没有留下任何漏洞。
清晰的文档(VLAN方案、IP范围、端口分配、VLAN间访问策略的描述)和严格的变更日志记录几乎与配置命令本身一样重要。
通过精心设计的网络分段、正确标记的 VLAN、谨慎的本地 VLAN 管理、ACL 保护的 VLAN 间路由以及一致的维护习惯,企业网络可以在安全性、性能和控制方面获得显著提升,而无需重建整个物理基础设施。
