Netflow提供网络流量的会话级视图,记录下每个TCP/IP事务的信息。也许它不能象tcpdump那样提供网络流量的完整记录,但是当汇集起来是,它更加易于管理和易读。Netflow由Cisco创造。
这篇文章主要参考和这两篇文章,由于自行加入了ng_netflow和修改了部分程序,勉强算做原创吧
Netflow
Netflow提供网络流量的会话级视图,记录下每个TCP/IP事务的信息。也许它不能象tcpdump那样提供网络流量的完整记录,但是当汇集起来是,它更加易于管理和易读。Netflow由Cisco创造。
Netflow结构
一个Netflow系统包括三个主要部分:探测器,采集器,报告系统。探测器是用来监听网络数据的。采集器是用来收集探测器传来的数据的。报告系统是用来从采集器收集到的数据产生易读的报告的。
探测器设置
探测器有很多种,常用的如softflowd,freebsd自带的ng_netflow。
(1)softflowd
a.安装
#/usr/ports/net-mgmt/softflowd/make install clean
b.运行
#softflowd -i 监听网卡 -n 采集器IP:端口
c。监控程序
#softflowctl statistics 查看状态,还有很多参数,自己看man
(2)ng_netflow
a.配置
1./boot/loader.conf
ng_ether_load="YES"
ng_one2many_load="YES"
2.ng配置文件/etc/ng_conf
mkpeer 监听网卡: netflow lower iface0
name 监听网卡:lower netflow
connect 监听网卡: netflow: upper out0
mkpeer netflow: ksocket export inet/dgram/udp
msg netflow:export connect inet/采集器IP:端口
b.运行
#/usr/sbin/ngctl -f /etc/ng_conf
如果需要自动运行,需要在/usr/local/etc/rc.d/目录下加入相应的启动脚本
采集器设置
(1)安装flow-tools
#/usr/ports/net-mgmt/flow-tools/make install clean
(2)运行
#/usr/local/bin/flow-capture -p /var/run/flow-capture.pid -n 287 -N 0 -w /var/log/netflows/ -S 5 本地监听IP/远端IP/监听端口
:D
其中,/var/log/netflows/目录为日志目录,需要手动创建;本地监听IP为0,则在所有IP监听;远端IP为0,接受任意探测器的数据;其它可以不用更改。
一旦启动flow-capture,日志目录下就会出现日志文件。例如tmp-v05.2005-12-12.174000+0800,表示临时的,Netflow版本5的数据,采集开始时间是2005-12-12,17:40:00,距离GMT(标准时间)+8小时。每隔5分钟,flow-capture就会把临时文件移动到永久位置,并开始记录新的临时文件。永久文件就是把tmp替换成ft,文件名的其它部分一样,文件也在同样的日志目录下。
报告系统
(1)Cflow.pm
日志文件是二进制形式,需要特殊的工具阅读。很多工具均利用Cflow.pm。你可以把它当作一个简单的命令行工具。
a.安装
#/usr/ports/net-mgmt/p5-Cflow/make install
注意,这里没有用"clean"这个参数,因为,安装过程可能出错,错误提示包括这样一行
"Note (probably harmless): No library found for -lnsl"
如果是这样你还需要做下面的工作:
# cd /usr/ports/net-mgmt/flow-tools/work/flow-tools-0.68/contrib
# tar -xzvf Cflow-1.051.tar.gz
# cd Cflow-1.051
# perl Makefile.PL
# make
# make install
这样才算安装成功,可以"clean"了
b.使用
#flowdumper -s ft-v05.2005-12-12.174000+0800
后面会出来很多记录信息。结果很容易阅读。但是没有我们关心的汇总之类的图形化的东西,当然你可以在flowdumper的基础上自行书写程序,但是,当然,肯定已经有很多非常棒的程序在那里等着我们了。
(2)flowscan和CUFlow
flowscan是把采集器采集到的数据(/var/log/netflows/ft-*)分类整理,输出rrd格式的文件;CUFlow是flowscan使用的模块(或者插件)。同时CUFlow包含一个程序,方便我们通过WEB访问定制的图形化数据。
a.flowscan设置
1.安装:
#/usr/ports/net-mgmt/flowscan/make install clean
由于一段时间来没有官方的升级版本,所以要从这里
下载升级版本(V1.5至V1.6)才能正确处理日志数据。然后
#cp 01-FlowScan.pm /usr/local/var/db/flows/bin/FlowScan.pm
2.配置:
#cd /usr/local/var/db/flows/bin/;
#cp flowscan.cf.sample flowscan.cf
#vi flowscan.cf /*修改配置文件flowscan.cf*/
------------------------------------------------------------------------------
FlowFileGlob /var/log/netflows/ft-v*[0-9] #需要分析的数据的位置
ReportClasses CUFlow #使用的分析模块
WaitSeconds 300 #分析数据产生间隔,单位是秒,这里是5分钟
Verbose 1 #详细日志,但是可以在系统调试完成后关闭它,设置为0
------------------------------------------------------------------------------
b.配置CUFlow
在这里()下载CUFlow。
#tar xvfz CUFlow-1.5.tgz;cd CUFlow-1.5
#cp CUFlow.pm CUFlow.cf /usr/local/var/db/flows/bin
#vi CUFlow.cf /*修改配置文件CUFlow.cf*/
---------------------------------------------------------------------------------------
Subnet 192.168.2/23 #告诉CUFlow内网的IP段高,意区分外出和进入流量
Network 192.168.1.3,192.168.1.5 webservers #设置要分别处理的流量,当然你
Network 192.168.1.9,192.168.1.1 mailservers #会得到分别的数据显示。注意:
Network 192.168.1.0/25 infrastructure #设置的地址可以交叠
OutputDir /var/log/cuflow #输出结果的位置(RRD)
Scoreboard 10 /usr/local/www/data/scoreboard /usr/local/www/data/scoreboard/topten.html
#产生过去5分钟内TopN用户的网页,这里N是10,就是头10位最大用户
AggregateScore 10 /var/log/cuflow/agg.dat /usr/local/www/data/overall.html
#产生所有5分钟采样的平均值,这里是头10位
Router 192.168.1.1 fred #如果你的网络有比较复杂,多个网段都有自己的探测器,这里就是区分各个
Router 192.168.2.1 barney #不同的探测器的流量
Service 20-21/tcp ftp #你感兴趣的服务,可以很多,可以自定义
Service 22/tcp ssh
Service 23/tcp telnet
Protocol 1 icmp #你感兴趣的协议
Protocol 6 tcp
Protocol 17 udp
#ASNumber 1 Genuity #这一项是Cisco专用的,所以我注释掉了
----------------------------------------------------------------------------------------
#mkdir /var/log/cuflow
#mkdir /usr/local/www/data/scoreboard
c.运行:
# /usr/local/var/db/flows/bin/flowscan
可以看到flowscan开始处理/var/log/netflows/下的文件了,处理完后就会sleep等待300秒了。
d.启动脚本
# cp /usr/local/etc/rc.d/cflowd-flowscan.sh.sample /usr/local/etc/rc.d/cflowd-flowscan.sh
日志在/var/log/flowscan.log
(3)图形结果
a.还记得刚才那个CUFlow的包么,里面有一个叫做CUGrapher.pl的文件,把它复制到/usr/local/www/cgi-bin/下。
b.修改
#vi /usr/local/www/cgi-bin/CUGrapher.pl
--------------------------------------------------------------------------------
my $rrddir = "/var/log/cuflow"; #要处理的rrd文件的位置
my $organization = "My Network"; #修改成自己公司的名字
--------------------------------------------------------------------------------
c.浏览
#Top10列表
#总汇总列表
#可定制输出
d.如果你配置无误,并且幸运的话,一切都会正常。但是我在这里遇到了问题。有些(除了Network之外的几乎全部)选项无法产生图象。在google了一通未能找到答案后,开始了痛苦的程序debug过程。好在CUGrapher.pl是个perl程序,并不很长,让我找到了问题的所在。需要修改一下CUGrapher.pl这个文件:
# vi CUGrapher.pl
--------------------------------------------------------------------------------
# router name
if( scalar @} || scalar @} || scalar @}
|| exists $total ) {
push @args, 'COMMENT: Router: '.$r;
}
---------------------------------------------------------------------------------
找到上面这部分,全部注释掉。
阅读(3585) | 评论(1) | 转发(0) |