APP下载

提高二层安全防护

2018-03-03

网络安全和信息化 2018年7期
关键词:交换机数据包命令

二层存在的安全风险

二层交换机工作原理很简单,其实是存在一定的安全隐患的。例如未知的单播泛洪就是常见的攻击方式,当二层交换机接收到一个单播包后,如果其包含的MAC地址没有出现在CAM表中,交换机会将该包向相同广播域中的所有接口进行转发,就形成了泛洪现象。这实际上是交换的默认行为,但不同的交换机的CAM表包含的项目是有限的,例如对于Cisco Catalyst 3560来说,容量为12KB,对于Cisco Catalyst 6500E来说,容量为128KB等。如果添加的条目超过限制值,就会被覆盖或者丢弃。

这样,如果有人在当连接在同一广播域的某台主机上利用黑客工具,在很短的时间内发送了大量包含伪造源MAC地址的数据包,当交换机接收到这些数量庞大的数据包,就会不停重复以上谈到的操作,即频繁的将虚假的源MAC地址和相关端口信息添加到CAM表中,很容易将CAM表填满,并覆盖其中原本正常合法的项目。这样,当合法的主机(例如PC1)向目标主机(例如PC2)发送的正常的单播数据包时,交换机会认为其是一个未知的单播,这是因为CAM表已经被非法数据占满,交换机在其中查不到对应的项目,所以交换机会将该包向相同VLAN和端口和Trunk进行转发。这样,不仅PC2收到了PC1发来的数据包,别的主机上黑客也会收到该数据包,黑客利用嗅探工具就可以截获PC1到PC2的通讯流量。

当然,相关的攻击方式还有很多。例如黑客可以进行伪造MAC地址攻击,当PC1和PC2正常通讯时,如果PC2获得了PC1的MAC地址,黑客就会伪造包含PC1的MAC地址的数据包,当交换机接收到后,会认为和PC3通讯的目标主机为PC2,就会将原本发送给PC1的数据发送给PC3。因为二层交换机是根据接收到的数据包来不停的刷新其CAM表。利用Port Security技术,可以有效阻止以上攻击的发生。通过限制交换机上特定端口可以学习到的MAC地址的数量,将会触发 Shutdown、Restrict、Protect等行为,让MAC地址泛洪攻击失效。

当交换机指定端口学习到的MAC地址数量超标时,默认执行Shutdown动作模式该接口处于errordisable状态并且报警。如果指定了第二种方式,则丢弃不合规的数据包并且报警。如果指定了第三种方式,则直接丢弃违规的数据包并且不报警。对于同一个MAC地址来说,在交换机的中的同一个VLAN中的两个不同接口不能同时将其学习到,这可以防止伪造MAC地址攻击。注意,在默认情况下,所有接口的Port Security的功能是禁用的。每个接口最大的MAC地址容量为1个。对于交换机的地址学习方式来说,包括自动学习(默认),手工指派和Stick(粘帖)。对于手动指派来说,可以为指定的端口绑定某个MAC地址,如果其他的主机连接上来,则视为违规。对于网络打印机,网络摄像头等特殊的设备来说,因为其MAC地址不易查看,所以可以采用Sticky方式获得,即让指定端口学习到的第一个MAC地址以粘帖的方式进行绑定。

启用端口安全,提高二层安全性

例如,当登录到交换机上后,执行“sh port-securoty interface ethernet 0/0”命令,在返回信息中的“Port Security”栏中如果“Disable”字样,说明该端口的Port Security功能没有开启。执行“config t”、“int ethernet 0/0”、“switch port-security”,来针对该端口开启Port Security功能。注意,如果是动态协商成Trunk的接口是不能开启Port Security功能的,只能是Access接口才可以。可以执行“switchport mode access”,“swithport access vlan x”命令,将其修改为Access模式即可。

执行“switchport portsecurity maximum x”命令,可以将该端口最大可以学习的端口数量设置为“X”,“X”为具体的数量值。执行“switchport port-security violation protect”命令或“switchport port-security violation restrict”命令,设置对应的动作模式。执行“switchport port-security mac-address x.x.x.x”命令,手动绑定指定MAC地址。执 行“switchport port-security mac-address sticky”命令,允许自动粘贴首个传入的MAC地址。至于绑定多少个地址,以设置的许可数值为准。执行“exit”,“sh run int ethernet 0/0”命令,可查看该端口下的配置信息。在返回信息中如果出现“Ethernet 0/0 is down,line protocol is down(error-disabled)”之类内容,说明在该端口出现了违规问题。

