本文授权转载自微信公众号:计算机与网络安全,转载请联系授权。
![7c1d238d794e573fa80145ac5128af3f.png](https://i-blog.csdnimg.cn/blog_migrate/2567c4a316ef4502ea38695efa97b254.jpeg)
对于单台
服务器
网络故障的排查,
iftop
工具可以轻松实现,但是在监控一个庞大的
服务器
网络,并且要分析每台
主机
以及端口的网络状态时,
iftop
就显得爱莫能助了,这个时候就需要一个高效的网络管理系统了。
Ntop就是一个功能强大的流量监控、端口监控、服务监控管理系统。
1、Ntop与MRTG的异同
MRTG是一个监控网络链路流量的工具,通过SNMP协议得到设备的流量信息,并将信息通过图形展示给用户。
MRTG配置简单,容易使用,它的优点是耗用的系统资源小,可以非常直观地显示流量负载,但是它也有很多缺点,例如:
只能用于
TCP/IP
网络、数据不能重复使用、无法记录更详细的流量状态、没有管理功能等,而这些刚好是Ntop最擅长的地方。
Ntop是网络流量监控中的新贵,它是一种网络嗅探器,在监测网络
数据传输
、排除网络故障方面功能十分强大。
它通过分析网络流量来判断网络上存在的各种问题,还可以监控是否有
黑客
正在
攻击
网络,如果网络突然变缓慢,通过Ntop截获的数据包,可以确定是什么类型的数据包占据了大量带宽,以及数据包的发送时间、数据包传送的延时、数据包的来源地址等,通过这些信息,
运维
人员可以及时做出响应,或者对网络进行调整,从而保证网络正常、稳定运行。
2、Ntop与Ntopng的功能介绍
Ntop提供了命令行界面和
Web
界面两种工作方式,通过
Web
界面,可以清晰展示网络的整体使用情况、网络中各
主机
的流量状态与排名、各
主机
占用的带宽以及各时段的流量明细、
局域网
内各
主机
的路由、端口使用情况等。
根据官方的介绍,Ntop主要提供以下几个功能:
● 可以自动从网络中获取有用的信息。
● 可以将获取的数据包信息转换为可识别的格式。
● 可以记录网络的通信时间和过程。
● 可以对网络中失败的通信进行分析。
● 可以发现网络环境中通信的瓶颈。
● 可以自动识别客户端正在使用的操作系统。
通过对Ntop功能的介绍,不难看出,它就是从分析网络流量角度来确定网络上存在的各种问题,说得更简单一点,它就是一个抓包工具,然后通过归纳和绘图实现更多的功能。
在Ntop版本更新到Ntop5.x之后,官方宣布停止Ntop版本的更新,继而推出替代版本Ntopng。
Ntopng在Ntop版本的基础上,去掉了一些拖沓冗长的功能,同时新增了网络流量实时监控功能,并将各个功能进行重新梳理和整合,使整个流量展示更加智能化和合理化。
Ntopng使用Redis键值服务按时间序列存储统计信息,通过这种方式实现了流量状态实时展示。
与Ntop类似,Ntopng也内置
Web
服务功能,同时,也支持命令行界面和
Web
界面两种工作方式,但是Ntopng降低了对CPU和内存的使用率,资源消耗更少。
Ntopng除了可以实现Ntop的所有功能外,新增的功能如下:
● 以图形的方式动态展示流量状态。
● 实时监控网络数据并实时汇总。
● 以矩阵图的方式显示IP流量。
● 可以生成基于HTML5/AJAX的网络流量统计。
● 支持历史流量
数据分析
。
● 基于HTML5的动态图形用户界面。
下面分别介绍Ntop和Ntopng的安装及使用技巧。
3、安装Ntop与Ntopng
(1)安装Ntop
Ntop支持Win32、
Linux
、UNIX、BSD等平台。
可以在Ntop官方网站http://www.ntop.org/下载对应的版本。
Ntop的安装可以通过yum源方式和源码编译安装两种方式实现,为了能够使用最新的稳定版本,这里采用源码编译的方式来安装,安装过程如下。
1)安装Ntop必需的软件包
这里安装的操作系统环境为CentOS 6.3 x86_64版本。
为了顺利完成源码编译,需要安装Ntop必需的一些软件包,操作如下:
[root@monitor ~]# yum -y install libpcap libpcap-devel libtool libpng gdbm gdbm-devel glib libxml2-devel pango pango-devel gd zlib zlib-devel
[root@monitor ~]# yum -y install svn rrdtool rrdtool-devel python python-devel GeoIP GeoIP-devel
2)编译安装Ntop
这里下载的是ntop-5.0.1版本,编译安装过程如下:
[root@monitor ~]# tar zxvf ntop-5.0.1.tar.gz
[root@monitor ~]# cd ntop-5.0.1
[root@monitor ~]# ./autogen.sh --with-tcpwrap
[root@monitor ~]# make
[root@monitor ~]# make install
其中,--with-tcpwrap选项用于支持tcp_wrappers
访问控制
,以保证Ntop
Web
访问的安全。
3)简单配置Ntop
在Ntop安装完成后,默认的数据存放目录为/usr/local/var/nto。
为了保证安全,建议以低权限用户nobody身份运行Ntop
进程
,因此,可能需要对Ntop默认的数据存放目录进行权限调整,执行如下命令即可:
[root@monitor ~]# chown -R nobody /usr/local/var/ntop
通过Ntop的
Web
页面可以修改Ntop的设置或关闭Ntop服务,但是必须通过管理员用户的验证,Ntop默认的管理员为admin,
密码
为空,因此,需要为其设置一个
密码
。
通过如下命令即可设置admin用户的
密码
:
[root@monitor ~]# ntop –A
然后重复输入两次
密码
即可。
Ntop的
Web
页面在默认情况下没有访问限制,有时候为了网络的安全,建议设置授权访问,只有授权的
主机
才能访问此
Web
页面,这可以通过
Linux
系统本身的tcp_wrappers功能实现,授权过程如下:
[root@monitor ~]# vim /etc/hosts.allow ntop: 192.168.12.188
[root@monitor ~]# vim /etc/hosts.deny ntop: ALL
这里设置只允许IP地址为192.168.12.188的
主机
可以访问Ntop的ntop服务,禁止其他所有IP访问。
(2)安装Ntopng
Ntopng是目前Ntop官方的主推版本,可以从http://www.ntop.org/下载目前最新的ntopng源码版本进行编译安装。
不过为了安装方便,官方推出了Ntopng的yum源仓库,通过yum源仓库可以轻松安装Ntopng,这里就采用yum源方式进行安装。
1)设置yum源
首先为Ntopng创建一个yum源仓库,内容如下:
[root@localhost ~]# cat /etc/yum.repos.d/ntop.repo
[ntop]
name=ntop packages
baseurl=http://www.nmon.net/centos/$releasever/$basearch/
enabled=1
gpgcheck=1
gpgkey=http://www.nmon.net/centos/RPM-GPG-KEY-deri
然后下载一个epel的yum源:
[root@localhost ~]# wget http://download.fedoraproject.org/pub/epel/6/x86_64/epel-release-6-8.noarch.rpm
[root@localhost ~]# rpm –Uvh epel-release-6-8.noarch.rpm
2)安装Ntopng
在设置好两个yum源后,安装Ntopng就变得十分简单了,只需执行如下操作即可:
[root@localhost ~]# yum clean all
[root@localhost ~]# yum update
[root@localhost ~]# yum install pfring n2disk nProbe ntopng ntopng-data nbox
3)配置Ntopng
在Ntopng安装完成后,默认的配置文件模板是/etc/ntopng/ntopng.conf.sample,可以将此文件重命名为ntopng.conf,然后在这个配置文件中添加一些配置信息,例如:
[root@localhost ~]# cat /etc/ntopng/ntopng.conf
-G=/var/tmp/ntopng.gid
--local-networks "192.168.12.0/24"
--interface em2
--user nobody
--http-port 3000
相关参数含义如下:
-G指定存储Ntopng
进程
号的文件路径。
--local-network指定要监控的本地子网段。
--interface em2指定监听em2网卡上的流量。
--user指定运行Ntopng服务所使用的账户。
--http-port指定Ntopng的
Web
服务端口号,如果不指定,默认端口为3000。
4)启动Ntopng服务
在启动Ntopng服务之前,需要先启动redis服务。
redis主要为Ntopng提供键值存储。
下面首先启动redis服务,然后启动Ntopng服务,执行操作如下:
[root@localhost ~]# service redis start
[root@localhost ~]# service ntopng start
为了保证redis和Ntopng服务在以后可开机自启动,还需要执行如下操作:
[root@localhost ~]# chkconfig ntopng on
[root@localhost ~]# chkconfig redis on
最后,就可以通过
Web
方式(http://IP:3000)来访问Ntopng提供的服务了,默认登录用户名和
密码
均为admin,可在登录后进行修改。
4、Ntop和Ntopng的使用技巧
在完成Ntop安装后,执行如下命令即可启动Ntop服务:
[root@networkserver ~]# ntop -i em1 -L –d
这里通过Ntop命令监控网卡em1的流量状态,在执行此命令后,Ntop服务的日志输出将重定向到系统的/var/log/messages文件中,同时将开启默认的3000端口作为
Web
界面服务端口,执行http://IP:3000即可访问Ntop提供的
Web
监控界面。
(1)Web界面下Ntop的使用方法与技巧
Ntop的
Web
界面主要由7个主栏目组成,下面介绍每个栏目中需要重点关注的功能点。
“About”栏目包括Ntop的简单介绍和一些在线手册等帮助信息。
“Summary”栏目是对目前网络流量的一个整体概况,其中子栏目“Traffic”可以显示全局流量统计,主要包含网络接口流量统计、协议流量分布、应用协议流量统计等,网络流量会以柱面图、曲线图和明细表格的形式展示。
图1显示的是L2/L3协议对应的流量分布图。
![c5f5a3e5a9455018906a57f5d3aa14e1.png](https://i-blog.csdnimg.cn/blog_migrate/bd411fb48590fcae6a64945d8f69d243.jpeg)
图1 Ntop根据协议进行的流量分布统计
“Summary”下的子栏目“Host”主要显示所有可监控
主机
的IP地址、地理位置、MAC地址、数据发送接收量、目前活动连接数等各种信息,在
主机
流量监控方面,可通过Bytes方式统计,也可以用packets方式统计,要了解每个
主机
的详细流量信息,只需单击对应的Host便可查看,图2就是某
主机
在某时刻的流量连接流视图。
![a895247554995d0cbee5f5147a1a670f.png](https://i-blog.csdnimg.cn/blog_migrate/303aa0778f4d6d1c47b159ab60cd4e1f.jpeg)
图2 通过Ntop展示某主机在某时刻的连接流视图
通过图2可以非常清晰地了解某
主机
在某时刻的连接状态,中间的竖柱表示的是IP为“125.76.237.248”的这台
主机
,然后以竖柱为中心,分成左右两个部分,左边部分表示外部IP与“125.76.237.248”这台
主机
之间的发送、接收数据流量,右边部分表示“125.76.237.248”这台
主机
与外部IP之间的发送、接收数据流量,连接的宽度表示发送或接收数据量的大小。
在“Summary”下的子栏目“Host”中,在查看每台
主机
的详细流量页面上有一个按时段的流量统计功能,这个功能非常有用,通过这个统计可以查看某
主机
在一天任意一个小时内发送、接收的数据流量,同时还可以通过饼状图进行集中汇总。
“Summary”下的子栏目“Network Load”用于网络负载统计,通过该项功能可以查看最近10分钟、一小时、一天、一个月的网络流量信息。
图3展示的是一个小时内的网络负载统计。
![9ba3978079e56418ec7a1573898d3d66.png](https://i-blog.csdnimg.cn/blog_migrate/0cd4b8325441a250b63fae5dc1d52841.jpeg)
图3 Ntop展示的一个小时内的网络负载
“All Protocols”栏目主要用于查看各
主机
发送、接收的数据量,并将数据以
TCP
、UDP、ICMP的方式进行分类统计。
其中,子栏目“Throughput”主要显示所有可见
主机
的吞吐量,子栏目“Activity”主要显示当前网络可见
主机
在24小时中每小时的流量状态,并且每个时段根据流量的大小分别用不同的颜色进行标注。
“IP”栏目主要对各台
主机
中应用层协议产生的流量进行统计。
例如,子栏目“Summary”主要对各
主机
中
HTTP
、FTP、Mail、
SSH
、
DNS
等服务产生的流量进行详细统计,同时还可以统计多播信息、流量分布等;
子栏目“Traffic Directions”主要用于统计端到端的流量信息,可以统计本地到本地、本地到远端、远端到本地、远端到远端的流量状态;
子栏目“Local”主要是统计局域网络内各
主机
使用状况,比如可以统计本地路由使用信息、本地端口使用信息、Active Sessions连接信息等。
“Utils”栏目主要包括RRD参数的配置、转存Ntop的统计信息,以及查看Ntop运行日志信息等功能。
“Plugins”栏目用于继承Ntop插件工具,默认安装的插件有NetFlow、rrdPlugin、sFlow等,其中,NetFlow插件可用于设置、激活、停用NetFlow支持,在启用NetFlow后,Ntop就可以统计NetFlow的详细信息,包括NetFlow的格式、数据量及端口流量。
而rrdPlugin插件主要用于生成流量图,它比MRTG更灵活,非常适合用
shell
、perl等程序来调用,以生成所需的图片。
sFlow是一种新的网络监测技术,可适应超大网络流量下的流量
数据分析
,在Ntop中启用sFlow支持后,不但可以降低实施成本,也可以解决网络管理中面临的很多问题。
最后一个栏目“admin”是一个管理选项,访问此栏目时需要提供管理员
密码
,有Ntop的参数配置、登录Ntop的
密码
设置、配置用户访问Ntop的页面、Ntop的启动与关闭等几个功能选项。
(2)命令行下Ntop的常用参数
Ntop也可以在命令行下使用。
虽然在命令行下没有那么直观,但是添加和修改配置非常迅速,并且还能实现很多
Web
界面下无法完成的功能。
执行“ntop -h”命令即可显示Ntop在命令行下可使用的所有参数信息。
在命令行下Ntop常用的参数及含义如表1所示。
![8e9bbbb249c25922a2025bbe155c2a8a.png](https://i-blog.csdnimg.cn/blog_migrate/cdcd6c10c9322d326e704b5a575846af.jpeg)
表1 命令行下Ntop常用参数含义说明
(3)Ntopng的使用方法与技巧
与Ntop的使用方法类似,Ntopng的
Web
监控界面更加智能化,功能展示更加统一和人性化。
Ntopng的核心功能是实时数据流展示。
图4是登录Ntopng后的一个主界面,中间的“Top Flow Talkers”部分就是流量实时展示界面。
![09ff174446bedb530cd7932893cf0d3a.png](https://i-blog.csdnimg.cn/blog_migrate/0675fc65cf70e4ae5645dc31239b6ab3.jpeg)
图4 Ntopng流量实时监控主界面
从图4可以看出,Ntopng的
Web
界面主要分为Home、Flows、Hosts和Interfaces四个主栏目。
其中“Home”栏目主要是从整体上展示并统计发送、接收的数据流;
“Flows”栏目是基于DPI的自动程序或服务探测程序生成的实时数据报告,主要用于统计活跃的数据流,并将数据流以协议类型、应用类型、数据量大小等方式进行详细统计,如图5所示。
![940e81a5e99020561d744faed3cb0ca6.png](https://i-blog.csdnimg.cn/blog_migrate/ea1b9445087601b442c1464344be2ce4.jpeg)
图5 Ntopng对活跃数据流的统计
通过图5可以很清晰地看出每条数据流的发送方和接收方,而“Breakdown”列展示了发送和接收数据量的大小,单击右上角的“Applications”按钮,还可以根据不同的应用类型,例如
HTTP
、ICMP、
DNS
等,有选择地查看活跃的数据流状态。
“Hosts”栏目显示了所有Ntopng可见的
主机
信息,可分类显示本地的或
远程
的
主机
列表,还可以显示每台
主机
间的交互信息、本地
主机
矩阵图等信息,如图6所示。
![df42f8b6d22e597e755cb072775f2a73.png](https://i-blog.csdnimg.cn/blog_migrate/a00055934925657842595b5a794197e8.jpeg)
图6 Ntopng收集到的所有主机列表
在图6中,Ntopng展示了每台
主机
的
主机
名、IP地址、
主机
所处地域(本地或者
远程
)、数据收集持续时长、发送/接收数据量、
主机
网络吞吐量、数据传输量等信息。
如果想要了解每台
主机
更详细的统计信息,可以在图6中单击每台
主机
的IP进入
主机
详细信息页,如图7所示。
![30a929d42b059894779ab758291be608.png](https://i-blog.csdnimg.cn/blog_migrate/14bbd6411081b279ca7bc08a256a3b72.jpeg)
图7 Ntopng对每台主机的详细监控页面
从图7可以看出,每台
主机
的详细信息页中又分很多小栏目,默认打开的页面展示了此
主机
的MAC地址、IP地址、操作系统类型、
主机
名、数据收集的开始截止时间、数据发送和接收量等信息,单击图7中的“Traffic”栏目,可以根据协议类型查看数据的通信量,并且还通过饼状图进行了汇总,如图8所示。
![ea686e17cba3203690ffde5f18e8f76f.png](https://i-blog.csdnimg.cn/blog_migrate/4d9df98f034a76b26cfddc40da126507.jpeg)
图8 Ntopng根据协议类型进行数据流量统计
在图8中,Ntopng将通信流量以
TCP
、UDP、ICMP三种协议类型进行分别统计,并且通过饼状图方式进行整体汇总,这对于了解网络中某个通信协议的流量是非常有用的。
单击图7中的“Packets”栏目,可以根据发送、接收包的数量进行流量统计,如图9所示。
![c4f9db9e8e16d900ed62929a5c57fe09.png](https://i-blog.csdnimg.cn/blog_migrate/a3e40b743db26359736375cf10a14019.jpeg)
图9 Ntopng绘制的数据包发送量、接收量分布图
“Packets”栏目展示的是数据包发送量、接收量的分布图。
从图9中可以看到,在发送的数据包中,数据包量高达128的占总发送量的71.2%,在接收的数据包中,数据包量高达256的占总接收量的83.8%,这个功能可以帮助网络管理员判断网络中发送或接收数据包的数据及占据的比例,网络管理员可以据此来判断网络是否存在异常,进而解决潜在的网络问题。
单击图7中的“Protocols”栏目,可以根据应用程序的类型进行流量统计,如图10所示。
![f85bf4e0a92d9c4835279dfc00654815.png](https://i-blog.csdnimg.cn/blog_migrate/e25a64847eae623d93e2beaef52ec4bc.jpeg)
图10 Ntopng根据应用程序的类型进行流量统计
图10展示了
DNS
、
HTTP
、ICMP、
MySQL
、
SSH
等应用协议在一段时间内的发送、接收数据量,哪个应用程序传输的数据量大,哪个传输的数据量小,一目了然。
通过此功能,可以迅速发现哪个应用程序存在问题,对于短时间内流量非常大的应用协议,管理员就需要重点关注了。
图7中的“Flows”栏目、“Talkers”栏目、“Current Contacts”栏目都比较浅显易懂,这里不再介绍。
最后重点关注下“Historical”栏目,如图11所示,此栏目主要用于将数据流量生成流量图,进而用于分析历史流量数据,可以根据传输协议、应用协议类型等方式选择不同时段来分析数据发送、接收的趋势,通过这些生成的历史流量图,可以分析网络一段时间内的运行状态,并为网络管理和网络故障排除提供依据。
![833f781c58cbdd8c04e39dda647a1c06.png](https://i-blog.csdnimg.cn/blog_migrate/e02dc921c8148568f98d5201c9f47915.jpeg)
图11 Ntopng生成的历史数据流量图
Ntopng的最后一个主栏目是“Interfaces”,主要用于对监控的网络接口的数据流量进行分析,可以查看监控接口传输数据量的总大小、接收数据包的总个数以及包大小分布状况、每个应用协议产生的流量大小、历史流量数据查询等,可以从整体上了解网络接口的通信状态。
Ntopng也提供了简单的
Web
管理功能,通过
Web
界面可以添加、修改、删除管理员用户,还可以将每台
主机
的数据以JSON的格式导出。