《数据驱动的网络分析》——2.3 NetFlow

简介:

本节书摘来自异步社区《数据驱动的网络分析》一书中的第2章,第2.3节,作者: 【美】Michael Collins 更多章节内容可以访问云栖社区“异步社区”公众号查看。

2.3 NetFlow

NetFlow是Cisco开发的流量汇总标准,最初用于网络服务记账。虽然本意不是为了安全性,但是人们臆测NetFlow对此有益,因为它提供了紧凑的网络通信会话摘要,可以快速访问,并且包含了以相对紧凑的格式保存的最高价值信息。从1999年flow-tools软件包发布以来,NetFlow越来越多地用于安全分析,已经开发出了各种工具,这些工具为NetFlow提供了更多的字段,例如可选择的载荷片段。

NetFlow的核心是流(Flow)的概念,它与TCP会话近似。回忆前面介绍的知识,TCP会话在端点通过比较顺序号组装。在路由器判断处理多个TCP会话中包含的顺序号是不可能的,但是可以用超时值做出合理的估算。流是一组时间上很接近的同地址封包。

2.3.1 NetFlow v5格式和字段
NetFlow v5是最早的通用NetFlow标准,在讨论替代的版本之前,有必要介绍一下NFv5的字段值。NetFlow的字段如表2-2所示,大致分为3类:直接从IP封包中复制的字段、IP封包摘要字段和与路由相关的字段。


<a href=https://yqfile.alicdn.com/d12a2fa22769d6fd24892a453282356f02673484.png" >


<a href=https://yqfile.alicdn.com/bd4ed8eecbeb8b48dbc7c1c933ce4b3e8b7c6d16.png" >

  a这个值是路由器系统启动时间的相对值

NetFlow记录的srcaddr、 dstaddr、 srcport、 dstport、 prot和 tos字段直接从IP封包的对应字段复制。但是,对于IP协议族中的每个协议都会生成流,这就意味着,srcport和dstport字段严格来说是TCP/UDP专用的,不一定总是有意义的。在ICMP协议中,NetFlow在dstport字段中记录类型和代码,其他协议则忽略该值。

packets、dOctets、 first、 last和 tcp_flags字段都是从一个或者多个封包中汇总而得。packets和dOctets是简单的总和,需要注意的是,dOctets值是第3层的字节总数,也就是说包含了IP和协议报头(例如,没有载荷的单封包TCP流将记录为40个字节,而没有载荷的单封包UDP流将记录为28个字节)。first和last值分别是流中第一次和最后一次观察到封包的时间。

tcp_flags的情况特殊。在NetFlow v5中,tcp_flags字段由出现在流中的所有标志进行或运算求得。在形式合法的流中,这意味着SYN、FIN和ACK标志总为高值。

最后一组字段——nexthop、input、output、src_as、dst_as、src_mask和dst_mask都与路由相关。这些值只能在路由器上采集。

“流和内容”:NetFlow v9和IPFIX
Cisco开发了NetFlow的多个版本,最终NetFlow v5成为这个标准的主力实现。但是v5是一个受限和过时的标准,主要针对IPv4,而且是在流被广泛采用之前设计的。Cisco的解决方案是NetFlow v9,这是一个基于模板的流报告标准,路由器管理员可以用它指定包含在流中的字段。

之后,基于模板的NetFlow由IETF标准化为IPFIX1。IPFIX提供了几百种流字段,这些字段在RFC 5102中说明。该标准优先考虑的是网络监控和流量分析,而不是信息安全。为了处理可选的字段,IPFIX有一个“供应商空间”的概念。在开发SiLK工具包的过程中,卡内基梅隆大学的CERT网络态势感知小组在他们的IPFIX空间内开发了一组安全敏感字段,提供一组用于安全分析的有用字段。

2.3.2 NetFlow生成和采集
NetFlow记录由网络硬件设施(例如路由器或者交换机)直接生成,或者使用软件将封包转换为流。每种方法各有不同的优劣之处。

基于设施的生成手段使用的是硬件制造商提供的NetFlow机制。不同制造商使用类似但不同于Cisco的名称,例如Juniper Networks的Jflow和华为的NetStream。因为NetFlow由许多不同制造商提供,具有各种各样的规则,不可能在本书的范围内对必要的配置进行技术性探讨。但是,下面的经验法则值得一提。

NetFlow生成可能在路由器上造成性能问题,尤其是旧的型号。各个公司以不同的方式解决这个问题,包括降低该进程优先级(并抛弃记录)和将NetFlow生成任务卸载到可选(且昂贵)的硬件上。
大部分NetFlow配置默认采用某种形式的采样,以便降低性能负载。对于安全分析,NetFlow应该配置为提供未采样记录。
许多NetFlow配置提供一些汇总和报告格式,你应该采集原始的NetFlow数据,而不是汇总。
基于路由采集的替代方法是使用应用程序,如CERT的Yet Another Flowmeter(YAF)工具、softflowd 或者QoSient Argus 工具提供的大量流监控工具,从pcap数据生成NetFlow。这些应用程序将Pcap当成文件,或者直接从网络接口上采集封包并将其聚合成流。此类传感器缺乏路由器的观察点,但是同时能够提供更多的处理资源,分析封包和生成更加丰富的NetFlow输出,包含深度封包检查等功能。

相关文章
|
1月前
|
机器学习/深度学习 数据采集 人工智能
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
m基于深度学习网络的手势识别系统matlab仿真,包含GUI界面
38 0
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的火焰烟雾检测系统matlab仿真
基于yolov2深度学习网络的火焰烟雾检测系统matlab仿真
|
1月前
|
机器学习/深度学习 算法 计算机视觉
m基于深度学习网络的性别识别系统matlab仿真,带GUI界面
m基于深度学习网络的性别识别系统matlab仿真,带GUI界面
29 2
|
1月前
|
机器学习/深度学习 算法 计算机视觉
基于yolov2深度学习网络的视频手部检测算法matlab仿真
基于yolov2深度学习网络的视频手部检测算法matlab仿真
|
1月前
|
机器学习/深度学习 算法 数据库
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
基于CNN卷积网络的MNIST手写数字识别matlab仿真,CNN编程实现不使用matlab工具箱
|
1月前
|
传感器 算法 Go
基于EKF扩展卡尔曼滤波的传感器网络目标跟踪matlab仿真
基于EKF扩展卡尔曼滤波的传感器网络目标跟踪matlab仿真
|
2月前
|
机器学习/深度学习 算法 数据挖掘
【MATLAB】tvf_emd_ MFE_SVM_LSTM 神经网络时序预测算法
【MATLAB】tvf_emd_ MFE_SVM_LSTM 神经网络时序预测算法
44 2
|
2月前
|
机器学习/深度学习 算法 数据挖掘
【MATLAB】REMD_ MFE_SVM_LSTM 神经网络时序预测算法
【MATLAB】REMD_ MFE_SVM_LSTM 神经网络时序预测算法
43 5
|
1月前
|
机器学习/深度学习 并行计算 算法
m基于深度学习网络的瓜果种类识别系统matlab仿真,带GUI界面
m基于深度学习网络的瓜果种类识别系统matlab仿真,带GUI界面
31 0
|
5天前
|
机器学习/深度学习 算法
【MATLAB】GA_ELM神经网络时序预测算法
【MATLAB】GA_ELM神经网络时序预测算法
278 9

热门文章

最新文章