前几天某客户的网络通讯不太正常,许多网段时通时断。到现场一看,大吃一惊--Cisco 6509 交换机上平时根本不亮的利用率指示灯现在指示80%!用show traffic命令一看:平均利用率45%,峰值利用率75%! 过一会更考张了,6509的引擎顶不住了,开始重新启动。这是一台背板带宽256G、冗余引擎配置的机器,居然都吃不消,好厉害的病毒啊!
接上Sniffer,使用Matrix功能很快就看到,交换机的负荷主要来着一些机器发送的组播数据包(注意目标IP地址):
抓一下包,可以发现包的目标端口是UDP 1434--MS SQL Server的监控端口:
很自然就会联想到,这是与微软SQL服务器有关的一种蠕虫病毒。检查数据包的源地址发现,这些机器都是安装了MS SQL Server且补丁没有打好的。由于它们向网络发送大量的组播包,而交换机在二层上对组播包的处理方式类似于广播包,所以交换机的背板利用率、CPU及内存的利用率都相当高。
由于网络流量很大、通讯时断时续,用sniffer 监听多个VLAN或用扫描等方法找出网络中所有受感染的机器根本不可能,怎么办呢?
首先可以使用交换机广播/组播抑制功能来限制病毒流量,使核心交换机能够持续工作:
6509(enable)set port broadcast 9/1-6 10% multicast enable
很多交换机都有类似的抑制流量的功能,可以参考文档。如:6500配置文档 、3550配置文档。
经过这样处理之后,系统稳定下来了,部分网络通讯状况好转。现在可以利用下面的方法迅速找到其他被感染的机器:
在MSFC上写一个访问控制列表:
access-list 100 deny udp any any eq 1434 log
access-list 100 permit ip any any
将列表依次应用到各个端口上,注意不要一次在所有端口上应用该访问控制列表,防止MSFC因CPU利用率过高当机。用配置命令logging buffer 将访问控制列表产生的log 信息暂存到内存中,接下来就可以show log 来查看下面的信息告诉你一台受感染机器的IP地址:
Nov 12 20:01:25.508: %SEC-6-IPACCESSLOGP: list 162 denied udp 192.66.10.100(4702) - 232.109.214.109(1434), 1 packet
Nov 12 20:01:26.508: %SEC-6-IPACCESSLOGP: list 162 denied udp 192.66.10.100(4702) - 188.51.13.90(1434), 1 packet
Nov 12 20:01:27.508: %SEC-6-IPACCESSLOGP: list 162 denied udp 192.66.10.100(4702) - 64.200.54.25(1434), 1 packet
Nov 12 20:01:28.508: %SEC-6-IPACCESSLOGP: list 162 denied udp 192.66.10.100(4702) - 228.145.54.16(1434), 1 packet
(设备提供的log信息还能告诉你其他许多问题及原因,是排错的重要工具)
找出所有机器拔下网线进行处理,网络恢复了正常。