引起error-disable状态的原因有很多,在全局配置模式下执行“errdisable recovery cause?” 命 令,会显示所有可能的原因,这里显然是因为“securityviolation”引发的。对于处于error-disable状态的端口,恢复的方法包括自动和手动模式,对于前者来说,可执行“errdisable recovery cause security-violation”命令,开启自动恢复功能,注意需要在该命令中指明违规的原因。执行“errdisable recovery interval x”命令,设置恢复时间,单位为秒,范围从30到86400。执行“sh errdisable recovery”命令,显示允许自动恢复的项目。例如将恢复时间设置为30秒,当达到时间点后,该端口会自动恢复。但是如果黑客的攻击持续不断,该端口会不断的处于关闭和恢复状态,这无疑会白白的消耗资源。因此,使用手动恢复可以有效避免该问题。其实现方法很简单,执行“config t”,“int eth 0/0”,“shutdown”,“no shut”命令,即可恢复该端口活力。

使用Root Guard保护根桥安全

当多台交换机连接成一个环路时,会使用特定的法则算出一个接口被Block阻塞,方法是首先选择根桥,其上的所有端口都处于转发状态,之后在每个非根桥上选择一个根端口,使其处于转发状态,并在每一个网段选择一个指定端口,将其设置为转发状态,之后剩下的端口都处于Block状态。不管处于什么情况,只要交换机组成环路,都会使用STP技术为其Block一个接口。

从环路的结构上分析,对于根桥来说,所有端口都处于转发状态,如果有人非法连接了一个交换机,如果其优先级最低,就将根桥的角色抢夺过来,造成原来网络的Block端口发生变化,该交换机上所有端口会自动处于转发状态,因为根桥可以汇聚流量,所有一旦让其得手,只要黑客在该交换机上连接一台主机,开启专用的嗅探抓包软件,就可以捕获该根桥上的所有数据,这样,网络中的所有流量就会彻底暴露在黑客面前。

为了避免上述攻击方式,就需要采取Root Guard技术,避免让根桥随意发生变化。其原理是当确定某台交换机处于根桥角色时,则其他接入的交换机禁止抢夺根桥角色。例如在交换机管理命令行中执行“interface fa 0/1”,“spanning-tree guard root”命令,就可以针对fa 0/1接口Root Guard功能。此外,采用BPDU Guard方法,也可以实现同样的防护功能。

我们知道,BPDU是交换机用来选择根桥以及计算哪些端口会被Block的数据包,对于有些端口(例如一些Access端口等)来说,是没有必要收到BPDU包的。对于这些Access端口来说,需要配置BPDU功能功能。对于BPDU的过滤,包括BPDU Guard 和 BPDU Filtering。对于前者来说,其安全级别最高,一旦被在端口下启动了BPDU Guard功能,只要其收到BPDU包,会自动将其设置为errdisable状态,并发出警告信息。

例如,执行“interface fa 0/1”、“spanning-tree bpduguard enable”命 令,可以在指定端口上启用BPDU Guard功能。如果执行“errdisable recovery cause bpduguard”、“errdisable recovery interval 30”、“spanningtree portfast bpduguard default”命令,可以在全局启动BPDU Guard功能。如果端口的errdisable状态是因为BPDU Guard安全违规引起的,则经过30秒自动恢复。对于后者来说,当其端口发送和接收到BPDU包后,可以自动将其丢弃。执行正常的数据包转发操作,对BPDU包不予理睬。执行“interface fa 0/1”、“spanning-tree bpdufilter enable”、“spanning-tree portfast bpdufilter default”命令,可以在指定端口开启BPDU Filtering功能。

防御VLAN跳跃攻击

对于VALN跳跃攻击,同样不能掉以轻心。对于在Trunk链路行传输的数据包,才可以打上tag标记,用来区分不同的VLAN的流量。但是在Access接口的二层数据包中的以太网头部是无法打上tag的。

因此需要利用Trunk封装技术,Trunk封装分为两种,包括Dot802.1Q和ISL。对于Dot802.1Q封装来说,会在二层数据包以太网网头部插入Dot802.1Q字段。对于后者来说,会在数据包以太网网头部打上ISL包头。因此,只能在不同交换机之间的Trunk链路上为数据包打上tag标记。

