无论是管理平面管理员登录的安全,还是控制平面CPU的安全,最终目的都是为了保证转发平面数据流量的正常转发。不管是二层网络还是三层网络,只有交换机的转发表正常了,数据流量才能正常转发。二层转发的转发表是MAC表,设备通过MAC表查找报文的出接口,如果查表失败,报文就会进行广播,所以广播风暴是二层网络中最常见的现象。因此,如何保证转发表的安全和如何抑制广播风暴,是二层网络安全的重点问题。下边我们也将结合这两个方面看下交换机二层网络的安全问题。

1   如何保证转发表安全?

为了保证二层流量能够正常转发,针对不同的应用场景,交换机提供了不同的方法保证转发表的安全。譬如:MAC防漂移和端口安全通过MAC和接口的绑定,保证MAC表的安全。DHCP Snooping通过记录用户DHCP的认证信息,保证动态用户的安全接入。

1.1      MAC防漂移

接口只要接收到报文,就会进行MAC表项学习。交换机从正确的接口学习到合法用户的MAC表后,又从其他接口接收到非法用户的***报文时,就会导致MAC表项学习错误,二层转发出现异常。

最典型的场景如图1所示,非法用户通过模拟网关的源MAC向接入交换机发送报文,网关对应MAC1的出接口就会从IF1漂移到IF2。这样下行用户向网关发送报文时,通过MAC表项查询到的出接口就是错误的IF2,用户的报文就无法转发到网关,二层转发异常。

1 MAC防漂移场景

S交换机转发平面安全—二层网络安全_第1张图片

 

针对该场景,S交换机有两种方法进行安全预防:

Ø  配置静态MAC把网关的MAC和接口手动绑定,使网关的MAC无法发生漂移。如果不知道网关MAC或网关MAC不固定时,该方法不适用S交换机的配置方法如下:

[SwitchA] mac-address static 3-3-3 gigabitethernet 0/0/10 vlan 4   //假设网关的MAC是3-3-3,接口是GE0/0/10,把接口和MAC在VLAN 4的广播域内绑定

Ø  配置MAC学习优先级:使IF1接口MAC学习优先级高于IF2接口,这样如果IF2接口再收到源MACMAC1的报文时,不再进行MAC学习,使MAC地址不进行漂移。S交换机的配置方法如下:

[SwitchA] interface gigabitethernet 0/0/10   //连接网关的接口

[SwitchA-GigabitEthernet0/0/10] mac-learning priority 3   //配置接口MAC学习优先级为最高值3

说明:S交换机有些形态不支持配置MAC学习优先级,可以通过配置MAC Spoofing功能设置网关接口为信任接口,防止网关的MAC地址漂移,配置方法如下:

[SwitchA] mac-spoofing-defend enable   //全局使能MAC Spoofing功能

[SwitchA] interface gigabitethernet 0/0/10   //连接网关的接口

[SwitchA-GigabitEthernet0/0/10] mac-spoofing-defend enable   //配置接口为信任接口

1.2      端口安全

端口安全也是一种保证转发表安全的特性。在接口上使能端口安全功能后,接口上学习到的MAC地址就会自动转换为安全MAC,实现MAC地址和接口绑定,这样该MAC对应的用户就只能从该接口接入,无法再从其他接口接入。

另外,端口安全还可以通过设置接口下MAC表项的个数限制用户接入,保证只有先到的用户能够接入,后来的用户无法接入,同时也防止了黑洞MAC泛洪***导致MAC表溢出的问题。

但是端口安全无法判断接入的用户是否合法,只能保证先到的用户可以接入,如果先到的用户是非法的,也是可以接入的。

2 端口安全应用场景

S交换机转发平面安全—二层网络安全_第2张图片

如图2所示,某企业为了保证接入用户的安全性,防止非法用户通过发送源MAC频繁变化的报文***网络,同时防止非法用户通过仿冒MAC地址接入网络。要求一个接口下只允许三个用户接入,同时要求这三个用户只能从指定接口接入,不能从任意端口接入。

为了实现上面安全策略,可以在SwitchAGE0/0/1接口上配置端口安全功能,在有非法用户想要通过该接口接入时,还可以上报告警。S交换机配置端口安全的方法如下:

[SwitchA] interface gigabitethernet 0/0/1

[SwitchA-GigabitEthernet0/0/1] port-security enable   //接口使能端口安全功能

