如何防止ip攻击 Fragment攻击

如何防止IP Fragment攻击
IP Fragment攻击作为一种基于数据碎片的攻击手段,本篇文章通过叙述IP Fragment攻击的基本概念以及攻击形式从而通过利用扩展ACL防止IP Fragment攻击,提升企业在网络应用中的安
IP Fragment攻击作为一种基于数据碎片的攻击手段,本篇文章通过叙述IP Fragment攻击的基本概念以及攻击形式从而通过利用扩展ACL防止IP Fragment攻击,提升企业在网络应用中的安全程度,也旨在提高企业安全管理员的技术程度。1.基本概念要说fragment的话,先说一下MTU(Maximum Transmission Unit,最大传输单元),这个是数据链路层的PDU(Protocol Data Unit,协议数据单元),也就是帧的大小。不同的数据链路层协议, 帧的格式也不同, 但大致都会有目标MAC地址、源MAC地址、长度/类型、数据(有效载荷: Payload)这几个字段。 对最常见的以太网而言, 采用的是数据链路层协议是基于IEEE 802.2/802.3, 但与标准IEEE 802.2/802.3略有区别。以太网帧中的数据(有效)字段的长度范围是46-1500个字节。这个1500就是以太网的MTU。不同链路层协议, MTU值也不同, 对以太网, MTU是1500字节, 而对令牌环(Token Ring)网, MTU是4482字节。当链路层的上层协议,比如IP协议所要传输的IP数据包(包括IP Header)大小超过这个长度范围时, IP数据包就必须分成多片传输, 这个过程就是分片(Fragmentating), 其中分割出来的每一个片断就是一个Fragment。2.IP包中于分片有关的字段注意;我们接着往下提到的IP包中的字段都是IPv4中的,IPv6的包中没有关于分片的字段,因为IPv6中采用了不同的关于MTU的机制,这个回头在IPv6中提到。IP数据包在封装时, 在IP头的第8-9个字节(16bit)中, 存放关于分片的信息. 其中前3个bit表示分片的状态, 后13个bit表示当前片断在分片之前的整块待封装的数据包中的偏移量(因为IP数据包的最大可能长度为16bit, 而这13bit无法表示16bit的范围, 故实际使用时, 偏移量的计算是用这13bit的值乘8(3bit), 以实现表示16bit的范围)。不分片标记(Don't Fragment Flag)IP头第8-9字节从左往右的第2bit表示当前IP数据包是(1)否(0)不分片, 缺省值为0, 就是不不分片, 即允许分片. 因为默认允许分片, 所以我们平常使用Ping命令时, 加参数-l 65500(指定IP包大小)Ping一台机器也不会有问题。是否有后续分片标记(More Fragments Flag)IP头第8-9字节从左往右的第3bit表示当前数据包里的数据是否为某块数据的最后一个分片, 若为0, 则说明当前数据包内的数据没有分片或者是最后一个分片, 若为1, 则表示后面还有属于同一块数据的分片。最后可以做个测试;之前一直说以太网MTU是1500,那么我们在主机上运行这样一个命令:ping 192.168.0.1 -l 1500 -f&&&&& '-f参数是不允许分片,也就是将Don't Fragment Flag设置为1。这是提示;Packet needs to be fragmented but DF set.(包需要分片,但是不允许分片。)这是因为,帧中封装的是 IP Head+IP Data, IP Head大小20字节,而且ping命令所使用的ICMP协议会有8个字段的首部信息,=1472,你会发现;ping 192.168.0.1 -l 1472 -f这个是能ping通的。ICMP比较特殊,一般情况下:各分片具有分片数据长度,其中20字节IP包头不包含在该数据长度中。即,传输1500字节的数据时,实际数据长度为)字节。3.利用扩展ACL防止IP Fragment攻击说正题了;fragment攻击是指通过恶意操作,发送极小的分片来绕过包过滤系统或者入侵检测系统的一种攻击手段。攻击者通过恶意操作,可将TCP报头(通常为20字节)分布在2个分片中,这样一来,目的端口号可以包含在第二个分片中。对于包过滤设备或者入侵检测系统来说,首先通过判断目的端口号来采取允许/禁止措施。但是由于通过恶意分片使目的端口号位于第二个分片中,因此包过滤设备通过判断第一个分片,决定后续的分片是否允许通过。但是这些分片在目标主机上进行重组之后将形成各种攻击。通过这种方法可以迂回一些入侵检测系统及一些安全过滤系统。我们利用扩展ACL即可对IP Fragment攻击进行控制,命令如下:access-list 101 permit/deny &协议& &源& &目的& fragment&&& '在命令后加个fragment就行了。加不加这个fragment是有很大区别的,下面这段借鉴了雪山飞鹄的学习笔记;(1) 当一个ACL只含有三层信息时(不含端口号),对所有的包都进行控制。(2) 当不使用frament 选项时,一个包含三层和四层信息的acl 条目将对所有的数据包进行以下控制:如果是未分片数据包(nonfragmented)或者分片数据包的第一个分片(initial fragment) ,都将按正常的ACL 进行控制(permit 或deny)。如果是分片数据包的后续分片(noninitial fragment),则只检查ACL 条目中的三层部分(协议号、源、目的)。如果三层匹配而且是permit 控制,则允许该分片通过;如果三层匹配而且是deny 控制,则继续检查下一个ACL条目(和正常的ACL 控制顺序不同)。(3)当使用fragment 选项时,一个acl 条目将只对分片数据包的后续分片(noninitial fragment)进行控制;并且ACL条目中不能包含四层信息。这里还是不好理解,说一下我的看法;早期的IOS中,ACL中deny只拒绝匹配丢份的未分片和初始(第一个)分片,而对后续分片不拒绝。其实这个现在的IOS中已经会都拒绝掉了。而加上fragment的话,这句ACL就只会对后续分片进行控制了。早期的IOS中我们一般会写两句ACL,一句不带Fragment,一句带。但现在的IOS中,一句不带fragment的ACL也可以deny掉后续分片。那么带fragment的ACL还有什么用呢?记住,带fragment的ACL只会对后续分片进行控制!我们可以在这样一种情况下使用;如果不分片的话我就让你通过,但是你分片了我就不让你过!从而防止fragment攻击。大致是这样吧,把带有四层信息的ACL和带Fragment的ACL结合在一起用效果会更好的!
无相关信息
Copyright & 2016 Ninxun All Rights Reserved
您讯公司 版权所有您现在的位置:&&>>&&>>&&>>&&>>&正文
IP&fragment&attack
&&& 所谓Tiny fragment攻击是指通过恶意操作,发送极小的分片来绕过包过滤系统或者入侵检测系统的一种攻击手段。攻击者通过恶意操作,可将TCP报头(通常为20字节)分布在2个分片中,这样一来,目的端口号可以包含在第二个分片中。
&&& 对于包过滤设备或者入侵检测系统来说,首先通过判断目的端口号来采取允许/禁止措施。但是由于通过恶意分片使目的端口号位于第二个分片中,因此包过滤设 备通过判断第一个分片,决定后续的分片是否允许通过。但是这些分片在目标主机上进行重组之后将形成各种攻击。通过这种方法可以迂回一些入侵检测系统及一些 过滤系统。
&&& IP分片的理解
&&& IP在传输数据包时,将数据报文分为若干分片进行传输,并在目标系统 中进行重组。这一过程称为分片( fragmentation)。 IP 分片(Fragmentation)发生在要传输的IP报文大小超过最大传输单位MTU(Maximum Transmission Unit)的情况。比如说,在以太网(Ethernet)环境中可传输最大IP报文大小(MTU)为1500字节。如果要传输的报文大小超过1500字 节,则需要分片之后进行传输。由此可以看出,IP分片在网络环境中是经常发生的事件。但是,如果经过人为的恶意操作的分片,将会导致拒绝服务攻击或者迂回 器、或者网络入侵检测系统(NIDS)的一种攻击手段。
&&& 为到达目标主机之后能够正常重组,各分片报文具有如下信息:
&&& * 各IP分片基于IP分片识别号进行重组,识别号相同的重组为相同的IP报文。IP分片识别号长度为16位,叫做"IP identification number"或者"fragment ID".
&&& * 各分片具有从原始报文进行分片之前的分片偏移量以确定其位置。
&&& * 各分片具有分片数据长度,其中20字节IP包头不包含在该数据长度中。即,传输1500字节的数据时,实际数据长度为-20)字节。
&&& * 当每个分片之后还存在后续的分片时,该分片的ME(More Fragment)标志位为1.
【责编:peter】
·&[]·&[]·&[]·&[]·&[]·&[]·&[]·&[]·&[]·&[]
 友情推荐精华
