天天看点

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

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

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封包摘要字段和与路由相关的字段。

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

https://yqfile.alicdn.com/d12a2fa22769d6fd24892a453282356f02673484.png" >

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

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输出,包含深度封包检查等功能。

继续阅读