Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2338297
  • 博文数量: 609
  • 博客积分: 10061
  • 博客等级: 上将
  • 技术积分: 5920
  • 用 户 组: 普通用户
  • 注册时间: 2008-06-25 08:30
文章分类

全部博文(609)

文章存档

2010年(13)

2009年(39)

2008年(558)

我的朋友

分类: 网络与安全

2008-08-25 19:21:41

smurf攻击的原理、防治及程序实现

    基于互联网控制信息包(ICMP)的Smurf攻击是一种强力的拒绝服务攻击方法,主要利用的是IP协议的直接广播特性。Smurf攻击对被攻击的网络,以及被利用来做扩散器的网络都具有破坏性。在这种拒绝服务攻击中,主要的角色有:

黑客
中间代理(也就是所说的扩散器)
牺牲品(目标主机)


    在这篇文章中,我们将讨论一下Smurf攻击是如何发起的,还介绍一些如何防止自己的网络被攻击或者被利用做为Smurf攻击的中间代理的方法。

Smurf攻击的过程

   Smurf攻击并不十分可怕;它仅仅是利用IP路由漏洞的攻击方法。攻击通常分为以下五步:

   1>黑客锁定一个被攻击的主机(通常是一些Web服务器);
   2>黑客寻找可做为中间代理的站点,用来对攻击实施放大(通常会选择多个,以便更好地隐藏自己,伪装攻击);
   3>黑客给中间代理站点的广播地址发送大量的ICMP包(主要是指Ping命令的回应包)。这些数据包全都以被攻击的主机的IP地址做为IP包的源地址;
   4>中间代理向其所在的子网上的所有主机发送源IP地址欺骗的数据包;
   5>中间代理主机对被攻击的网络进行响应。

    这时你可能会问,“一个小小的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攻击时的防护

    如果你的主机不幸成为了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攻击的机器的定位非常困难,但并不是不可能的。不过在你开始查找之前,应该考虑是否使用法律这一重要武器。

为了跟踪这类拒绝服务攻击的真正源头,可以采取以下几步:

    确定中间代理的IP地址空间,并与他们的网络管理员取得联系。记住你看到的这些包是从中间代理那儿来的,并不是从真正黑客处来的。那些以被攻击的主机的IP地址为源IP地址的进入该网络的数据包,就是黑客使用的源地址欺骗数据包。

    从这些数据包上取得源IP地址欺骗的物理地址,并用这些物理地址做一下ip arp(适用于Cisco IOS),得到的结果就是源IP地址欺骗来的最后一跳节点的IP地址。与他们的管理员取得联系。

    重复以上几步,直到你找到与跟踪的物理地址相同的路由器。

总结

    通过过滤输出数据流,可以使你的网络免受Smurf这类攻击;通过适当地限制广播流量,就可以防止你的网络被利用成为中间代理。如果你遭到攻击,我已经给你提供了一些把灾难降低到最小的手段,还介绍了如何跟踪敌人的方法。Smurf攻击是具有破坏性的,但是合理正确的准备就可以最大限度地降攻击传播的性能和影响力。

阅读(6206) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~