Quantcast
Channel: polygun2000的博客
Viewing all articles
Browse latest Browse all 55

使用nfsen+sflow分析网络流量

$
0
0
    netflow和sflow可以帮助我们分析网络中的流量构成,抓取实施带宽使用情况,帮我们找出"hog"。作为collector的软件一般都是收费的,例如solarwinds NTA,sflowTrend-Pro,ntopng商业版等。不过也有开源的解决方案,例如ntopng社区版和nfsen。
    下边来说说nfsen,首先流水账一下安装过程。

一、安装nfsen

1.1 安装nginx+php-fpm,细节不说,需要的可以看我之前的blog文章,网上其他人的好文章也大把。

1.2 安装nfdump,nfsen其实是nfdump的前端展示,真正收集数据的是nfdump。
]# yum install nfdump

1.3 安装nfsen
]# tar -zxvf nfsen-1.3.7.tar.gz
]# cd nfsen-1.3.7
]# cp etc/nfsen-dist.conf etc/nfsen.conf
]# vi /etc/nfsen.conf
===> $BASEDIR= "/data/nfsen";
===> $HTMLDIR = "/var/www/nfsen";
===> $WWWUSER  = "nginx";
===> $WWWGROUP = "nginx";
===> $PREFIX  = '/usr/bin';
===> %sources = (
===> 'H3C' => { 'port' => '8603', 'col' => '#0000ff', 'type' => 'sflow' },
===> );
]# mkdir -p /data/nfsen
]# useradd netflow -g nginx
]# yum install perl perl-Sys-Syslog rrdtool-perl perl-Data-Dumper perl-MailTools perl-Socket6
]# vi libexec/NfProfile.pm
===> no strict 'refs';
]# ./install.pl etc/nfsen.conf
]# cd /data/nfsen/bin
]# ./nfsen start

1.4 访问http://your_ip_address/nfsen/nfsen.php

二、nfsen界面介绍  [ 这部分转自台湾网友的文章,原文见参考文档9 ]

进入nfsen,在首页Home里,会显示flow/packet/流量三种类型的流量缩图,并分别以日/周/月/年四个层级来显示。


在Graphs里其实跟Home显示的功能是相同的,主要的差别在于三种类型的流量图挂在各自的页面里。
也因为如此,流量图能以正常尺寸显示,而不是Home里的缩小显示。


Details是主要的操作页面。
在Details的页面上方,将流量区分为TCP/UDP/ICMP与other四种protocol类型。
点了任何一种protocl,都会显示对应的流量于其下主要的大图里。
而flow/packet/流量三种类型的流量则可透过右侧的小流量图来进行切换。
下方Display旁的浏览列功能按钮,提供用户以鼠标拖拉时间轴外的另一种操作选择。
最下方的统计数据则显示了时间范围内三种类型流量的总和或速率。


Alerts页面可以设定告警机制。

但Nfsen提供的smtp组态设定相当有限,在配置文件nfsen.conf中只提供了以下两个参数,并没有其它细项设定。
$MAIL_FROM = 'your@from.example.net';
$SMTP_SERVER = 'localhost';

所以环境中的mail server需对Nfsen的IP进行open relay放行,才能让Nfsen成功发信;
不然就要在Nfsen上再起个MTA服务来实现发信机制。

Stats页面可对数据保留时与间大小等进行设定。流量图中的颜色调整也是在这个页面中进行喔~


plugins页面显示了Nfsen的插件,若有装PortTracker的话,将于此页面中显示。

在PortTracker中,可以看到它是针对TCP/UDP两种类型的flow/packet/流量三种方式绘制流量图,
可以在这一大五小的图中自行切换要查看的Protocol与流量。
并且于下方统计数据中显示各种Protocol的Port使用排名。

不过比较可惜的是它没有提供像Details页面的时间轴工具,
无法自定时间范围来查询该范围内的Port使用排名。
只能以现在的时间往前推12小时、一天、两天、四天、一周与两周等既定的时间范围来做查询,
这是比较可惜的地方...

三、nfsen抓"hog"实战示例 [ 这部分转自台湾网友的文章,原文见参考文档9 ]
登入nfsen网页,由Home或Graphs的Traffic查看有无问题流量。


找到要查询的流量后,选择“Time Windows”来设定要查询的流量区间。
选择“Time Windows”后,X轴的光标尺会分裂为左右两边。


