nfdump是一款开源的netflow收集、存储、过滤、统计分析软件。目前支持 netflow v5、v7和v9版本.
软件地址:http://nfdump.sourceforge.net/
一 . nfdump安装
首先下载软件nfdump-1.6.4.tar.gz。
http://sourceforge.net/projects/nfdump/
目前最新版本为1.6.4.
# tar zxvf nfdump-1.6.4.tar.gz
# cd nfdump-1.6.4
# ./configure --prefix=/usr/local/nfdump
# make
# make install
将nfdump可执行文件加入到PATH目录中。
export PATH=/usr/local/netflow/bin:$PATH
二. nfdump使用
nfdump包含了五个命令,nfanon, nfcapd, nfdump, nfexpire和nfreplay,其中比较常用的只有nfcapd和nfdump。
下面就分别介绍这五个命令。
1.nfanon
nfanons使用CryptoPan模块实现netflow记录中所有IP地址(源 IP、目的IP、下一条、路由器IP)的匿名。
用法:
-r inputFile :指定单个输入文件, 如 -r nfcapd.201109020900
-R expr :指定一个目录或一组输入文件,如 -R /data/flows/nfcapd.201109020900:nfcapd.201109201000
-M expr :指定多个目录下的输入文件,如 -M /data/flows/router1:router2:router3
-w outputfile :指定输出文件
-K key :指定key, key用来初始化Rijndael加密算法,是一个32个字符的字符串,或64个以0x十六进制数值串。
2.nfexpire
nfexpire: 用于历史netflow数据文件到期的管理。文件的到期管理可以使用nfcapd的自动到期模式或nfexpire实现。
用法:
-l directory :列出directory datadir的当前数据统计;
-r directory :重扫描指定目录以更新统计文件;
-e datadir :指定到期文件目录
-s maxsize :设置目录的大小限制,接收如下格式参数, 100M, 100MB, 1.5G, 1.5T, 1.5TB等,0取消最大尺寸限制。
-t maxlife_time :设置目录下文件的最大存活期。接收如下格式参数,31d, 240H, 4w,0取消最大时间限制。
-u datadir :更新尺寸和生命期限制。
-w watermark :设置过期数据的百分比%, 默认为95%。
-h :帮助
-Y :将结果以可解析方式输出。
3.nfreplay
nfreplay :netflow的重放程序。从nfcapd存储的文件读取数据,将其发送到其他主机或广播组。过滤器语法与 nfdump相同。
用法:
-H remotehost :远程主机
-j mcastgroup :广播组
-p port :远端端口,默认为9995
-4 :强制将流发送到IPv4地址;
-6:强制将流发送到IPv6地址;
-v num :发送netflow的版本号(5, 9),默认为版本5.
-d usec :每条记录延迟usec毫秒,默认为0
-b buffersize: 设置发送缓冲区大小
-r inputfile :输入文件
-t timewin : 记录的时间窗,YYYY/MM/dd.hh:mm:ss-YYYY/MM/dd.hh:mm:ss
-c num :只发送前num条记录
-V :输出nfreplay版本
-h :帮助
4. nfcapd
nfcapd :netflow接收守护进程。从网络上读取netflow数据,并存出到文件。每个n分钟(通常是5分钟)自动生成文件。
用法:
-p portnum :指定接收端口号, 默认为9995
-b bindhost :绑定监听主机地址。
-4 :强制只监听IPv4地址;
-6 :强制只监听IPv6地址;
-j MulticastGroup :加入广播组监听;
-R host[/port] :开启数据包中继,将收到的所有包发送到另一台设备;
-I IdentString :指定标识字符串,用于统计记录中区分源。默认为none
-l base_directory :指定输出文件存储根目录;
-n <Ident, IP, base_directory> :通过源IP地址指定Ident
-f <pcap_file> :读取pcap_file
-s <rate> :指定netflow记录的采样比。
-S <num> :指定文件存储目录结构。
-T <extension list> :指定存放在netflow文件中的扩展信息,;0 default 没有层级结构
1 %Y/%m/%d year/month/day
2 %Y/%m/%d/%H year/month/day/hour
3 %Y/%W/%u year/week_of_year/day_of_week
4 %Y/%W/%u/%H year/week_of_year/day_of_week/hour
5 %Y/%j year/day-of-year
6 %Y/%j/%H year/day-of-year/hour
7 %Y-%m-%d year-month-day
8 %Y-%m-%d/%H year-month-day/hour
-t interval :轮转文件的间隔,秒为单位,默认为300秒
-w 实现文件输出时间对齐,如5分钟为输出间隔时,将时间对齐为0, 5, 10... 默认不对齐
-x cmd 每个间隔的最后,当新文件可用时运行cmd命令
-X 收集并嵌入扩展统计信息。
-e :自动文件过期;
-P pidfile :指定pid文件名
-D :指定为守护进程模式
-u userid
-g groupid
-B bufflen:指定socket缓冲区
-E 将netflow记录以nfdump原始格式输出到标准输出。
-z 压缩
-V :输出nfcapd版本
-h :输出帮助信息
实例:
nfcapd -z -w -D -T all -p 9995 -l /data/flows -S 0 -P nfcapd.pid
5. nfdump
nfdump是nfdump软件包中最重要也是最复杂的程序。实现了netflow记录的过滤、聚合、top统计、排序等功能。
用法:
1>输入
-r inputfile :单个文件
-R expr : 同一目录下多个文件
-M expr :多个目录下多个文件
2>输出
-w outputfile :指定将二进制netflow记录输出到outputfile以便nfdump进一步处理。如果不指定,则以文本方式输出到标准输出。
-I :输出流统计信息;
-o format :指定输出格式
raw :将每条流记录多行输出;
line :将每条流记录单行输出,默认格式;
long :将每条流单行输出,有更加详细信息;
biline :和line相同,用于双向流
bilong :和long相同,用于双向流
extended :扩展模式
csv :csv逗号分割文本
pipe :字段通过|分割
fmt:format :自定义输出格式
-q :禁用首行和尾部统计信息;
-N :输出中输出普通数值,即不用M, G等表示
-v file :验证文件版本等信息;
-V :输出nfdump版本;
-h :帮助
3>过滤
-f filterfile :指定过滤配置文件
此外过滤可以直接在命令行指定。
过滤器语法如下:
expr and expr, expr or expr, not expr
include
@include <file>
protocol version
inet or ipv4 : IPv4
inet6 or ipv6 :IPv6
protocol
proto <protocol> : <protocol>可以是字符串tcp, udp等,也可以是6, 17等;
IP address
[SourceDestination] ip <ipaddr>
[SourceDestination] host <ipaddr>
[SourceDestination] ip in [, <iplist> ]
[SourceDestination] host in [ <iplist> ]
<iplist>用空格分割
4>聚合
-A aggregation
aggregation是逗号分割的tags,tags包含如下:
proto IP协议
srcip
dstip
srcip4/net
srcip6/net
dstip4/net
dstip6/net
srcnet
dstnet
srcport
dstport
srcmask
dstmask
srcvlan
dstvlan
srcas
dstas
inif
outif
next
bgpnext
insrcmac
outdstmac
indstmac
outsrcmac
tos
srctos
dsttos
mpls1 --- mpls10
5>统计
-s statistic[:p][/orderby] 提供Top统计
6>其它
实例:
nfdump -r nfcapd.201109020900 'net 192.168.1.0/24 and proto tcp' -o line