· · ·· ·
·····
 专题推荐
 · · · · · · · · · ·
 今日更新
·&·&·&·&·&·&·&·&·&·&
 认证培训
 频道精选
 思科频道导航IP分片(IP Fragment)
为什么要分片
&&&&&& 不同的链路类型能够支持的最大传输单元值(MTU: Maxitum Transmission Unit)主要是由相关RFC文档规定的,常见的以太网链路的MTU值为1500,如果需要转发的IP报文超出其转发接口的MTU值,则在转发该报文之前,需要将其分片,分为多个适合于该链路类型传输的报文,这些分片报文在到达接收方的时候,由接收方完成重组。
&&&&&& 各种常见链路类型的MTU值如下图所示:&
报文的分片和重组
&&&&&& 我们先来看一下分片的过程,为了简单起见,我就用《TCPIP详解卷一》第11章《UDP:用户数据报协议》中关于IP分片的案例,应用进程将1473字节应用字段交给UDP处理,UDP加上8字节的UDP报头之后,交给IP层处理,IP层在转发之前,发现该报文长度超出转发接口的MTU,因此需要分片,分为两个IP分组,如下图所示:&
&&&&&&&从上图可以看出原始的IP报文经过分片后,只有第一个分片报文是带有四层信息的,后续报文均不带四层信息,为做直观展示,我找了一个实际环境下抓取的分片报文,如下图所示:&
&&&&&& 这是分片的第一个报文,我们可以看到该报文IP层封装的上层协议为ICMP协议,这是一个ping报文(上层协议信息),我们再来看一下后续分片报文的解码:
&&&&&& 这是分片后续报文,我们能看到封装的是ICMP协议,但是封装的上层协议的具体信息就无法看到了。
&&&&&& IP数据报被分片之后,所有分片报文的IP报头中的源IP、目的IP、IP标识、上层协议等信息都是一样的(TTL不一定是一样的,因为不同的分片报文可能会经过不同的路由路径达到目的端),不同的地方在于分片标志位和分片偏移量,而接收方正是根据接收到的分片报文的源IP、目的IP、 IP标识、分片标志位、分片偏移量来对接收到的分片报文进行重组。
&&&&&& 接收方根据报文的源IP、目的IP、IP标识将接收到的分片报文归为不同原始IP数据报的分片分组;分片标志中的MF位(More Fragment)标识了是否是最后一个分片报文,如果是最后一个分片报文,则根据分片偏移量计算出各个分片报文在原始IP数据报中的位置,重组为分片前的原始IP报文。如果不是最后一个分片报文,则等待最后一个分片报文达到后完成重组。
分片带来的问题
1,&分片带来的性能消耗
&&&&&& 分片和重组会消耗发送方、接收方一定的CPU等资源,如果存在大量的分片报文的话,可能会造成较为严重的资源消耗;
&&&&&& 分片对接收方内存资源的消耗较多,因为接收方要为接收到的每个分片报文分配内存空间,以便于最后一个分片报文到达后完成重组。
2,分片丢包导致的重传问题
&&&&&& 如果某个分片报文在网络传输过程中丢失,那么接收方将无法完成重组,如果应用进程要求重传的话,发送方必须重传所有分片报文而不是仅重传被丢弃的那个分片报文,这种效率低下的重传行为会给端系统和网络资源带来额外的消耗。
3,&分片攻击
&&&&&& 黑客构造的分片报文,但是不向接收方发送最后一个分片报文,导致接收方要为所有的分片报文分配内存空间,可由于最后一个分片报文永远不会达到,接收方的内存得不到及时的释放重组超时,只要这种攻击的分片报文发送的足够多、足够快,很容易占满接收方内存,让接收方无内存资源处理正常的业务,从而达到DOS的攻击效果。
4,&安全隐患
&&&&&& 由于分片只有第一个分片报文具有四层信息而其他分片没有,这给路由器、防火墙等中间设备在做访问控制策略匹配的时候带来了麻烦。
&&&&&& 如果路由器、防火墙等中间设备不对分片报文进行安全策略的匹配检测而直接放行IP分片报文,则有可能给接收方带来安全隐患和威胁,因为黑客可以利用这个特性,绕过路由器、防火墙的安全策略检查对接收方实施攻击;
&&&&&& 如果路由器、防火墙等中间设备对这些分片报文进行重组后在匹配其安全策略,那么又会对这些中间设备的资源带来极大的消耗,特别是在遇到分片攻击的时候,这些中间设备会在第一时间内消耗完其所有内存资源,从而导致全网中断的严重后果。
&&&&&& 基于以上原因,很多应用程序都尽量避免分片的产生,其通过将IP报文的分片标志中的DF位(Don’t Fragment)置一来实现,而这可能给应用带来一些难以预料的麻烦。下一篇我将介绍端系统如何处理这种状况,请大家关注。
1,分片既有可能发生在端系统(发送主机)上,也可能发生在转发报文的路由器、防火墙等中间系统上。
2,分片只发生在转发出接口上。
跟分片有关的案例
&&&&&&&&后续我会在本博客里添加一些跟分片有关的案例,有兴趣的同学可关注。
您对本文的评分:
当前平均分: 8.8(57 次打分)
相关日志:
版权所有:《》 => 《》
本文地址:
除非注明,文章均为 《》 原创,欢迎转载!转载请注明本文地址,谢谢。
你学过的每一样东西,你遭受的每一次苦难,都会在你一生中的某个时候派上用场。 ----佩内洛普?菲茨杰拉德约 9 小时前
每个人作为一个独立的个体,背后都有一个庞大的背景体系----性格、情感、原生家庭、软肋、禁忌、笑点、痛点。生命如此厚重,没有谁的经验可以全盘指导另一个人的人生。我从不相信,那些堕落的人,喝一口励志鸡汤就从此奋发图强,外力没有如此强大的能量,任何一个人的觉知、了悟、皆是源于自己。 21:07
第六次,当它鄙夷一张丑恶的嘴脸时,却不知那正是自己面具中的一幅。第七次,它侧身于圣湖的污泥中,虽不甘心,却又畏首畏尾。----纪伯伦 21:51
我曾七次鄙视自己的灵魂。第一次,当它本可进取时,却故作谦卑。第二次,当它在空虚时,用爱欲来填充。第三次,在困难和容易之间,它选择了容易。第四次,它犯了错,却借由别人也会犯错老宽慰自己。第五次,它自由软弱,却把它认为是生命的坚韧。 21:51
中国一向就少有失败的英雄,少有韧性的反抗,少有敢单身鏖战的武人,少有敢抚哭叛徒的吊客;见胜兆则纷纷聚集,见败兆则纷纷逃亡。 ----鲁迅《鲁迅杂文选》 21:09

参考资料

 

随机推荐