防毒别忘了路由器


8月下旬开学 , 我刚到学校就被告知:学校网络时断时续 , 大部分网站因超时无法访问 。当时我第一个念头就是:冲击波蠕虫!路由器一定没问题 , 因为这台路由器是新换不到3个月的一台国产品牌路由器 , 一定是由于冲击波蠕虫爆发引起的网络拥挤堵塞 。
于是我开始对网段内的机器扫描 , 忙着给每台单机打补丁 。忙了两天 , 该补的补了 , 该升的也升了 , 可情况仍不见好转 , 而且时通时不通的情况更加严重 , ping外部网关 , 100个包掉90个包是常事 。碰巧的是学校周边市政施工 , 将单位光纤临时挪动 , 几个同事认为可能是光纤受到损伤 , 于是采用替换法将老Cisco 2621(设置相同)换上 。希奇的事情发生了 , 网络竞然通了 , ping100个通100个 , 但连接质量较差 , 连接速度均在lOOms左右 , 由此可断定光纤无损 。接下来 , 我将国产路由器IOS升级 , 打电话咨询 , 换全新的国产路由器……忙活了近一个星期 , 问题仍无法解决 。
9月初 , 我将Cisco路由器接上 , 好奇之余打开Debug监控 , 在键入debug ip icmp后 , 意想不到的情况出现了 , 类似 "2002-1-100:01:05 ICMP:sent unreachable to211.93.39.44(dstwas210.42.94.79),len36"的记录开始疯狂地翻屏 。
记录的含义如下:
ICMP:Internet控制信息协议 。
sent.发送ICMP报文 。
to 211.93.39.44:ICMP报文的目的地址是211.93.39.44 。
dstwas210.42.94.79:引起ICMP报文的原始报文的目的地址是210.42.94.79;
"len 36".ICMP报文的长度是36字节 , 其中不包括旧报头长度 。
我既惊奇又庆幸 , 惊奇的是 , 我调试时是抛开内网的 , 产生如此大的ICMP报文 , 只能说明路由器接收到外网大量无用报文;庆幸的是 , 简单的Debuq命令竞然帮我找到了问题所在 。于是我换上国产路由器 , 将1CMP端口封闭 , 呵呵 , 随便找一个网站均能顺利打开了 。可是却不能再用传统的pinq来测试速度了 , 不过能顺利打开各个网站就说明问题已经解决了一大半 。现将几种蠕虫对网络通信质量危害的主要方式及解决方法总结如下 。
冲击波杀手
首先 , 冲击波杀手W32.Nachi蠕虫使用类型为echo(ICMP TYPE=8)的1CMP报文ping根据自身算法得出的旧地址段 , 发送大量载荷为"aa"、填充长度为92字节的ICMP报文 , 检测这些地址段中存活的主机 , 结果大量1CMP报文导致网络拥挤、堵塞 。这就是以下大量1CMP报文数据产生的原因!
下面便是使用了访问列表后 , 使用debugIPpacket
detaiI命令后 , 一秒内产生的l35条记录中的1条记录:
 
对记录的解释如下:
IP.表示这条信息是关于IP报文的 。
src=https://www.rkxy.com.cn/dnjc/218.72.13.36(FastEtherent0/0):IP报文的源地址和收到报文的接口名称 (假如不是本地生成的报文) 。
dst=210.42.92.86.IP报文的目的地址和发送报文的接口名称 (假如路由成功的活) 。
len=92:IP报文的长度 。
Denied by incoming acl FastEthernet0/0:被FastEthernet0/0的接收接口的接收访问表拒绝 。
ICMP:type-8,code-0:ICMP报文的类型和代码值 。
随机一秒钟就有l35次的1CMP报文 , 可想而知高峰期一分钟有多少?一小时有多少?
蠕虫一旦发现存活的主机 , 便试图使用135端口的RPC漏洞和80端目的Wehdav漏洞进行溢出攻击 。溢出成功后会监听666-765范围中随机的一个端口 , 等待目标主机回连 。但是从我们监测的情况看 , 通常都是707端口 。
解决方法
假如您不需要应用这些端口来进行服务 , 为了防范这种蠕虫 , 您应该在路由器上关闭下面的协议端口:UDP Port 69,TCP Port135,ICMP echo request(type8) 。
span
strip 在路由器上配置如下访问列表:
◆Cisco路由:Access-list110deny icmp any any echo (用于控制Nachi蠕虫的扫描) 。
◆国产某路由:access-list110denyicmpanyany8 (用于控制Nachi蠕虫的lcrnptype"s的扫描) 。
冲击波
冲击波(W32.Blaster)蠕虫和Nachi蠕虫攻击的机理差不多 , 在此就不再赘述 。
其主要使用端口为:TCP4444(蠕虫开设的后门端口 , 用于远程命令控制)、UDP Port 69(用于文件下载)、TCP Port135(蠕虫用以下端口发现有漏洞的系统).TCP Port 137. TCP Port 139.
解决方法
假如您不需要使用以上端口 , 可以在路由器上关闭以上端口 。可在路由器上配置如下访问列表:
用于控制Blaster蠕虫的传播
引申
其实Slamnnfer蠕虫(感染SQL Server)也可以通过以下访问列表来控制其传播:
access-list 110 deny udp any any eq 1434
access-list 110 permit ip any any
另外 , 为了防止广播流量进入和防范Smurf类型的攻击 , 在Cisco路由器上还应加上noipdirected-broadcast,国产路由器某品牌则是默认关闭 。
最后 , 别忘了在出口接口上加上interface FastEthernet0/0(FastEthernet0/0为我校出口接口,应根据据各单位的情况而定) 。
ip access-group 110 in
ip access-group 110 out
假如内部的机器较多 , 修补漏洞的时间较长 , 也可将内部接口上加上 , 避免无谓的流量造成网络堵塞 。
总结
当你明知道问题所在而就是无法解决的时候 , 是最轻易烦躁的 , 这时候就需要告诫自己解决问题不能定式于问题的某一点 , 应该从多方面入手进行解决 。
最后还有个问题想了很久 , 为什么相同设置的Cisco路由器在没有加相应的访问列表时仍然可以正常工作?我猜测可能是和路由器的IOS有关 。可能Cisco的IOS的设计对ICMP的冲击作了相应的考虑 , 而国产某品牌在这方面考虑不足或者有缺陷 。这只是我个人的推断,请大家指正 。