对于不同VALN之间的数据包,会分别添加不同的Tag信息。例如对于VLAN10流量来说,插入的tag值为10,对于VLAN20流量来说,插入的tag值为20。当对方的交换机接收到这些流量数据包后,会根据不同的tag标记值,将对应的数据包发送给关联的VALN。

但是,当交换机的一个Access接口接收到一个带有tag的包时(虽然理论上不会这样)。如果该包的tag值和该端口所属的VALN号相同,则直接接受。如果该包的tag值和该端口所属的VALN号不一致,则将其直接丢弃。在Dot802.1Q中存在名为Native VLAN的概念,其默认为VLAN 1,是不会打上tag的。要想实现VLAN跳跃攻击,必须基于Native VLAN才可以进行。

例如,如果黑客连接的交换机端口从属于VLAN 9,那么Trunk的Native VALN必须是VLAN 9才行。如果黑客攻击的目标主机连接到另外一台交换机,其位于VLAN 100。那么黑客可以对发送的数据包打上数值为100的tag,因为数据包的上层还需要封装一个tag,其值为其连接的交换机接口VLAN号,才可以被该接口所接受。但是该 VALN是 Native VLAN,所以会打上该tag标记来欺骗交换机端口。交换机接收到黑客伪造的数据包后,自然会正常接收,之后将其发送到Trunk链路上,而Trunk链路实际上从属于任何VLAN的,自然不会将其丢弃,Trunk的一端会将该包的外层标签剥离,并将其该数据包发送过去。

在Trunk的另一端会将该包的外层标签剥离,之后发现内层标签还有一个VLAN号,就会将其剥离并将封装的数据发送给对方交换机的VLAN 100,这样该数据包就会到达目标主机。防御VLAN跳跃攻击的方法是确保和用户主机连接的交换机接口配置为Access模式,并Shutdown所有未使用的端口,即使不能全部Shutdown,也至少将所有的未使用接口设置为Access状态,使其无法协商Trunk协议,并将其放入一个未被使用的VALN中,因为该VLAN没有配置网关,所以自然不会和外界通讯。之后在Trunk链路上配置一个虚假的并不存在不被使用Native VLAN。

对于VALN跳跃攻击来说,有效的防御方法需要从设计角度来考虑。例如,在全局配置模式下执行“vlan 199”、“shutdown”、“vlan 198”、“shutdown”命令,创建VLAN 198和VLAN 199,并 将 其 Shutdown。 执行“int range f0/15-20”命令,进入f0/15-20端口范围中,假设这些端口未被使 用。 执 行“switchport access vlan 199” 命 令,将其划入VLAN 199。执行“switchport trunk encapsulation dot1q”命令,将其封装为Trunk接口,执行“switchport mode trunk”、“switch nonegotiate” 命令,设置Trunk非协商功能,禁止其发送协商信息。执行“switchport trunk native vlan198”命令,将VLAN 198设置为Native VLAN。这样,VLAN 998和VLAN 999为手工关闭的VLAN,并将没有使用到的接口放置到其中。

如果想使用某个未用接口(例如 f 0/15),可以执行“int f 0/15”,“switchport access vlan 50”命令,将其放置到VLAN 50中,这里的VLAN 50为正常的可以使用的VALN。这样,就可以正常使用该端口了。不用的话,可以执行“switchport access vlan 199”命令,将其移动到关闭掉的VALN中。这样的话,这些未使用的端口就处于安全状态了。将Trunk协议设置为ON模式,禁止其自动协商,并禁止其定期发送相关消息。将Trunk上的Native VLAN设置为一个不使用的VLAN,在Tunk链路上配置所需要承载的具体的VLAN,并且为Native VLAN打上tag 标 记。 假 设F0/19,f0/21为Trunk接口,执行“int range f/19,f0/21”命令,对其进行配置。执行“switchport trunk allowed vlan 10,20,30”命令,只允许其传递VLAN10/20/30的流量,这些VAN是正常可以正常使用的。执行“valn dot1q tag native”命令,对Native VLAN也打上tag标记,即将Native VLAN排除在外并禁止使用。

猜你喜欢

交换机数据包命令
只听主人的命令
二维隐蔽时间信道构建的研究*
民用飞机飞行模拟机数据包试飞任务优化结合方法研究
基于地铁交换机电源设计思考
C#串口高效可靠的接收方案设计
修复损坏的交换机NOS
移防命令下达后
缔造工业级的强悍——评测三旺通信IPS7110-2GC-8PoE工业交换机
这是人民的命令
罗克韦尔自动化交换机Allen-Bradley ArmorStratix 5700