如何维护网络安全:利用IP包头分析技术防范黑客攻击

数据来源

IP协议的主要特点:

  1. IP协议是一种无连接不可靠分组传送服务的协议
  2. IP协议是点-点线路的网络层通信协议。IP协议是针对原主机-路由器、路由器-路由器、路由器-目标主机之间的数据传输的点-点线路的网络层通信协议
  3. IP协议屏蔽了网络在数据链路层、物理层协议与实现技术上的差异。通过IP协议,网络层向传输层提供的是统一的IP分组,传输层不需要考虑互联网在数据链路层、物理层协议与实现技术上的差异,IP协议使得异构网络的互联变得容易了

IP包头长度

        ip包头的长度在20-60个字节间,一般是20字节(固定部分),可选项最大是40个字节(比较少用)。

第一行

        版本

                就是指出IP数据包是什么版本;常见的版本就是0100 IPV4和 0110 IPV6(常见的是IPV4)

        首部长度

                IP数据报首部中有一个首部长度字段,4 位长,可表示的最大十进制数字是15。因此首部长度的最大值是15个4字节长的字,即60字节。

                首部长度是指IP首部占32bit字的数目,包括选项(如果有)。首部长度本身为4bit字段,能表示的二进制最大数为1111,换算成十进制为15,即首部最长为15个32bit长度=480bit,即最大长度60字节。

        优先级与服务类型(3比特优先级,4比特服务类型,1比特保留)

                该字段定义上层协议对处理当前数据报所期望的服务质量,并对数据报按照重要性级别进行分配。前3位成为优先位,后面4位成为服务类型,最后1位没有定义。这些8位字段用于分配优先级、延迟、吞吐量以及可靠性。

        总长度:

                网络层IP报文的总长度超过1500就会进行分片(3、4、5层的总长度,data + TCP/UDP头+IP包头)

第二行

前置知识IP分片

        IP分片产生原因 (来源

                我们假设要传输一个UDP数据包,以太网(一个帧)的MTU为1500字节,一般IP首部为20字节,UDP首部为8字节,数据的净荷(payload)部分预留是1500-20-8=1472字节。如果数据部分大于1472字节,就会出现分片现象

        IP分片原理(来源

                IP分片发生在IP层,不仅源端主机会进行分片,中间的路由器也有可能分片,因为不同的网络的MTU是不一样的,如果传输路径上的某个网络的MTU比源端网络的MTU要小,路由器就可能对IP数据报再次进行分片。而分片数据的重组只会发生在目的端的IP层

图1

                在IP首部有4个字节是用于分片的,如图1所示。前16位是IP数据报的标识,同一个数据报的各个分片的标识是一样的,目的端会根据这个标识来判断IP分片是否属于同一个IP数据报中间3位是标志位,其中有1位用来表示是否有更多的分片,如果是最后一个分片,该标志位为0,否则为1。后面13位(段的偏移量)表示分片在原始数据的偏移,这里的原始数据是IP层收到的传输的TCP或UDP数据(TCP/UDP头 + 应用层数据(data),不包含IP首部,如下图:。

                需要注意的,在分片的数据中,传输层的首部(TCP/UDP)只会出现在第一个分片中,如图1所示。因为传输层的数据格式对IP层是透明的,传输层的首部只有在传输层才会有它的作用,IP层不知道也不需要保证在每个分片中都有传输层首部。所以,在网络上传输的数据包是有可能没有传输层首部的。

        标识符:

                同一IP报文的表示符是一致的,用来分类分片属于那个数据包

        段的偏移量:

        分片在数据包中的相对位置(IP分片的先后顺序),值为0就是第一个分片,1472的是第二个分片,2854就是第三个分片以此类推

        标志(3bit):

  • 第1个比特永远为0,代表不能启用
  • 第2个比特值有两种:0或1  (0表示该IP包进行了分片,1 代表未分片,只有一个帧)
  • 第3个比特是告诉pc该分片是否是最后一个值有两种:0或1  (0表示该分片值最后一个,1 代表在该分片后面还有分片)

        攻击方式(泪滴攻击)

                使用攻击工具伪造三个帧,标志为分别为:001、001、000,段偏量分别为:0  x(x<1472) x(x<=1472),会使计算机一直尝试重组数据,一直失败会导致PUC被占满。

        防御:

                最有效的方法就是在服务器前端加防火墙,过滤不安全的包

第三行 

        TTL(time to live)生存时间

                TTL值对我们在进行网络故障分析时能起到很关键的作用,该字段表示一个IP数据报能够经过的最大的路由器跳数,TTL字段是由IP数据报发送端初始设置的。

                每个处理该数据报的路由器都需要将其 TTL值减1,即当一个IP数据报每经过一个路由时,其TTL值会减1,当路由器收到一个TTL值为0的数据报时,路由器会将其丢弃。因此,TTL字段的目的是就是为了防止1个IP数据报网络中循环的流动

                例如:当路由器的路由表配置错误或网络设备接线错误是,则可能会造成网络环路,在这种情况下,路由器可能根据其路由表将该数据报一直循环转发下去,导致IP数据报一直在网络中发送。

                因此,就需要一种机制来给这些循环传递的数据报上加上一个生存上限,以保证数据报不会无休止的发送,TTL字段正是用于实现这种机制的一种手段。

        TTL值进行网络故障分析:

  • 当我们在分析数据报的过程中如果发现TTL=1的IP数据包或者在科来网络分析系统的诊断下看到IP数据报生存周期太短的事件(组播数据报除外)时,我们就应该怀疑网络中是否存在环路了。
  • 对于网络环路的分析,我们还应该结合报头中的标识字段来查找,如果发现数据报的标识符都相同并且TTL值一直在递减,那么说明网络中一定存在环路的故障,这时,就应该检查网络设备是否出现有接错线或者路由配置出现问题。

        利用TTL字段值判断操作系统:

                一般在TTL字段值>100是微软的Windows主机,TTL字段值<100的linux主机

操作系统默认操作系统的TTL
微软 WINDOWS NT/2000128
微软 WINDOWS 95/9832
UNIX255
LINUX64
WIN764
Compaq Tru64 5.064

                并不是100%准确,取相近值,TTL是可以改的,并且每经过一台路由器都会减一,只能用作参考

        跟踪本机发送请求到目标IP,所经过的网关(路由器)

                命令:tracert  目标IP/域名

                

        协议号

                表示该数据报文所携带的数据所使用的协议类型,占 8 位。该字段可以方便目的主机的 IP 层知道按照什么协议来处理数据部分。不同的协议有专门不同的协议号。TCP 的协议号为 6UDP 的协议号为 17ICMP 的协议号为 1

首部检验和(checksum)
        用于校验数据报的首部(ip包头20字节这块),占 16 位。数据报每经过一个路由器,首部的字段都可能发生变化(如TTL),所以需要重新校验。而数据部分不发生变化,所以不用重新生成校验值。

第四行 

        源地址

                表示数据报的源 IP 地址,占 32 位。

第五行

        目的地址

                表示数据报的目的 IP 地址,占 32 位

第六行

        可选字段

                该字段用于一些可选的报头设置,主要用于测试、调试和安全的目的。这些选项包括严格源路由(数据报必须经过指定的路由)、网际时间戳(经过每个路由器时的时间戳记录)和安全限制。

第七行及以后

        数据部分

                表示传输层的数据,如保存 TCP、UDP、ICMP 或 IGMP 的数据。数据部分的长度不固定。

  • 3
    点赞
  • 13
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狗蛋的博客之旅

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值