先拉右半边游标尺到观察区间的右边。


再拉左半边光标尺到观察区间的左边,完成区间设定。


调整显示方式为“sum”,可在Traffic部分发现问题流量来自tcp协议,
足足有1.2G远远大于其它protocol



 

然后在Netflow Processing区块中,将Options改以“Stat TopN”的方式,做前几名大户排序。


发现第一名主机IP192.168.10.208



找到大户后,接下来要确认的是该用户是以发送端还是接收端在占用流量?
tcp protocolsrc ip 192.168.10.208的条件查询其流量



改以tcp protocol及dst ip 192.168.10.208的方式确认其流量。

 

proto tcp and dst ip 192.168.10.208

经过比对,做为发送端的流量只有9.2M,做为接收端的流量则有1.2G
很明显的192.168.10.208是做为接收端在下载流量。



改以List Flow来查看来源与目的间的关系。



发现192.168.10.208主要以80及443 port两种方式在下载数据,确认究竟是哪一port所造成的流量。

 

proto tcp and dst ip 192.168.10.208 and src port 80



proto tcp and dst ip 192.168.10.208 and src port 443


由流量来看,192.168.10.208是透过80 port在下载数据。但有很多80 port在下载,究竟是哪个来源IP呢?
把Flows打开到最大10000,查询所有联机。


发现是140.138.144.170这个来源IP。



原来是作者本人透过网页在Ubuntu网站下载iso档所造成,一切都是误会~但也成功透过Nfsen查询到占用带宽的凶手!Nfsen的基本操作示范到此,更深入的应用留给有兴趣的您继续研究啰~

四、PortTracker插件的安装流水账

]# cd nfsen-1.3.7
]# vi contrib/PortTracker/PortTracker.pm
===> my $PORTSDBDIR = "/data/ports-db";
]# cp PortTracker.pm /data/nfsen/plugins/
]# cp PortTracker.php /usr/share/nginx/html/nfsen/plugins/
]# vi etc/nfsen.conf 
===>    @plugins = (
===>        [ 'live',   'PortTracker'],
===>     ); 

每次对nfsen.conf做过改动以后,都需要重新执行一次install.pl
]# ./install.pl etc/nfsen.conf 

创建nftrack data目录,并初始化portracker database
]# mkdir -p /data/ports-db
]# nftrack -I -d ports-db/

修改nftrack data目录属主和权限,必须确认netflow用户和nginx用户能访问到。
]# chown -R netflow:nginx ports-db/
]# chmod -R 775 ports-db/

重新载入一下nfsen
]# cd /data/nfsen/bin
]# ./nfsen reload

在日志中确认PortTracker成功初始化
]# grep -i 'porttracker.*success' /var/log/syslog
Nov 27 02:46:13 noc nfsen[17312]: Loading plugin 'PortTracker': Success
Nov 27 02:46:13 noc nfsen[17312]: Initializing plugin 'PortTracker': Success

等待几分钟后,在nfsen的WEB GUI上访问plugins标签查看结果。
==================
参考文档:
1.http://tekyhost.com/building-centos-7-netflows-monitoring-station-with-nfsen-and-nfdump/
2.http://terraltech.com/installation-and-configuration-of-nfdump-and-nfsen-on-ubuntu/
3.https://support.cumulusnetworks.com/hc/en-us/articles/201787866-Configuring-and-Using-sFlow-Visualization-Tools
4.http://blog.sina.com.cn/s/blog_71261a2d0100zew1.html
5.https://code.google.com/p/renisac/wiki/NFSen_Introduction
6.https://www.forwardingplane.net/2014/01/install-nfsen-and-nfdump-on-centos-6-5-for-netflow-and-or-sflow-collection/
7.http://meetings.ripe.net/ripe-50/presentations/ripe50-plenary-tue-nfsen-nfdump.pdf
8.http://blog.gmane.org/gmane.network.nfsen.general/month=20100901
9.http://www.shunze.info/forum/thread.php?threadid=1953&boardid=3&sid=aadc298e695d7f799db0b872563884b3&sid=aadc298e695d7f799db0b872563884b3
10.http://perlmaven.com/symbolic-reference-in-perl

 

Viewing all articles
Browse latest Browse all 55

Trending Articles