漫谈交换机的安全问题--初凯

作者:佚名      来源:NET/DXZM     点击:      时间:2005/11/10 11:27:08

漫谈交换机的安全问题   

        初凯

最初的网络设计者在设计时更多地考虑如何保证网络的联通性,而很少考虑网络的安全性。同样,很多专家开发了能够自动发现拓扑结构、自动维系网络设备关系的协议,如路由协议,这些协议能够减少网管员的工作量,提高网络的可用性,但是很多协议存在潜在漏洞,使网络面临被攻击的风险。

    MAC攻击  

    MAC地址是二层交换机工作的基础,网络依赖MAC地址保证数据的正常转发。动态的二层地址表在一定时间以后(AGE TIME)会发生更新。如果某端口一直没有收到源地址为某一MAC地址的数据包,那么该MAC地址和该端口的映射关系就会失效。这时,交换机收到目的地址为该MAC地址的数据包就会进行泛洪处理,对交换机的整体性能造成影响。假如攻击者生成大量数据包,数据包的源MAC地址都不相同,就会充满交换机的MAC地址表空间,导致真正的数据流到达交换机时被泛洪出去,不能被转发到目的地,同时导致交换机的查表速度下降。
    
在一般情况下,只有与交换机连接的端口才会出现大量MAC地址。而与PC连接的端口很难出现大量MAC地址。很多交换机不能识别与之相连的设备是交换机还是PC机。交换机特别是接入交换机提供端口的MAC地址学习控制功能,就显得非常必要。在测试3Com 4226/4228交换机时,我发现百兆端口的地址表深度仅仅几十个,而千兆端口的地址表深度基本上占据了交换机地址空间的绝大部分。提醒用户限制交换机端口的地址学习功能,一旦地址表满,必须丢弃收到的地址。用户在使用时应该合理打开这些功能。另外提醒用户需要合理设置广播域,划分VLAN,避免广播域太大,导致交换机的MAC地址表空间过大。
    
生成树攻击  
    
还有生成树问题。假如在网络中用一台PC机模拟生成树协议,不断发布BPDU包,就会导致一定范围内的生成树拓扑结构定期地发生变化。虽然没有流量,但是由于生成树不稳定,仍会导致整个网络不断发生动荡,使网络不可用。
    
路由协议攻击  
    
另一个类似的攻击就是使用路由协议发起的攻击,这一点更容易实现,因为在Linux平台中找到相关的软件协议栈非常容易。虽然一些路由协议使用了加密和认证算法,来传递路由的更新信息,但是用户很少真正启用这些功能。假如网络设置不到位,路由器配置不好,很容易让用户在一个原本应该是STUB的网段里,向整个网络发送路由信息,对整个网络的动态路由造成影响,导致路由震荡,有可能把一些通往重要方向的数据包指向错误的方向。对于前者,交换机可以关闭端口的STP功能进行防范。对于后者,交换机应该开启路由更新认证功能,另外就是做好访问控制和路由规划。
    
假如攻击发动时,发送数据包的源MAC地址为广播地址,就会导致主机回应的Response包不是单播包而是广播包,导致二层网络出现大量广播,一旦网络中有环路没有被屏蔽掉,情况不可设想。我曾经做过实验,将两台交换机对联形成环路,在每一侧连接一台PC机,互相ping。由于交换机之间的生成树协议存在漏洞,不能很好地进行收敛,形成环路,PC机的CPU占用率一下达到峰值,网络的可利用率下降到了极点。ping 操作结束后,通过抓包分析,我发现交换机仍旧疯狂转发ARP包。
    
尽管以上谈到的攻击手段需要使用专门的工具来进行,实现起来有一定难度,但是关键部门(如军队、政府)仍需提防上述攻击,因为这些关键部门面对的不是业余黑客,而是具有专业水平的攻击者,攻击者随时有可能使用户的网络瘫痪