[SwitchA-GigabitEthernet0/0/1] port-security max-mac-num 3   //配置接口下只允许绑定三个MAC地址,也就是说只允许三个用户接入,默认情况下接口使能端口安全后,只能绑定一个MAC地址

[SwitchA-GigabitEthernet0/0/1] port-security mac-address sticky   //使能Sticky MAC功能,在保存配置重启后,接口和MAC的绑定不会消失

说明:端口安全转换的安全MAC达到限制数后,如果有非法用户想要接入,端口安全就会执行惩罚动作。S交换机支持三种惩罚动作:

动作

实现说明

protect

丢弃源地址在MAC以外的报文。

restrict

丢弃源地址在MAC表以外的报文,同时上报告告警,通知网络管理员进行处理。交换机默认是该动作。

shutdown

接口直接被shutdown,需要网络管理员手动恢复。

1.3      DHCP Snooping

DHCP SnoopingDHCP的一种安全特性,用来保证DHCP客户端能够正确的从DHCP服务器获取IP地址,防止网络中针对DHCP的***。

DHCP Snooping是如何防止DHCP***的呢?在这之前我们先了解一下什么是DHCP

DHCP,动态主机配置协议,在IPv4网络中为客户端动态分配IP地址,采用客户端/服务器通信模式,由客户端(DHCP Client)向服务器(DHCP Server)提出申请,服务器返回为客户端分配的IP信息,包括IP地址、缺省网关、DNS Server等参数。

3 DHCP组网图

S交换机转发平面安全—二层网络安全_第3张图片

如图3所示,DHCP组网中包括以下两种角色:

Ø  DHCP客户端(DHCP Client):通过DHCP协议请求获取IP地址的设备,如IP电话、PC等。

Ø  DHCP服务器(DHCP Server):负责为DHCP客户端分配IP地址的设备。

由于DHCP的客户端/服务器通信模式,非法用户一般从下面几个方法进行***。

4 DHCP常见***方式

S交换机转发平面安全—二层网络安全_第4张图片

***方式

***原理

DHCP Server仿冒***

非法用户通过仿冒DHCP Server,为客户端分配错误的IP地址,导致客户端无法正常接入网络。

DHCP报文仿冒***

Ø  已获取到IP地址的合法用户通过向服务器发送DHCP Request报文用以续租IP地址。非法用户冒充合法用户不断向DHCP Server发送DHCP Request报文来续租IP地址,导致到期的IP地址无法正常回收,新的合法用户不能再获得IP地址。

Ø  已获取到IP地址的合法用户通过向服务器发送DHCP Release报文用以释放IP地址。非法用户仿冒合法用户向DHCP Server发送DHCP Release报文,使合法用户异常下线。

DHCP报文泛洪***

非法用户在短时间内发送大量DHCP报文,使DHCP Server无法正常处理报文,从而无法为客户端分配IP地址。

DHCP Server拒绝服务***

Ø  非法用户通过恶意申请IP地址,使DHCP服务器中的IP地址快速耗尽,无法为合法用户再分配IP地址。

Ø  DHCP Server通常仅根据DHCP Request报文中的CHADDRClient Hardware Address)字段来确认客户端的MAC地址。非法用户通过不断改变CHADDR字段向DHCP Server申请IP地址,使DHCP服务器中的IP地址快速耗尽,无法为合法用户再分配IP地址。

DHCP Snooping针对不同的DHCP***方式提供相应的防御方法,一般配置在接入交换机上。

***方式

防御方法

DHCP Server仿冒***

配置接入交换机与DHCP Server相连的接口为信任接口,只有信任接口能够接收和转发DHCP报文。

DHCP报文仿冒***

DHCP Server为客户端分配IP地址过程中,根据DHCP报文生成DHCP Snooping绑定表,该绑定表记录MAC地址、IP地址、租约时间、VLAN ID、接口等信息,然后通过DHCP报文与绑定表的合法性检查,丢弃非法报文,防止DHCP报文仿冒***。

DHCP报文泛洪***

限制DHCP报文上送CPU的速率。

DHCP Server拒绝服务***

Ø  通过限制DHCP Snooping绑定表的个数,限制用户接入数。当用户数达到指定值时,任何用户将无法通过此接口申请到IP地址。

Ø  通过检查DHCP Request报文帧头MACDHCP数据区中CHADDR字段的一致性,丢弃不一致的报文,防止非法用户***。

DHCP Snooping的各种防御方法应该怎么配置呢?我们通过一个具体的实例来看一下。

