标题：netflow
简介
Netflow提供网络流量的会话级视图，记录下每个TCP/IP事务的信息。也许它不能象tcpdump那样提供网络流量的完整记录，但是当汇集起来时，它更加易于管理和易读。Netflow由Cisco创造。概念一个NetFlow流定义为在一个源IP地址和目的IP地址间传输的单向数据包流，且所有数据包具有共同的传输层源、目的端口号。数据采集针对路由器送出的NetFlow数据，可以利用NetFlow数据采集软件存储到服务器上，以便利用各种NetFlow数据分析工具进行进一步的处理。
Cisco提供了Cisco NetFlow Collector（NFC）采集NetFlow数据，其它许多厂家也提供类似的采集软件。采集的网络流量数据实例211.*.*.57|202.*.*.12|Others|localas|9|6|2392
|80|80|1|40|1
出于安全原因考虑，本文中出现的IP地址均经过处理。
NetFlow数据也可以在路由器上直接查看，以下为从Cisco GSR路由器采集的数据实例，：
gsr #att 2     （登录采集NetFlow数据的GSR 2槽板卡）
LC-Slot2>sh ip cache flow
SrcIf SrcIPaddress DstIf DstIPaddress Pr SrcP DstP Pkts
Gi2/1 219.*.*.229 PO4/2 217.*.*.228 06 09CB 168D 2 
Gi2/1 61.*.*.23 Null 63.*.*.246 11 0426 059A   1 
本文中的NetFlow数据分析均基于NFC采集的网络流量数据，针对路由器直接输出的Neflow数据，也可以采用类似方法分析。数据采集格式说明NFC 可以定制多种NetFlow数据采集格式，下例为NFC2.0采集的一种流量数据实例，本文的分析都基于这种格式。
61.*.*.68|61.*.*.195|64917|Others|9|13|4528|
135|6|4|192|1
数据中各字段的含义如下：
源地址|目的地址|源自治域|目的自治域|流入接口号|流出接口号|源端口|目的端口|协议类型|包数量|字节数|流数量几点说明NetFlow主要由Cisco路由器支持，对于其它厂家的网络产品也有类似的功能，例如Juniper路由器支持sFlow功能。
NetFlow支持情况与路由器类型、板卡类型、IOS版本、IOS授权都有关系，不是在所有情况下都能使用，使用时需考虑自己的软硬件配置情况。
本文的所有分析数据均基于采自Cisco路由器的NetFlow数据
结构
一个Netflow系统包括三个主要部分：探测器，采集器，报告系统。探测器是用来监听网络数据的。采集器是用来收集探测器传来的数据的。报告系统是用来从采集器收集到的数据产生易读的报告的。 
NetFlow是Cisco甛nIOS软件中内嵌的一种功能，用来将网络流量记录到设备的高速缓存中，从而提供非常精准的流量测量。 由于网络通信具有流动性，所以缓存中记录的NetFlow统计数据通常包含转发的IP信息。 输出的NetFlow统计数据可用于多种目的，如网络流量核算、网络付费、网络监控以及商业目的的数据存储。
路由器和交换机输出的NetFlow数据记录由过期的数据流及详细的流量统计数据组成。这些数据流中包含来源和目的相关的信息，以及端到端会话使用的协议和端口。这些信息能帮助IT人员监控和调整网络流量，以及面向网络有效地分配带宽。 NetFlow流量统计数据包括数据流时戳 源IP地址和目的IP地址 源端口号和目的端口号 输入接口号和输出接口号 下一跳IP地址 信息流中的总字节数 信息流中的数据包数量 信息流中的第一个和最后一个数据包时戳 源AS和目的AS，及前置掩码 序号(只有版本5中支持)
版本
Netflow技术最早是于1996年由思科公司的Darren Kerr和Barry Bruins发明的，并于同年5月注册为美国专利，专利号为6,243,667。Netflow技术首先被用于网络设备对数据交换进行加速，并可同步实现对高速转发的IP数据流(Flow)进行测量和统计。经过多年的技术演进，Netflow原来用于数据交换加速的功能已经逐步由网络设备中的专用ASIC芯片实现，而对流经网络设备的IP数据流进行测量和统计的功能也已更加成熟，并成为了当今互联网领域公认的最主要的IP/MPLS流量分析，统计和计费行业标准。Netflow技术能对IP/MPLS网络的通信流量进行详细的行为模式分析和计量，并提供网络运行的详细统计数据。
在Netflow技术的演进过程中，思科公司一共开发出了5个主要的实用版本，即：
Netflow V1，为Netflow技术的第一个实用版本。支持IOS 11.1，11.2，11.3和12.0，但在如今的实际网络环境中已经不建议使用。
Netflow V5，增加了对数据流BGP AS信息的支持，是当前主要的实际应用版本。支持IOS 11.1CA和12.0及其后续IOS版本。
Netflow V7，思科Catalyst交换机设备支持的一个Netflow版本，需要利用交换机的MLS或CEF处理引擎。
Netflow V8，增加了网络设备对Netflow统计数据进行自动汇聚的功能（共支持11种数据汇聚模式），可以大大降低对数据输出的带宽需求。支持IOS12.0(3)T，12.0(3)S，12.1及其后续IOS版本。
Netflow V9，一种全新的灵活和可扩展的Netflow数据输出格式，采用了基于模板（Template）的统计数据输出。方便添加需要输出的数据域和支持多种Netflow新功能，如Multicase Netflow，MPLS Aware Netflow，BGP Next Hop V9，Netflow for IPv6等。支持IOS12.0(24)S和12.3T及其后续IOS版本。在2003年思科公司的Netflow V9还被IETF组织从5个候选方案中确定为IPFIX（IP Flow Information Export）标准。
互联网异常流量NetFlow分析概述
要对互联网异常流量进行分析，首先要深入了解其产生原理及特征，以下将重点从NetFlow数据角度，对异常流量的种类、流向、产生后果、数据包类型、地址、端口等多个方面进行分析。
异常流量的种类
目前，对互联网造成重大影响的异常流量主要有以下几种：拒绝服务攻击（DoS）DoS攻击使用非正常的数据流量攻击网络设备或其接入的服务器，致使网络设备或服务器的性能下降，或占用网络带宽，影响其它相关用户流量的正常通信，最终可能导致网络服务的不可用。
例如DoS可以利用TCP协议的缺陷，通过SYN打开半开的TCP连接，占用系统资源，使合法用户被排斥而不能建立正常的TCP连接。
以下为一个典型的DoS SYN攻击的NetFlow数据实例，该案例中多个伪造的源IP同时向一个目的IP发起TCP SYN攻击。 
117.*.68.45|211.*.*.49|Others|64851|3|2|10000|
10000|6|1|40|1
104.*.93.81|211.*.*.49|Others|64851|3|2|5557|
5928|6|1|40|1
58.*.255.108|211.*.*.49|Others|64851|3|2|3330|
10000|6|1|40|1
由于Internet协议本身的缺陷，IP包中的源地址是可以伪造的，现在的DoS工具很多可以伪装源地址，这也是不易追踪到攻击源主机的主要原因。分布式拒绝服务攻击（DDoS）DDoS把DoS又发展了一步，将这种攻击行为自动化，分布式拒绝服务攻击可以协调多台计算机上的进程发起攻击，在这种情况下，就会有一股拒绝服务洪流冲击网络，可能使被攻击目标因过载而崩溃。
以下为一个典型的DDoS攻击的NetFlow数据实例，该案例中多个IP同时向一个IP发起UDP攻击。 
61.*.*.67|69.*.*.100|64821|as9|2|9|49064|5230|
17|6571|9856500|1
211.*.*.163|69.*.*.100|64751|as9|3|9|18423|
22731|17|906|1359000|1
61.*.*.145|69.*.*.100|64731|Others|2|0|52452|
22157|17|3|4500|1网络蠕虫病毒流量网络蠕虫病毒的传播也会对网络产生影响。近年来，Red Code、SQL Slammer、冲击波、振荡波等病毒的相继爆发，不但对用户主机造成影响，而且对网络的正常运行也构成了的危害，因为这些病毒具有扫描网络，主动传播病毒的能力，会大量占用网络带宽或网络设备系统资源。
以下为最近出现的振荡波病毒NetFlow数据实例，该案例中一个IP同时向随机生成的多个IP发起445端口的TCP连接请求，其效果相当于对网络发起DoS攻击。
61.*.*.*|168.*.*.200|Others|Others|3|0|1186|
445|6|1|48|1
61.*.*.*|32.*.*.207|Others|Others|3|0|10000|
445|6|1|48|1
61.*.*.*|24.*.*.23|Others|Others|3|0|10000|
445|6|1|48|1其它异常流量我们把其它能够影响网络正常运行的流量都归为异常流量的范畴，例如一些网络扫描工具产生的大量TCP连接请求，很容易使一个性能不高的网络设备瘫痪。
以下为一个IP对167.*.210.网段，针对UDP 137端口扫描的NetFlow数据实例：
211.*.*.54|167.*.210.95|65211|as3|2|10|1028|
137|17|1|78|1
211.*.*.54|167.*.210.100|65211|as3|2|10|
1028|137|17|1|78|1
211.*.*.54|167.*.210.103|65211|as3|2|10|
1028|137|17|1|78|1
异常流量流向分析
从异常流量流向来看，常见的异常流量可分为三种情况：
网外对本网内的攻击
本网内对网外的攻击
本网内对本网内的攻击
针对不同的异常流量流向，需要采用不同的防护及处理策略，所以判断异常流量流向是进一步防护的前提，以下为这三种情况的NetFlow数据实例： 
124.*.148.110|211.*.*.49|Others|64851|3|2|
10000|10000|6|1|40|1
211.*.*.54|167.*.210.252|65211|as3|2|10|
1028|137|17|1|78|1
211.*.*.187|211.*.*.69|Others|localas|71|6|1721|
445|6|3|144|1
其中211开头的地址为本网地址。
异常流量产生的后果
异常流量对网络的影响主要体现在两个方面：
占用带宽资源使网络拥塞，造成网络丢包、时延增大，严重时可导致网络不可用；
占用网络设备系统资源（CPU、内存等），使网络不能提供正常的服务。
异常流量的数据包类型
常见的异常流量数据包形式有以下几种：
?TCP SYN flood（40字节） 
11.*.64.3|2.*.38.180|64821|as10|5|4|1013|18|6|
1|40|1
从NetFlow的采集数据可以看出，此异常流量的典型特征是数据包协议类型为6（TCP），数据流大小为40字节（通常为TCP的SYN连接请求）。
?ICMP flood
2.*.33.1|1.*.97.22|as12|64811|5|2|0|0|1|146173|
218359704|1
从NetFlow的采集数据可以看出，此异常流量的典型特征是数据包协议类型为1（ICMP），单个数据流字节数达218M字节。
?UDP flood
*.*.206.73|160.*.71.129|64621|Others|6|34|
1812|1812|17|224|336000|1
*.*.17.196|25.*.156.119|64621|Others|6|34|
1029|137|17|1|78|1
从NetFlow的采集数据可以看出，此异常流量的典型特征是数据包协议类型为17（UDP），数据流有大有小。
其它类型
其它类型的异常流量也会在网络中经常见到，从理论上来讲，任何正常的数据包形式如果被大量滥用，都会产生异常流量，如以下的DNS正常访问请求数据包（协议类型53）如果大量发生，就会产生对DNS服务器的DoS攻击。
211.*.*.146|211.*.*.129|Others|Others|71|8|
3227|53|53|1|59|1
5. 异常流量的源、目的地址
目的地址为固定的真地址，这种情况下目的地址通常是被异常流量攻击的对象，如下例数据：
211.*.*.153|*.10.72.226|as2|as8|5|4|3844|10000|
17|2|3000|2 
211.*.*.153|*.10.72.226|
as2|as8|5|4|3845|10000|17|1|1500|1
211.*.*.153|*.10.72.226|as2|as8|5|4|3846|10000|
17|1|1500|1
目的地址随机生成，如下例数据：
211.*.*.187|169.*.190.17|Others|localas|71|6|
1663|445|6|3|144|1
211.*.*.187|103.*.205.148|Others|localas|71|6|
3647|445|6|3|144|1
211.*.*.187|138.*.80.79|Others|localas|71|6|
1570|445|6|3|144|1
目的地址有规律变化，如下例数据，目的地址在顺序增加：
211.*.*.219|192.*.254.18|Others|Others|15|9|
10000|6789|17|1|36|1
211.*.*.219|192.*.254.19|Others|Others|15|9|
10000|6789|17|2|72|2
211.*.*.219|192.*.254.20|Others|Others|15|9|
10000|6789|17|3|108|3
源地址为真实IP地址，数据同上例：
源地址为伪造地址，这种情况源地址通常随机生成，如下例数据，源地址都是伪造的网络地址：
63.245.0.0|209.*.*.38|as5|as4|3|7|1983|23|23|
1|40|1
12.51.0.0 |209.*.*.38 |as6|as4|3|7|1159|2046|6|
1|40|1
212.62.0.0|209.*.*.38| as7|as4|3|7|1140|3575|6|
1|40|1
6. 异常流量的源、目的端口分析
异常流量的源端口通常会随机生成，如下例数据：
211.*.*.187|169.172.190.17|Others|localas|71|
6|1663|445|6|3|144|1
211.*.*.187|103.210.205.148|Others|localas|71|
6|3647|445|6|3|144|1
211.*.*.187|138.241.80.79|Others|localas|71|6|
1570|445|6|3|144|1
多数异常流量的目的端口固定在一个或几个端口，我们可以利用这一点，对异常流量进行过滤或限制，如下例数据，目的端口为UDP 6789：
211.*.*.219|192.*.254.18|Others|Others|15|9|
10000|6789|17|1|36|1
211.*.*.219|192.*.254.19|Others|Others|15|9|
10000|6789|17|2|72|2
211.*.*.219|192.*.254.20|Others|Others|15|9|
10000|6789|17|3|108|3
利用NetFlow工具处理防范网络异常流量
从某种程度上来讲，互联网异常流量永远不会消失而且从技术上目前没有根本的解决办法，但对网管人员来说，可以利用许多技术手段分析异常流量，减小异常流量发生时带来的影响和损失，以下是处理网络异常流量时可以采用的一些方法及工具：判断异常流量流向因为目前多数网络设备只提供物理端口入流量的NetFlow数据，所以采集异常流量NetFlow数据之前，首先要判断异常流量的流向，进而选择合适的物理端口去采集数据。
流量监控管理软件是判断异常流量流向的有效工具，通过流量大小变化的监控，可以帮助我们发现异常流量，特别是大流量异常流量的流向，从而进一步查找异常流量的源、目的地址。
目前最常用的流量监控工具是免费软件MRTG，下图为利用MRTG监测到的网络异常流量实例，可以看出被监测设备端口在当天4：00至9：30之间产生了几十Mbps的异常流量，造成了该端口的拥塞（峰值流量被拉平）。
如果能够将流量监测部署到全网，这样在类似异常流量发生时，就能迅速找到异常流量的源或目标接入设备端口，便于快速定位异常流量流向。
有些异常流量发生时并不体现为大流量的产生，这种情况下，我们也可以综合异常流量发生时的其它现象判断其流向，如设备端口的包转发速率、网络时延、丢包率、网络设备的CPU利用率变化等因素。采集分析NetFlow数据判断异常流量的流向后，就可以选择合适的网络设备端口，实施Neflow配置，采集该端口入流量的NetFlow数据。
以下是在Cisco GSR路由器GigabitEthernet10/0端口上打开NetFlow的配置实例： 
ip flow-export source Loopback0
ip flow-export destination *.*.*.61 9995
ip flow-sampling-mode packet-interval 100
interface GigabitEthernet10/0
ip route-cache flow sampled
通过该配置把流入到GigabitEthernet10/0的NetFlow数据送到NetFlow采集器*.*.*.61，该实例中采用sampled模式，采样间隔为100:1。处理异常流量的方法（1）切断连接
在能够确定异常流量源地址且该源地址设备可控的情况下，切断异常流量源设备的物理连接是最直接的解决办法。
（2）过滤
采用ACL（Access Control List）过滤能够灵活实现针对源目的IP地址、协议类型、端口号等各种形式的过滤，但同时也存在消耗网络设备系统资源的副作用，下例为利用ACL过滤UDP 1434端口的实例： 
access-list 101 deny   udp any any eq 1434
access-list 101 permit ip any any
此过滤针对蠕虫王病毒（SQL Slammer），但同时也过滤了针对SQL Server的正常访问，如果要保证对SQL Server的正常访问，还可以根据病毒流数据包的大小特征实施更细化的过滤策略（本文略）。
（3）静态空路由过滤
能确定异常流量目标地址的情况下，可以用静态路由把异常流量的目标地址指向空（Null），这种过滤几乎不消耗路由器系统资源，但同时也过滤了对目标地址的正常访问，配置实例如下：
ip route 205.*.*.2 255.255.255.255 Null 0
对于多路由器的网络，还需增加相关动态路由配置，保证过滤在全网生效。
（4）异常流量限定
利用路由器CAR功能，可以将异常流量限定在一定的范围，这种过滤也存在消耗路由器系统资源的副作用，以下为利用CAR限制UDP 1434端口流量的配置实例：
Router# (config) access-list 150 deny udp any any eq 1434 
Router# (config) access-list 150 permit ip any any 
Router# (config) interface fastEthernet 0/0 
Router# (config-if) rate-limit input access-group rate-limit 150 8000 1500 20000 
conform-action drop exceed-action drop 
此配置限定UDP 1434端口的流量为8Kbps。
常见蠕虫病毒的NetFlow分析案例
利用上诉方法可以分析目前互联网中存在的大多数异常流量，特别是对于近年来在互联网中造成较大影响的多数蠕虫病毒，其分析效果非常明显，以下为几种蠕虫病毒的NetFlow分析实例：红色代码 (Code Red Worm)2001年7月起发作，至今仍在网络流量中经常出现。
211.*.*.237|192.*.148.107|65111|as1|6|72|
3684|80|80|3|144|1 
211.*.*.237|192.*.141.167|65111|as1|6|36|
4245|80|80|3|144|1
211.*.*.237|160.*.84.142|65111|as1|6|72|
4030|80|80|3|144|1
NetFlow流数据典型特征：目的端口80, 协议类型80，包数量3，字节数144。硬盘杀手（worm.opasoft，W32.Opaserv.Worm）
2002年9月30日起发作，曾对许多网络设备性能造成影响，2003年后逐渐减少。
61.*.*.196|25.|*.156.106|64621|Others|6|36|
1029|137|17|1|78|1
61.*.*.196|25.*.156.107|64621|Others|6|36|
1029|137|17|1|78|1
61.*.*.196|25.*.156.108|64621|Others|6|36|
1029|137|17|1|78|1
NetFlow流数据典型特征：目的端口137，协议类型UDP，字节数78。2003蠕虫王(Worm.NetKiller2003，WORM_SQLP1434，W32.Slammer，W32.SQLExp.Worm) 
2003年1月25日起爆发，造成全球互联网几近瘫痪，至今仍是互联网中最常见的异常流量之一。
61.*.*.124|28.*.17.190|65111|as1|6|34|4444|
1434|17|1|404|1
61.*.*.124|28.*.154.90|65111|as1|6|70|4444|
1434|17|1|404|1
61.*.*.124|28.*.221.90|65111|as1|6|36|4444|
1434|17|1|404|1
NetFlow流数据典型特征：目的端口1434，协议类型UDP，字节数404冲击波(WORM.BLASTER，W32.Blaster.Worm)
2003年8月12日起爆发，由其引发了危害更大的冲击波杀手病毒。
211.*.*.184|99.*.179.27|Others|Others|161|0|
1523|135|6|1|48|1
211.*.*.184|99.*.179.28|Others|Others|161|0|
1525|135|6|1|48|1
211.*.*.184|99.*.179.29|Others|Others|161|0|
1527|135|6|1|48|1
典型特征：目的端口135，协议类型TCP，字节数48冲击波杀手（Worm.KillMsBlast，W32.Nachi.worm，W32.Welchia.Worm）
2003年8月18日起发现，其产生的ICMP流量对全球互联网造成了很大影响，2004年后病毒流量明显减少。
211.*.*.91|211.*.*.77|Others|Others|4|0|0|
2048|1|1|92|1
211.*.*.91|211.*.*.78|Others|Others|4|0|0|
2048|1|1|92|1
211.*.*.91|211.*.*.79|Others|Others|4|0|0|
2048|1|1|92|1
NetFlow流数据典型特征：目的端口2048，协议类型ICMP，字节数92振荡波(Worm.Sasser，W32.Sasser)
2004年5月爆发。
61.*.*.*|32.*.70.207|Others|Others|3|0|10000|
445|6|1|48|1
61.*.*.*|24.*.217.23|Others|Others|3|0|10000|
445|6|1|48|1
61.*.*.*|221.*.65.84|Others|Others|3|0|10000|
445|6|1|48|1
NetFlow流数据典型特征：目的端口445，协议类型TCP，字节数48
从以上案例可以看出，蠕虫爆发时，应用Neflow分析方法，可以根据病毒流量的NetFlow特征快速定位感染病毒的IP地址，并参考NetFlow数据流的其它特征在网络设备上采取相应的限制、过滤措施，从而达到抑制病毒流量传播的目的。
总结
处理分析网络异常流量存在许多其它方法，如我们可以利用IDS、协议分析仪、网络设备的Log、Debug、ip accounting等功能查找异常流量来源，但这些方法的应用因各种原因受到限制，如效率低、对网络设备的性能影响、数据不易采集等因素。
利用NetFlow分析网络异常流量也存在一些限制条件，如需要网络设备对NetFlow的支持，需要分析NetFlow数据的工具软件，需要网络管理员准确区分正常流量数据和异常流量数据等。
但相比其它方法，利用NetFlow分析网络异常流量因其方便、快捷、高效的特点，为越来越多的网络管理员所接受，成为互联网安全管理的重要手段，特别是在较大网络的管理中，更能体现出其独特优势。