![]() |
专题推荐:
Mysql初级教程 |
MySQL数据库技术强化学习 |
nginx负载平衡 |
搜索引擎优化(SEO) |
Linux命令详解 |
Linux网管 |
常用手册: MySQL4.1中文手册 | HTML4.0参考手册 | APACHE 2.0中文在线手册 | MySQL 5.1参考手册 | FreeBSD 7.0使用手册 |
1.引言
拒绝服务攻击,简称DoS(Denial-of-Service),是一种常见的黑客攻击行为。这种攻击行为通过发送带有虚假源地址的数据包请求,使网络服务器充斥大量等待回复的信息,消耗网络带宽或系统资源,使网络或系统服务负载过重,服务质量下降,直至瘫痪而停止正常的服务。有时,黑客为了提高攻击的效果,往往会联合多个攻击站点向受害者发动进攻。由于DoS攻击易于实施、难于防御,而且很难返回跟踪攻击源,使之成为一个严重侵扰网络服务提供商、政府机关和金融证券等机构正常运作的安全问题。
2.IP返回跟踪相关技术
为了彻底消除DoS攻击,必须追根溯源,找到真正的攻击机器或攻击者。这种方法被称为IP返回追踪技术(IP Traceback)。由于DoS攻击者在发送攻击数据包时往往会伪造源地址,使得IP返回追踪的难度很大。常用的IP返回追踪方法有:入口过滤(Ingress Filtering)、连接测试(Link Testing)、ICMP追踪[7]、登录分析(Logging)、源路径隔离引擎(SPIE)、IPSec追踪,以及随机数据包标记追踪(PPM)[2]。各种追踪技术之间的性能比较,如表1所示。
管理负担 网络负担 路由器负担 分布式能力 事后追踪能力 预防/反应
进入过滤 中等 低 中等 N/A N/A 预防
输入调试 高 低 高 好 差 反应
控制流 低 高 低 差 差 反应
登陆分析 高 低 高 极好 极好 反应
ICMP追踪 低 低 低 好 极好 反应
数据包标记 低 低 低 好 极好 反应
表1 几种IP返回追踪技术的性能比较[2]
3.HPPM IP返回跟踪算法
3.1 PPM算法(Probabilistic Packet Marking)
随机数据包标记算法PPM的主要原理如下:路由器以一定的概率p(通常是1/25)[2],用其IP地址或IP地址的一部分随机标记经过它的数据包。当发生DoS攻击时,受害者根据其收到的攻击数据包中的标记信息,重建攻击路径。使用PPM算法,路由器负担较小,采用标记边压缩和分片技术大大降低了额外的网络流量。而且,该方法可以在攻击结束以后对攻击源进行追踪。PPM对单源DoS攻击,有较好的追踪效果。
但是,由于其自身缺陷,PPM算法无法很好地返回跟踪DDoS攻击(Distributed–Denial–of–Service)。首先,由于路由器以概率p随机标记数据包,就给攻击者以可乘之机,将伪造的标记信息写入攻击数据包的报头中(一般是Identifier字段),只要该数据包一直不被其经过的路由器标记,直至目标主机,就能在攻击路径中伪造一条边路径,阻止受害者跟踪真正的攻击源。其次,为了节省存储空间,减小网络负担,PPM采用了边标记压缩和分片存储技术。但是,分片存储可能导致受害者将本不属于同一数据包的分片组合在一起,从而生成错误的边路径。而标记的边压缩方法主要依据(a○+b)○+b=a(a、b分别是攻击路径上相邻两个路由器的IP地址),将显著加剧这一效果,进一步生成错误的攻击路径。当发生DDoS攻击时,由于同一距离存在多个攻击者,而产生爆炸效果,影响将更加严重[2]。
3.2 HPPM算法
针对PPM算法的上述缺陷,我们提出了一种基于散列消息鉴别码HMAC的数据包标记算法HPPM,并采用新的标记重叠分片策略,以提高IP返回跟踪DoS攻击(特别是DDoS攻击)的性能。
在该算法中,路由器Ri以概率p随机对经过它的数据包进行标记,标记信息包括Ri的IP地址和下一跳路由器Rj的IP地址,总共64位。为了节省标记存储空间,不给用户带来过多影响,算法使用IPv4首部中的16位标识符字段(Identifier),1位闲置的标志位(Flags)[1]和13位片位移字段(据统计,目前少于0.25%的数据包需要分片[2]),以及一般很少使用的8位TOS字段(Type-of-Service)[1],总共38位,来存储标记分片信息。64位标记信息被分成k=8片,每片占用8位,分片偏移值占log2k=3位,Ri到目标主机的距离值占5位(25-1=31跳,适用于目前绝大多数网络[2]),用于验证的HMAC值占22位。