5 DHCP Snooping应用场景

S交换机转发平面安全—二层网络安全_第5张图片

如图5所示,DHCP Client1DHCP Client2通过SwitchADHCP Server申请IP地址。通过在SwitchA上配置DHCP Snooping功能,防止以下类型的***:

Ø  DHCP Server仿冒***

Ø  DHCP报文仿冒***

Ø  DHCP报文泛洪***

Ø  DHCP Server拒绝服务***

S交换机的配置方法如下:

1.         全局和接口下使能DHCP Snooping功能。

[SwitchA] dhcp enable   //需要先全局使能DHCP功能

[SwitchA] dhcp snooping enable

[SwitchA] interface gigabitethernet 0/0/1

[SwitchA-GigabitEthernet0/0/1] dhcp snooping enable

[SwitchA-GigabitEthernet0/0/1] quit

[SwitchA] interface gigabitethernet 0/0/2

[SwitchA-GigabitEthernet0/0/2] dhcp snooping enable

[SwitchA-GigabitEthernet0/0/2] quit

2.         连接DHCP Server的接口配置为信任接口,防止DHCP Server仿冒者***。

[SwitchA] interface gigabitethernet 0/0/10

[SwitchA-GigabitEthernet0/0/10] dhcp snooping enable

[SwitchA-GigabitEthernet0/0/10] dhcp snooping trusted

[SwitchA-GigabitEthernet0/0/10] quit

3.         DHCP报文与绑定表的合法性检查,防止DHCP报文仿冒***

[SwitchA] dhcp enable

[SwitchA] dhcp snooping check dhcp-request enable vlan 10   //对VLAN 10内的用户进行合法性检查

4.         限制DHCP报文上送CPU的个数,防止DHCP报文泛洪***。

[SwitchA] dhcp snooping check dhcp-rate enable   //使能对DHCP报文上送CPU的速率检测功能

[SwitchA] dhcp snooping check dhcp-rate 90   //每秒最多处理90个DHCP报文

5.         配置DHCP Snooping绑定表个数和DHCP Request报文帧头源MAC地址与CHADDR字段一致性检查功能,防止DHCP Server拒绝服务***。

[SwitchA] dhcp snooping max-user-number 2 vlan 10   //配置VLAN 10内只允许两个用户接入

[SwitchA] dhcp snooping check dhcp-chaddr enable vlan 10

2   如何抑制广播风暴?

什么是广播风暴?

就是广播、未知组播以及未知单播报文过多或者在网络中成环的一种现象。

为什么会有广播风暴?

二层转发是根据MAC表项转发的,如果报文的MAC地址在MAC表中找不到对应的出接口,报文就会在VLAN内所有端口进行转发,从而产生广播风暴。

怎么抑制广播风暴呢?

抑制广播风暴最根本的方法是找到报文的出接口,使报文进行单播转发。然而在实际应用中,由于MAC表的规格限制和二层转发的原理,广播风暴是无法彻底解决的,只能尽可能的减少安全风险。

交换机提供了两种安全方法:一是基于不同维度进行流量抑制,二是通过风暴控制阻塞端口或Error-Down端口。

2.1   流量抑制

流量抑制可以从下面3个维度进行抑制:

功能点

说明

基于接口进行流量限制

在接口的入方向上,分别对三类报文按百分比、包速率和比特速率进行流量抑制。

基于VLAN进行流量限制

对某个VLAN的上行流量,分别对三类报文按比特速率进行流量抑制。

基于接口进行流量阻塞

在接口的出方向上,阻塞这三类报文的转发。

 

这些功能又该怎么应用呢?我们从下图看一下应用场景和配置方法。

6 流量抑制应用场景

S交换机转发平面安全—二层网络安全_第6张图片

如图6所示,SwitchA是汇聚层交换机,通过接口GE0/0/1接入网络的用户属于两个VLANVLAN 10 VLAN 20;通过接口GE0/0/2接入网络的用户属于VLAN 30;通过接口GE0/0/3接入网络只有一个固定的用户,该用户对安全要求较高,不希望收到广播、未知组播以及未知单播报文。

配置思路:

Ÿ   接口GE0/0/1下的用户属于不同的VLAN域,可以针对不同的VLAN分别进行流量抑制。

Ÿ   接口GE0/0/2下的用户属于同一个VLAN,可以直接针对该接口进行流量抑制。

