以太网交换安全
端口隔离
以太网中为了实现报文之间的二层隔离,通常使用 VLAN 技术实现二层广播域的隔离。 其实 VLAN 也有二层流量隔离的技术( MUX VLAN ),但 MUX VLAN 只有一个 Separate VLAN ,无法满足更加灵活的应用场景。例如:
在该场景中,要求:
- PC1与PC2之间二层隔离三层互通
- PC1和PC3之间二三层都隔离
- VLAN3 的主机可以访问 VLAN2 的主机
此时,针对端口隔离,可以实现 同一VLAN 内端口之间的隔离,端口。
具体功能
端口隔离包括隔离类型和隔离模式
隔离类型又分为:
- 双向隔离:同一端口隔离组的接口之间互相隔离,不同端口隔离组的接口不隔离。端口隔离只是针对同一台设备的端口隔离组成员,对于不同设备的接口无法实现。
- 单向隔离:顾名思义,充分不必要或必要不充分。
隔离模式分为:
- L2:二层隔离三层互通,隔离同一VLAN内的广播报文,不同端口下的用户还可以进行三层通信。缺省情况下,端口隔离模式为L2。
- ALL:二层三层彻底隔离无法通信。
其中采用 L2 隔离模式时,类似于
VLAN 聚合技术
,需要在 VLANIF 接口上使能 Proxy ARP
功能。
MAC地址表安全
MAC 地址表项类型包括动态、静态和黑洞 MAC 地址表项。针对这三种表项以及地址表的工作机制,可以对 MAC 地址表进行一些安全保护操作。
为了防止一些关键设备(如各种服务器或上行设备)被非法用户恶意修改其MAC地址表项,可将这些设备的MAC地址配置为静态MAC地址表项,因为静态MAC地址表项优先于动态 MAC地址表项,不易被非法修改。
为了防止无用MAC地址表项占用MAC地址表,同时为了防止黑客通过MAC地址攻击用户设备或网络,可将那些有着恶意历史的非信任MAC地址配置为黑洞MAC地址,使设备在收到目的MAC或源MAC地址为这些黑洞MAC地址的报文时,直接予以丢弃,不修改原有的MAC 地址表项,也不增加新的MAC地址表项。
为了避免MAC地址表项爆炸式增长,可合理配置动态MAC表项的老化时间, 以便及时删除MAC地址表中的废弃MAC地址表项。
为了提高网络的安全性,防止设备学习到非法的MAC地址,错误地修改MAC地址表中的原 MAC 地址表项,可以选择关闭设备上指定接口或指定VLAN中所有接口的MAC地址学习功能,这样设备将不再从这些接口上学习新的MAC地址。
配置限制MAC地址学习数,当超过限制数时不再学习MAC地址,同时可以配置当MAC地址数达到限制后对报文采取的动作,从而防止MAC地址表资源耗尽,提高网络安全性。
组播和广播不能作为静态 MAC 表项
关闭基于接口的 MAC 地址学习功能时,有两个可选动作:
forward
和discard
,其中缺省为 Forward,即对报文进行转发;discard则会对报文的源MAC进行匹配,当接口和MAC地址与MAC地址表项匹配时,对该报文进行转发,否则丢弃。当同时配置基于接口和基于VLAN的禁止MAC地址学习功能时,基于VLAN的优先级更高。
端口安全
正常来说,每个连接终端设备的接口应该只接入一台PC(也就是限制MAC地址接入数量),如果在接口下级联一台交换机或集线器从而扩展上网接口,这种不利于网络稳定的做法应该被禁止。
通过部署端口安全,一方面限制接口学习MAC数量,同时配置越限的惩罚措施,另一方面将接口学习到的MAC地址转换为安全的MAC地址(包括安全动态MAC,安全静态MAC和Sticky MAC),来组织非法用户通过本接口与交换机通信,增强设备安全性。
安全MAC包括:
安全动态MAC地址:使能端口安全但未使能 Sticky MAC 功能时转换的MAC地址。设备重启后会丢失,需要重新学习,缺省情况下不会老化,只有配置了安全MAC的老化时间后才会被老化。
安全静态MAC地址:使能端口安全时手工配置的静态MAC地址。重启设备不会丢失,且不会被老化。
Sticky MAC地址:使能端口安全同时使能 Sticky MAC 功能后转换的MAC地址。重启设备不会丢失,且不会被老化。
端口安全功能:
使能之后,接口上之前学习到的动态MAC地址表项将被删除,之后学习到的 MAC地址将变为安全动态MAC地址。
去使能之后,接口上的安全动态MAC地址将被删除,重新学习动态MAC地址。
Sticky MAC功能:
使能之后,接口上的安全动态MAC地址表项将转化为Sticky MAC地址,之后学 习到的MAC地址也变为Sticky MAC地址。
去使能之后,接口上的Sticky MAC地址,会转换为安全动态MAC地址。
例如设置了接口的最大学习MAC数量以后,那么需要学习连接接口的设备的MAC,可以使用动态学习或者静态配置,但动态学习的MAC在接口Up/Down后会丢失,而手动静态配置又太麻烦,因此先动态学习,接着转为Sticky,将该MAC”粘"在该接口上,可以理解为“动态学习的静态MAC”。
假设老化时间为5分钟
绝对老化时间:系统每隔一分钟计算一次每个MAC的存在时间,如果超过5分钟,则立即老化该安全动态MAC地址。
相对老化时间:系统每隔一分钟检测一次是否有该MAC的流量,如果没有流量,则经过五分钟后将该安全动态MAC地址老化。
安全MAC与安全保护动作结合使用,包括:
Restrict:丢弃源MAC地址不存在的报文并上报告警
Protect:只丢弃源MAC地址不存在的报文,不上报告警
Shutdown:接口状态被置为error-down,并上报告警
实际应用中,设置不同的安全MAC来适应不同的应用场景:
MAC地址漂移防止与检测
MAC地址漂移:交换机上一个VLAN内有两个端口学习到同一个MAC地址,后学习到的MAC地址表项覆盖原MAC地址表项的现象。
一般出现MAC地址漂移意味着网络中存在环路,或存在网络攻击行为。
环路导致的MAC漂移只需要部署防环技术,例如STP消除二层环路,而如果是攻击行为,则要使用MAC地址防漂移特性。
防止MAC漂移
给接口MAC地址学习配置优先级,数值越高优先级越高。当同一个MAC地址被两个接口学习到后,优先级高的会保留,优先级低的则被覆盖。
配置不允许相同优先级接口MAC地址漂移,后学习到的伪造网络设备MAC地址表项不会覆盖之前正确的表项。但该特性有缺陷,当安全网络设备(正常设备)下电,交换机会学习攻击者的MAC,那么当安全网络设备上电时,交换机就不能学习到正常的MAC地址了。
MAC地址漂移检测
包括基于VLAN和全局检测两种方式
基于VLAN的MAC地址漂移
检测指定VLAN下的所有MAC地址是否发生漂移,当MAC地址发生漂移之后,可以配置指定的动作,例如告警、阻断接口或阻断MAC地址。
发送告警:只发送告警给网管
接口阻断:根据设置的阻塞时间对接口进行阻塞,并关闭接口收发报文的能力
MAC地址阻断:只阻塞当前MCA地址,而不对物理接口进行阻塞,当前接口下的其他MAC不受影响。
当接口被阻塞时:
检测到VLAN2内产生MAC地址漂移时,将产生漂移后的接口直接阻塞。
接口将被阻塞10秒(该时长使用block-time关键字指定),接口被阻塞时是无法正常收发数据的。
10秒之后接口会被放开并重新进行检测,此时该接口可以正常收发数据,如果20秒内没有再检测到MAC地址漂移,则接口的阻塞将被彻底解除;而如果20秒内再次检测到MAC地址漂移,则再次将该接口阻塞,如此重复2次(该次数使用retry-times关键 字指定),如果交换机依然能检测到该接口发生MAC地址漂移,则永久阻塞该接口。
全局MAC地址漂移
检测设备上的所有MAC地址是否发生漂移,若发生漂移,设备会上报告警到网关系统,用户也可以指定发生漂移后的处理动作,例如将接口关闭或退出VLAN。
MACsec
大部分数据在链路上以明文形式传输,MACsec定义了基于以太网的数据安全通信的方法,通过逐跳设备之间数据加密,保证数据传输安全性,对应的标准为802.1 AE.
在设备运行点到点MACsec时,在两台设备上预配置相同的CAK,两台设备通过MKA协议选举出一个Key Server,Key Server决定加密方案,Key Server会根据CAK等参数使用某种加密算法生成SAK数据密钥,由Key Server将SAK分发给对端设备,这样两台设备拥有相同的SAK数据密钥,可以进行后续MACsec数据报文加解密收发。
CAK(Secure Connectivity Association Key,安全连接关联密钥):不直接用于数据报文的加密,由它和其他参数派生出数据报文的加密密钥。CAK可以在802.1X认证过程中下发, 也可以由用户直接静态配置。
MKA(MACsec Key Agreement protocol):用于MACsec 数据加密密钥的协商协议。
SAK(Secure Association Key,安全关联密钥):由CAK根据算法推导产生,用于加密安全通道间传输的数据。MKA对每一个SAK可加密的报文数目有所限制,当使用某SAK加密的PN耗尽,该SAK会被刷新。例如,在10Gbps 的链路上,SAK最快4.8分钟刷新一次。
Key Server:决定加密方案和进行密钥分发的MKA实体。