zoukankan      html  css  js  c++  java
  • IP defragment

    snort IP defragment 模型:

    BSD favors an original fragment with an offset that is less than or equal to a subsequent fragment.
    BSD-right favors a subsequent fragment when the original fragment has an offset that is less than or equal to the subsequent one.
    Linux favors an original fragment with an offset that is less than a subsequent fragment.
    First favors the original fragment with a given offset.
    Last favors the subsequent fragment with a given offset.
                                                              
     
    可以看到:
     
    前三个 BSD, BSD right, Linux 都是按 offset 排序后重组。
    BSD 与  Linux 类似,都是将当前包用完,再找 offset 最小的包补上;差别仅在于 offset 相同时,BSD取旧,Linux取新。而 BSD right 则相比 BSD 差别在于,前者在任何重叠区域都使用新包,除了新包是旧包子集且 offset 更大的情况(新包 offset > 旧包 offset 并且 新包 end <= 旧包end 的情况)
     
    First,Last 比较简单,仅仅是时间维度上。
     

    snort frag 模块:

     
    frag2 :
    检测到IP分组的first,last后,则分组遇到一个新包都会遍历整个组以判断分组是否完善。
     
    frag3:
    支持多种IP分组合并策略
    在分组中插入每个包的时候,都会与目的位置的 left,right 判断是否有重叠,如果有重叠,则根据合并策略会调整 current,left,right 包的 offset,size值,如果调整后现有组中有size小于零的包直接从组中删除,如果当前根据合并策略可以丢弃则丢弃。
    组中每插入一个包,都会将包 size (去除重叠后得出来的长度) 累加于 frag_bytes。
    包未设置 more fragemnt,则设置组大小 calculated_size。
     
    如果已发现分组 first,last 且 frag_bytes >= calculated_size(理论上 > 不会发生),则认为分组已经完善。
     
     
    重组时会创建一个新的 Packet。
    链路层 header, pcap header 的时间戳 是取的当前触发 Frag3Rebuild 的包,即此分组中最后捕获到包
    IP header,从当前包中拷贝头,并清除 Fragment 标志及偏移,从组中拷贝 IP Options。
     
     
    snort 2.8.3 的 frag3 还不支持IPv6的,但 2.9.4 的 frag3 支持。
     
     
  • 相关阅读:
    mysql5.7创建用户授权删除用户撤销授权
    什么是分表和分区 MySql数据库分区和分表方法
    linux命令大全之watch命令详解(监测命令运行结果)
    netstat统计的tcp连接数与⁄proc⁄pid⁄fd下socket类型fd数量不一致的分析
    ss is one another utility to investigate sockets(特适合大规模tcp链接)
    /proc/net/sockstat 里的信息是什么意思?
    linux平台下server运维问题分析与定位
    strace命令解析
    MySQL常见错误代码及代码说明
    自动化部署必备技能—定制化RPM包
  • 原文地址:https://www.cnblogs.com/JesseFang/p/3594417.html
Copyright © 2011-2022 走看看