Ÿ   接口GE0/0/3下的用户对安全要求较高,基于接口阻塞广播、未知组播以及未知单播报文的流量。

配置方法:

1.         基于VLAN配置流量抑制,限制每个VLAN广播、未知组播以及未知单播报文的流量。

[SwitchA] qos car qoscar1 cir 1000   //配置Qos模板,承诺速率是1000kbit/s

[SwitchA] vlan 10

[SwitchA-vlan10] broadcast-suppression qoscar1   //在VLAN视图下应用该模板,对广播报文进行抑制,承诺速率是1000kbit/s

[SwitchA-vlan10] multicast-suppression qoscar1   //在VLAN视图下应用该模板,对未知组播的抑制,承诺速率是1000kbit/s

[SwitchA-vlan10] unicast-suppression qoscar1   //在VLAN视图下应用该模板,对未知单播的抑制,承诺速率是1000kbit/s

说明:

Ÿ   在VLAN视图下应用Qos模板时,如果指定关键字share,则广播,未知组播和未知单播报文承诺的速率一共是1000kbit/s。

Ÿ   以上配置是框式设备,对于盒式设备,直接在VLAN视图下设置抑制速率,不需要配置Qos模板。

2.         基于接口配置流量抑制,限制该接口广播、未知组播以及未知单播报文的流量。

[SwitchA] interface gigabitethernet 0/0/2

[SwitchA-GigabitEthernet0/0/2] broadcast-suppression 5   //广播报文速率最多占接口速率的5%

[SwitchA-GigabitEthernet0/0/2] multicast-suppression 5   //未知组播报文速率最多占接口速率的5%

[SwitchA-GigabitEthernet0/0/2] unicast-suppression 5   //未知单播报文速率最多占接口速率的5%

说明:基于接口的流量抑制,有三种配置方式:可以基于百分比,包速率和比特速率分别抑制。其他两种配置方法不再详细说明,配置命令如下。

broadcast-suppression { percent-value | cir cir-value [ cbs cbs-value ] | packets packets-per-second }

multicast-suppression { percent-value | cir cir-value [ cbs cbs-value ] | packets packets-per-second }

unicast-suppression { percent-value | cir cir-value [ cbs cbs-value ] | packets packets-per-second }

3.         基于接口阻塞广播、未知组播以及未知单播报文的流量。

[SwitchA] interface gigabitethernet 0/0/3

[SwitchA-GigabitEthernet0/0/3] broadcast-suppression block outbound   //阻塞广播报文

[SwitchA-GigabitEthernet0/0/3] multicast-suppression block outbound   //阻塞未知组播报文

[SwitchA-GigabitEthernet0/0/3] unicast-suppression block outbound   //阻塞未知单播报文

2.2   风暴控制

风暴控制不仅可以通过设置速率控制广播、未知组播以及未知单播报文,还可以在速率超过设置阈值时对接口执行惩罚动作。

Ø  阻塞端口:

当一个检测周期内,接口上这三类报文中任意报文的平均速率大于指定的最大阈值时,接口就会被阻塞。

当一个检测周期内,接口上这三类报文中任意报文的平均速率小于指定的最小阈值时,接口就会放开阻塞。

Ø  Error-Down端口:

当一个检测周期内,接口上这三类报文中任意报文的平均速率大于指定的最大阈值时,接口就会被Error-Down

缺省情况下,被Error-Down的接口不会自动恢复,需要手动执行restart命令进行恢复。

如果在接口被Error-Down之前配置了自动恢复时间,到达时间后接口就会自动恢复。

配置方法:

[SwitchA] error-down auto-recovery cause storm-control interval 20   //如果接口被风暴控制error down,20秒后接口自动恢复

[SwitchA] interface gigabitethernet 0/0/5

[SwitchA-GigabitEthernet0/0/5] storm-control broadcast min-rate 1000 max-rate 2000   //广播报文执行惩罚动作的阈值

[SwitchA-GigabitEthernet0/0/5] storm-control action error-down   //风暴控制的惩罚动作是error down

[SwitchA-GigabitEthernet0/0/5] quit

[SwitchA] interface gigabitethernet 0/0/6

[SwitchA-GigabitEthernet0/0/6] storm-control multicast min-rate percent 5 max-rate percent  20   //未知组播报文执行惩罚动作的阈值

[SwitchA-GigabitEthernet0/0/6] storm-control action block    //风暴控制的惩罚动作是阻塞端口