攻击方式:
对于STP的攻击行为基本可以概括为 一台与想要攻击的网络的LAN设施直连的PC 使用Yersinia 或其他类似软件 生成各种虚假的BPDU报文达成攻击的行为。
例如:
1、接管根网桥,并不对收到的 TCN BPDU 的TC-ACK位置位(作为对收到 TCN BPDU的确认).记过导致交换机转发表中的条目持续性的过早老化,可能引发不必要的泛洪。
更具有破坏性的方法是 生命自己为根网桥 几秒后取消(声明其他角色为根网桥)。 这样会导致持续性的状态机切换,造成交换机的大量进程波动,CPU占用率居高不下,并可能引发DOS(Denial of Service 拒绝服务)。
2、发送大量BPDU报文导致交换机CPU占用率升高,达成使该交换机处于拒绝服务状态的目标。
原理:由于STP协议缺陷,交换机会尝试尽可能多的去处理BPDU。
3、不断生成TCN BPDU,迫使根网桥对它们进行确认.另外回溯该树纸质根网桥的所有交换机都会收到TC-ACK位置位的BPDU.交换机在接收到TC-BPDU报文后,会执行MAC地址表项和ARP表项的删除操作。如果有人伪造TC-BPDU报文恶意攻击交换机时,交换机短时间内会收到很多TC-BPDU报文,频繁的删除操作会给设备造成很大的负担,给网络的稳定带来很大隐患。
4、模拟双宿主交换机
接管根网桥创建新拓扑。迫使所有流量必将经过该主机主机。甚至可以迫使交换机创建Trunk端口,并截取多于一个VLAN的流量。
应对方法:
想要对目标网络进行攻击 必须要与要攻击的网络的LAN设施直连。
针对这一关键要素有几项简单有效的措施。
1、所有直接连接用户的端口配置BPDU-guard(BPDU保护)功能。
2、跟交换机配置 Root guard (根保护)。
下面针对不同厂家的设备进行配置的讲解。
CiSCO:
1、ROOT Guard
确保启用了该特性的端口即为指定端口(designated port)。若该端口收到了较优的BPDU。该端口会进入 root-inconsistent (根不一致)状态。等同于listening(监听)状态。该端口不会转发任何流量。该特性以此方式来强制确立根网桥在网络中的位置。
2、BPDU-Guard
BPDU-Guard允许网络设计者强行限制STP域的编辑并保持网络拓扑结构变化的可预测性。启用该特性的交换机端口,下连设备无法响应STP拓扑结构。一旦受到一个BPDU,该端口将会被禁用,并转变为errdisable(错误禁用)状态,同时生成一条log消息。可以通过设置自动恢复时间使该端口自动恢复正常。否则只能通过人为手动shutdown/no shutdown 操作恢复。
3、BPUD filtering(不推荐)
不推荐使用的一个特性,基本可以使用BPDU-Guard代替。
4、Layer 2 PDU rate limiter(不推荐)
只有思科的特定交换机才具有此功能(Catalyst 6500 的 Supervisor Engineer 720),是基于二层的PDU速率限制器。可以设置一个每秒接收的阀值。只能放置DOS攻击,不能阻止其他攻击。
华为:
参考文档 Quidway S9300 产品文档|产品版本:V100R003C00|文档版本:01|日期:2010-4-30
Root保护相关配置
执行命令system-view,进入系统视图。
以下子步骤中,请根据接口类型选择执行一个即可。
执行命令interface interface-type interface-number,进入以太网端口视图。
执行命令interface eth-trunk trunk-id,进入Eth-Trunk接口视图。
执行命令stp root-protection,配置交换机的Root保护功能。
配置Root保护的端口,当收到比自己优先级更高的BPDU报文时,会将自己置为Discarding状态,从而保护根桥的端口
注意:Root保护是指定端口上的特性。当端口在所有实例中都是指定端口时,配置的Root保护功能才生效。在其他类型的端口上执行Root保护功能的命令,Root保护功能并不生效。
BPDU保护相关配置
首先,配置边源端口
1.执行命令interface interface-type interface-number ,进入接口视图。
2.执行命令stp { enable | disable },启用端口的MSTP功能。
3.执行命令stp edged-port { enable | disable },配置端口为边缘端口。缺省情况下,端口为非边缘端口。
然后,开启BPDU保护功能
1.执行命令system-view,进入系统视图。
2.执行命令stp bpdu-protection,配置交换机的BPDU保护功能。
边缘端口是直接与终端相连的端口。如果交换机上有边缘端口,为防止网络振荡,需要在交换机上配置BPDU保护。
在全局配置BPDU保护后所有边缘端口都启用此保护功能。
TC保护功能
启用防TC-BPDU报文攻击功能后,在单位时间内,MSTP进程处理TC类型BPDU报文的次数可配置(缺省的单位时间是2秒,缺省的处理次数是3次。)。如果在单位时间内,MSTP进程在收到TC类型BPDU报文数量大于配置的阈值,那么MSTP进程只会处理阈值指定的次数。对于其它超出阈值的TC类型BPDU报文,定时器到期后,MSTP进程只对其统一处理一次。这样可以避免频繁的删除MAC地址表项和ARP表项,从而达到保护交换机的目的。
1.执行命令system-view,进入系统视图。
2.执行命令stp tc-protection,使能MSTP进程对TC类型BPDU报文的保护功能。
3.执行命令stp tc-protection threshold threshold,配置MSTP进程在收到TC类型BPDU报文后,单位时间内,处理TC类型BPDU报文并立即刷新转发表项的阈值。
在单位时间内,MSTP进程处理TC类型BPDU报文的次数,由stp tc-protection threshold命令指定。缺省的单位时间是2秒,缺省的处理次数是3次。
TC报文会触发设备删除ARP表和MAC表。如果单位时间内收到的TC报文过多,会导致CPU占用率居高不下,配置了TC保护就能防止这种情况发生。
另外华为还有环路保护功能,在交换机上,根端口和其他阻塞端口状态是依靠不断接收来自上游交换机的BPDU来维持的。
当由于链路拥塞或者单向链路故障导致这些端口收不到来自上游交换机的BPDU时,此时交换机会重新选择根端口。原先的根端口会转变为指定端口,而原先的阻塞端口会迁移到转发状态,从而造成交换网络中可能产生环路。
环路保护功能会抑制这种环路的产生。在启动了环路保护功能后,如果根端口收不到来自上游的BPDU时,根端口会被设置进入阻塞状态;而阻塞端口则会一直保持在阻塞状态,不转发报文,从而不会在网络中形成环路。
H3C与华为配置基本在此一致不再赘述
本文同时发在了通信人家园论坛:http://www.txrjy.com/forum.php?mod=viewthread&tid=727833&page=0