Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15067320
  • 博文数量: 7460
  • 博客积分: 10434
  • 博客等级: 上将
  • 技术积分: 78178
  • 用 户 组: 普通用户
  • 注册时间: 2008-03-02 22:54
文章分类

全部博文(7460)

文章存档

2011年(1)

2009年(669)

2008年(6790)

分类: 网络与安全

2008-05-31 22:25:42

基于互联网控制信息包(ICMP)的Smurf攻击是一种强力的拒绝服务攻击方法,主要利用的是IP协议的直接广播特性。Smurf攻击对被攻击的网络,以及被利用来做扩散器的网络都具有破坏性。在这种拒绝服务攻击中,主要的角色有:
  
  黑客
  中间代理(也就是所说的扩散器)
  牺牲品(目标主机)
  在这篇文章中,我们将讨论一下Smurf攻击是如何发起的,还介绍一些如何防止自己的网络被攻击或者被利用做为Smurf攻击的中间代理的方法。
  
  Smurf攻击的过程
  
  Smurf攻击并不十分可怕;它仅仅是利用IP路由漏洞的攻击方法。攻击通常分为以下五步:
  
  黑客锁定一个被攻击的主机(通常是一些Web服务器);
  黑客寻找可做为中间代理的站点,用来对攻击实施放大(通常会选择多个,以便更好地隐藏自己,伪装攻击);
  黑客给中间代理站点的广播地址发送大量的ICMP包(主要是指Ping命令的回应包)。这些数据包全都以被攻击的主机的IP地址做为IP包的源地址;
  中间代理向其所在的子网上的所有主机发送源IP地址欺骗的数据包;
  中间代理主机对被攻击的网络进行响应。
  这时你可能会问,“一个小小的Ping包是如何使一个网站瘫痪的?”。在这儿举例解释一下。假设黑客拥有调制解调器,或者其它的能快速上网方式,能以1Mbps的速度向中间代理机器发送ICMP数据包;再假设中间代理站点有150台主机对这些ICMP包做出了反应。这样,一下子就有150Mbps的攻击数据从中间代理拥向被攻击的主机。黑客可以控制这个过程直到他自己连接到中间代理机器上,并且控制中间代理持续向被攻击主机发送ICMP包。
  
  防止你的网络遭受Smurf攻击
  
  首先,千万不能让你的网络里的人发起这样的攻击。在Smurf攻击中,有大量的源欺骗的IP数据包离开了第一个网络。
  
  通过在路由器上使用输出过滤,你就可以滤掉这样的包,从而阻止从你的网络中发起的Smurf攻击。在路由器上增加这类过滤规则的命令是:
  Access-list 100 permit IP {你的网络号} {你的网络子网掩码} any
  Access-list 100 deny IP any any
  
  在你局域网的边界路由器上使用这一访问列表的过滤规则,就可以阻止你的网络上的任何人向局域网外发送这种源欺骗的IP数据包。
  
  其次,停止你的网络做为中间代理。如果没有必须要向外发送广播数据包的情况,就可以在路由器的每个接口上设置禁止直接广播,命令如下:
  no ip directed-broadcast
  
  还有,如果你的网络比较大,具有多个路由器,那么可以在边界路由器上使用以下命令:
  ip verify unicast reverse-path
  让路由器对具有相反路径的ICMP欺骗数据包进行校验,丢弃那些没有路径存在的包。最好是运行Cisco快速转发(Cisco Express Forwarding ,CEF),或者其它相应的软件。这是因为在路由器的CEF表中,列出了该数据包所到达网络接口的所有路由项,如果没有该数据包源IP地址的路由,路由器将丢弃该数据包。例如,路由器接收到一个源IP地址为1.2.3.4的数据包,如果CEF路由表中没有为IP地址1.2.3.4提供任何路由(即反向数据包传输时所需的路由),则路由器会丢弃它。
  
   如果你的主机不幸成为了Smurf攻击的目标,在这儿可以找到很多种方法来限制这种拒绝服务攻击造成的影响。在最近新进修改的Cisco IOS操作系统中,被访问列表所拒绝的数据包直接就被丢弃(其丢弃速度几乎接近于硬件速度)。不过每秒钟每个列表行有两个数据包例外,这就是向中间代理回送ICMP不可达消息的数据包。因此,如果你不想做为别人Ping的目标,那么在边界路由器上就直接可以阻塞掉。激活这个列表的命令是:
  ip icmp rate-limit unreachable
  
  如果必须允许Ping命令,你可以通过使用命令访问速率(Committed Access Rate ,CAR)来限制ICMP的流量。以下列出了其它Cisco IOS的例子:
  config t
  Access-list 100 permit icmp any {你的网络号} {你的网络子网掩码} echo-reply
  Access-list 100 permit icmp any {你的网络号} {你的网络子网掩码} echo
  Interface e1
  Rate-limit input access-group 100 512000 8000 8000 conform action transmit exceed action drop
  
  这个例子限制ICMP的传输速率不能超过512Kbps,突发速率不能超过8000bits。所有多出的包将被丢弃。可以有多个速率限制命令同时添加到一个接口上,可以对不同的数据包进行不同的速率限制。
  
  查找黑客
  
  对发起Smurf攻击的机器的定位非常困难,但并不是不可能的。不过在你开始查找之前,应该考虑是否使用法律这一重要武器。如果想,那么保存好所有的日志文件,马上联系FBI。
  
  为了跟踪这类拒绝服务攻击的真正源头,可以采取以下几步:
  
  确定中间代理的IP地址空间,并与他们的网络管理员取得联系。记住你看到的这些包是从中间代理那儿来的,并不是从真正黑客处来的。那些以被攻击的主机的IP地址为源IP地址的进入该网络的数据包,就是黑客使用的源地址欺骗数据包。
  
  从这些数据包上取得源IP地址欺骗的物理地址,并用这些物理地址做一下ip arp(适用于Cisco IOS),得到的结果就是源IP地址欺骗来的最后一跳节点的IP地址。与他们的管理员取得联系。
  
  重复以上几步,直到你找到与跟踪的物理地址相同的路由器。
  
  总结
  
  通过过滤输出数据流,可以使你的网络免受Smurf这类攻击;通过适当地限制广播流量,就可以防止你的网络被利用成为中间代理。如果你遭到攻击,我已经给你提供了一些把灾难降低到最小的手段,还介绍了如何跟踪敌人的方法。Smurf攻击是具有破坏性的,但是合理正确的准备就可以最大限度地降攻击传播的性能和影响力。
阅读(326) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~