网络流量反映了网络的运行状态,是判别网络运行是否正常的关键数据,在实际的网络中,如果对网络流量控制得不好或发生网络拥塞,将会导致网络吞吐量下降、网络性能降低。通过流量测量不仅能反映网络设备(如路由器、交换机等)的工作是否正常,而且能反映出整个网络运行的资源瓶颈,这样管理人员就可以根据网络的运行状态及时采取故障补救措施和进行相关的业务部署来提高网络的性能。对网络进行流量监测分析,可以建立网络流量基准,通过连接会话数的跟踪、源/目的地址对分析、TCP流的分析等,能够及时发现网络中的异常流量,进行实时告警,从而保障网络安全。本节将介绍的Ntop便可以提供详细的网络流量明细表。在Ossim系统中集成了Ntop可以直接使用。
1.Ntop简介
Ntop是一种监控网络流量的工具,用NTOP显示网络的使用情况比其他一些网管软件更加直观、详细。NTOP甚至可以列出每个节点计算机的网络带宽利用率。
2.Ntop主要功能
Ntop主要提供以下一些功能:
①.自动从网络中识别有用的信息;
②.将截获的数据包转换成易于识别的格式;
③.对网络环境中通信失败的情况进行分析;
④.探测网络环境中的通信瓶颈,记录网络通信的时间和过程。
Ntop可以通过分析网络流量来确定网络上存在的各种问题;也可以用来判断是否有黑客正在攻击网络系统;还可以很方便地显示出特定的网络协议、占用大量带宽的主机、各次通信的目标主机、数据包的发送时间、传递数据包的延时等详细信息。
3. Ntop支持的协议
Ntop比MRTG更容易安装,如果用手机话费来比喻流量,MRTG便如同提供总费用的电话账单,而Ntop则是列出每一笔费用的明细一样。目前市场上可网管型的交换机、路由器都支持SNMP协议,Ntop支持简单网络管理协议,所以可以进行网络流量监控。Ntop几乎可以监测网络上的所有协议: TCP/UDP/ICMP、(R)ARP、IPX、Telnet、DLC、Decnet、DHCP-BOOTP、AppleTalk、Netbios、TCP/UDP、FTP、HTTP、DNS、Telnet、SMTP/POP/IMAP、SNMP、NNTP、NFS、X11、SSH和基于P2P技术的协议eDonkey。
4.Ntop支持插件
①.ICMPWATCH:
用于端口检测很多人都已经知道了可以借助NETSTAT -AN来查看当前的连接与开放的端口,但NETSTAT并不万能,比如Win2000遭到OOB攻击的时候,不等NETSTAT就已经死机了。为此,出现了一种特殊的小工具——端口监听程序。端口监听并不是一项复杂的技术,但却能解决一些局部问题。
②.NetFlow:
近年来,很多服务提供商一直使用NetFlow。因为NetFlow在大型广域网环境里具有伸缩能力,可以帮助支持对等点上的最佳传输流,同时可以用来进行建立在单项服务基础之上的基础设施最优化评估,解决服务和安全问题方面所表现出来的价值,为服务计费提供基础。
③.rrdPlugin:
用于生成流量图。RRD的作者,也是MRTG的作者,RRD可以简单的说是MRTG的升级版,它比MRTG更灵活,更适合用shell、perl等程序来调用,成生所要的图片。
④.sFlow:
sFlow(RFC 3176)是基于标准的最新网络协议,能够解决当前网络管理人员面临的很多问题。sFlow已经成为一项线速运行的“永远在线”技术,可以将sFlow技术嵌入到网络路由器和交换机 ASIC芯片中。与使用镜像端口、探针和旁路监测技术的传统网络监视解决方案相比,sFlow能够明显地降低实施费用,同时可以使面向每一个端口的全企业网络监视解决方案成为可能。与数据包采样技术(如RMON)不同,sFlow是一种导出格式,它增加了关于被监视数据包的更多信息,并使用嵌入到网络设备中的sFlow代理转发被采样数据包,因此在功能和性能上都超越了当前使用的RMON、RMON II和NetFlow技术。sFlow技术独特之处在于它能够在整个网络中,以连续实时的方式监视每一个端口,但不需要镜像监视端口,对整个网络性能的影响也非常小。
另外,Ntop还允许用户安装插件用,以提供对于特定协议下具体统计数据的报告,如NFS和NetBIOS插件。当然,Ntop也可以生成运行它的主机的统计数据,列出开放套接字、接收和发送的数据以及每个过程的相关主机对。
二、Ntop系统的部署
对于共享网络,只须将连接到共享网络中的流量采集点的网络接口置为混杂工作模式,就可实现采集网络流量数据的功能。与交换网络相比,网络发生拥塞时,集线器网络的可靠性很低,SNMP问询命令和回应数据包可能发生延迟或丢失,这时候Ntop检测数据也就不准确了,对于交换网络的情况,需要交换设备的支持(如具有SPAN端口的交换机)。流量采集主机连接到交换设备的一个端口后,通过交换机的SPAN至(Switched PortAnalyzer)端口把要分析的所有流量镜像到该采集点上。SPAN在使用中非常灵活,可以监视交换机的单个端口,也可以监视多个端口,还可以对VLAN进行监视。这就使流量异常监测系统具有了很大的灵活性。在一些流量比较大的企业,我们一般选用两个网卡,一块网卡作为Ntop专用嗅探网卡,连到核心交换机的镜像端口,另一块配上IP地址并开放相应端口(默认是3000,也可以修改),连接交换机的作用是用来登录Web界面进行管理,Ntop的部署如图1所示。
图1 Ntop的安装位置
Ntop没有自己的捕包工具,它需要一个外部的捕包程序库:libpcap。Ntop利用libpcap独立地从物理链路上进行捕包,它可以借助libpcap的平台成为一个真正的与平台无关的应用程序。它直接从网卡捕包的任务由libpcap承担,所以我们必须确保Linux系统下正确安装了libpcap。
三.Ntop安装配置
Ntop工作时需要使用zlib、gd、libpcap及libpng的函数,安装前须检查服务器中是否已经含有下列的软件:zlib(zlib-1.1.3-xx以上)、gd(gd-1.3.xx以上)、libpng。可以使用RPM来确认:
rpm -qa | grep libpcap
rpm -qa | grep zlib
rpm -qa | grep gd
rpm -qa | grep libpng
如果发现缺少任何一个就需要自行安装,举例如下。
1.安装libpcap
# tar zxvf libpcap-0.9.8.tar.gz
# cd libpcap-0.9.8
#./configure
# make&&make install
2.安装RRDtool
RRDtool是指Round Robin Database 工具(环状数据库)。Round Robin是一种处理定量数据以及当前元素指针的技术。想象一个周边标有点的圆环,这些点就是时间存储的位置。从圆心画一条到圆周的某个点的箭头,这就是指针。一个圆环上没有起点和终点,可以一直存储下去。经过一段时间后,所有可用的位置都会被用过,该循环过程会自动重用原来的位置。这样,数据集不会增大,并且不需要维护。
#tar -zxvf rrdtool-1.3.1.tar.gz
#export PKG_CONFIG_PATH=/usr/lib/pkgconfig/
#./configure
#make
#make install
3.安装Ntop
下载ntop安装包:http://www.nmon.net/packages/rpm/x86_64/ntop/
#rpm -ivh ntop-3.3.10-.x86.rpm
#yum install ntop \\CentOS系统
#apt-get install ntop \\Debian系统
注意:在Ossim 系统中已经为我们安装好Ntop软件,可以直接使用。如果您选择单独安装可以继续参考以下内容。另外如果您使用Red Hat Linux 、Fedora或CentOS请首先关闭 SELinux功能。
4.建立Ntop用户并配置权限
#useradd ntop
5.建立Ntop存放数据的目录
#mkdir -p /var/ntop
#chown -R ntop.ntop /var/ntop
6.复制ntop.conf配置文件
#cp /ntop-3.3.10/ntop.conf.sample /etc/ntop.conf
7.设置管理密码
在执行ntop之前必须先建立管理员密码,长度至少5位。使用参数-A建立管理员密码
#ntop -A
8. Ntop的管理员密码重置方法
Ntop的用户密码文件是经过加密存储在ntop_pw.db文件中,Ntop用户密码存储位置:
64位版本:/var/lib/ntop_db_64/ntop_pw.db
64位版本需先删除其密码文件ntop_pw.db,然后用notp -A 重置管理员密码后,最后重启ntop服务就能生效。
#/etc/init.d/ntop restart
另外,注意一个细节,ntop的访问日志位置在/var/log/ntop/目录下,它的pcap log在/var/lib/ntop目录下。
四、应用Ntop
1.启动Ntop
#/usr/local/bin/ntop -i eth0 -d -L -u ntop -P /var/ntop --use-syslog=daemon
命令行中各项简要介绍如下。
-i "eth0":指定监听网卡。
-d:后台执行。
-L:输出日志写入系统日志(/var/log/messages)。
-u ntop:指定使用Ntop身份执行。
-P /var/ntop:指定Ntop数据库的文件位置。
-use-syslog=daemon:使用系统日志进程。
-w:使用其他端口,指定ntop使用其他端口,例如执行ntop –w 1900以后,便可以使用http://ip:1900来连接ntop
2.利用Web浏览器查看Ntop状况
Ntop的通讯端口为3000,所以在浏览器使用IP:3000进入ntop便可看到ntop欢迎界面
,如图2所示。
图2 查看Ntop状况
3.查看整体流量
对于网络整体流量的统计,分别是Protocol Traffic Counters、IP Traffic Counters、TCP/UDP Connections Stats、Active TCP Connections List、Peers List。按照不同的Packet,将流量数据存放到不同的Counter中。对网络整体流量进行分类统计,包括下列情形。
流量分布情形:区分为本网络主机之间、本网络与外部网络之间、外部网络与本网络之间的网络流量统计。
数据包分布情形:依据数据包大小、广播形态及IP与非IP等加以分类及统计。
协议使用及分布情形:本网络各主机传送与接收数据所使用的通信协议种类与数据传输量。
通过Summary→Traffic查看整体流量(如图3所示),网络流量会以清晰的表格形式显示,如图3所示。
图3 查看整体流量
在图3中,Summary内容为目前玩过的整体概况,包括流量,主机网络负载等。All Protocols选项可以查看各主机占用的带宽和各时段使用的流量明细。IP显示网络主机的流量状况和排名;Utils可以显示ntop记录的网络状况、流量统计并可以将数据存储为txt,xml等格式;Plugins包含了ntop所支持的插件类型;Admin选项可以对ntop进行配置,例如我们可以配置Pcap Log的路径,这对于解决Ntop数据占用磁盘空间问题很有帮助,默认路径为/usr/local/ntop/var/ntop目录下。另外为了节约磁盘空间可以降低Max Hashes和Max Sessions的值。此外还可以进行ntop重启停止等操作。另外,如果ntop启动失败,你可以到/var/log/messages中寻找错误日志。如果你需要设置开机自动启动还可以到/etc/rc.d/rc.local文件最后加入启动ntop的命令。如果你想修改ntop外观可以编辑ntop的HTML文档、或CSS式样文件,这些内容在/usr/share/ntop/html目录下。
图4 以表格形式显示网络流量
4.查看通信数据包(协议)比例
数据包对于网络管理的网络安全而言具有至关重要的意义,如防火墙的作用就是检测网络中的数据包,判断其是否违反了预先设置的规则,如果违反就加以阻止。Linux网络中最常见的数据包是TCP和UDP。如果想了解一个计算机传输了哪些数据,可以双击计算机名称即可分析出用户各种网络传输的协议类型和占用带宽的比例,如图5所示。
图5查看协议类型和占用比例
5.与Google Map整合:Ntop中标注IP所在国家的位置
选取Summary→Hosts World Map Ntop命令,与Google Earth(谷歌地球)进行技术整合,能将收集到的信息实时地在谷歌地球上显示出来。首先要有Gmail账号,然后到http://code.google.com/apis/maps/signup.html上申请Google Maps API的密钥,成功后如图6所示。
图6注册使用Google Maps API
接下来复制密钥,选择Admin→Configure→Preferences,这时会提示输入用户名、密码,如图7所示。
图7 定位到Admin→Configure→Preferences
在如图8所示的界面中找到google_maps.key选项,并把密钥填写进去。注意,调整参数需要输入用户和密码,如果忘记了Ntop密码,可以通过root输入“/usr/sbin/ntop –A”来修改用户admin的密码。
图8 填写密钥
保存退出后,在Chrome 浏览器中再次选择Hosts World Map,配置完成。
注意:由于Google Maps的限制,不能跟踪所有IP地址。如果在设置时出现“Please enable make sure that the ntop html/ directory is properly installed”提示错误,多半是权限问题,可采用以下方法解决:
- #chown -R ntop:ntop /var/lib/ntop/ \\**改变owner**\
- #chown -R ntop:ntop /usr/share/ntop/
- # ln -s /usr/share/ntop/html /var/lib/ntop/ \\*建立一个符号链接*\\
- # /etc/init.d/ntop restart 重启服务以便设置生效
6.数据转储功能
Ntop还支持把流量转储成其他格式(如文本文件、Perl、PHP、Python),以便其他外部程序可以对数据进行深加工。可以选择Utils→Data Dump命令,如图9所示。
图9定位到Utils→Data Dump
如我们选择报告主机类型,格式为PHP。则转储数据如下:
- '1.1.1.12' => array(
- 'hostResolvedName' => '1.1.1.12',
- 'pktSent' => 12628,
- 'pktRcvd' => 32668,
- 'ipv4BytesSent' => 1818480,
- 'ipv4BytesRcvd' => 30936426,
- 'bytesMulticastSent' => 0,
- 'pktMulticastSent' => 0,
- 'bytesMulticastRcvd' => 0,
- 'pktMulticastRcvd' => 0,
- 'bytesSent' => 1818480,
- 'bytesRcvd' => 30936426,
- 'ipv4BytesSent' => 1818480,
- 'ipv4BytesRcvd' => 30936426,
- 'ipv6BytesSent' => 0,
- 'ipv6BytesRcvd' => 0,
- 'tcpBytesSent' => 1813788,
- 'tcpBytesRcvd' => 30936426,
- 'udpBytesSent' => 4692,
- 'udpBytesRcvd' => 0,
- 'icmpSent' => 0,
- 'icmpRcvd' => 0,
- ),
7.查看网络流量图(Local Network Traffic Map)
首先,在Admin→Configure→Preference中,配置dot.path的参数为 /usr/bin/dot,然后选择IP→Local→Network Traffic Map,就可以看到一张反应各个主机流量流向的拓扑图,箭头方向代表数据的流向,鼠标点击相应的IP地址就能看到非常详细的IP统计信息。图10是Ntop根据网络流量情况自动生成的拓扑图。
图10Ntop检测数据流向图
8.查看主机流量
管理人员在查看了网络整体流量信息后,还希望能深入分析网络中的主机流量情况,从而进行流量限制等方面的管理工作,可以选择IP→Summary→Traffic,如图11所示。
图11 查看主机流量
查看传输层的会话,能明显看出接收和发送了多少数据包,如图12所示。
图12 查看传输层的会话
9.启用插件,Ntop还提供了5个插件,如图13所示。
图13 Ntop提供的插件
(1)ICMPWatch:用于端口检测,很多人都已经知道了可以借助“netstat –an”来查看当前的连接与开放的端口,但netstat并不是万能的,在遭到OOB攻击时,不等使用netstat命令,机器就已经死机了。为此,出现了一种特殊的小工具——端口监听程序。端口监听并不是一项复杂的技术,但却能解决一些局部问题。
图中的图标
表示这是一台Linux主机,图标 表示是Windows主机, 表示邮件服务器, 表示是Web服务器。当我们需要查看所有服务器发送流量的大小排序的,只要单击Byte下方的Sent即可,若单击Host下方的某一台主机,还能详细显示当前主机的IP、主机名、MAC、每小时发送/接收数据包的大小、协议分布类型统计等信息,如图14所示,非常详细。图14
(2)NetFlow:近年来,很多服务提供商一直使用NetFlow。因为NetFlow在大型广域网环境里具有伸缩能力,可以帮助支持对等点上的最佳传输流,同时可以用来建立在单项服务基础之上的基础设施最优化评估,解决服务和安全问题方面所表现出来的价值,为服务计费提供基础。NetFlow是一种数据交换方式,其工作原理是:NetFlow利用标准的交换模式处理数据流的第一个IP包数据,生成NetFlow 缓存,随后同样的数据基于缓存信息在同一个数据流中进行传输,不再匹配相关的访问控制等策略,NetFlow缓存同时包含了随后数据流的统计信息。
下面我们分两步走,首先在路由器上配置一个NetFlow转发流量,然后在Ntop上增加一个NetFlow接收流量。启用NetFlow,定位到Plugins→NetFlow→Activate,然后添加设备,在NetFlow Device Configuration中选择Add NetFlow Device选项,如图15所示,设置端口可以自己定义,只要不与现有的冲突就可以,接口地址填写打算监控的网段地址。
图15NetFlow的配置
图 16 网络接口选择
接着,我们需要在路由器上做设置,NetFlow早期都是在路由器上实现的,但是现在一些高端的交换机支持NetFlow,比如Cisco6500系列。
首先需要全局配置,启用NetFlow:
ip flow-export version 5
ip flow-sampling-mode packet-interval 100
在需要监控的Interface,启用NetFlow:
Interface FastEthernet 9/0/1
ip address 192.168.150.20 255.255.255.0
ip route-cache flow sampled
show ip cache fow //查看NetFlow统计信息
show ip flow export //查看NetFlow输出信息
不是所有的NetFlow源设备都支持基于Interface的NetFlow,比如Cisco4500就不支持。也就是说它不能在某个Interface配置打开NetFlow,要么所有端口启用,要么都不启用,重要的是无法区分不同Interface上的流量情况,只能看到整个设备所有的流量情况。
在实践中配置NetFlow需要注意以下两点:
(1)根据NetFlow流的单向性,部署NetFlow时应根据网络拓扑尽量在边界的两个端设备上配置协议。
(2)对于Catalyst 6000三层交换设备,通过Supervisor Engine 1和MultilayerSwitch Feature Card CMSFC支持多层交换(MLS)来实现快速交换。
然后,是Ntop的设置环节,这很重要,各个参数不能设置错误。首先是NetFlow的设备名称,可以随便填写一个。接下来是使用的端口,这里一定要填写路由器上NetFlow的应用端口,例如3217。同时还要针对NetFlow监控的地址网段做设置,例如笔者的是192.168.150.0/255.255.255.0。如图10.24所示,每项参数修改设置完毕后直接单击右边的按钮生效,完成后定位到菜单中的Admin→switch NIC命令,找到我们添加的这个NetFlow设备点Switch Nic按钮让其生效,生效后我们就可以方便查看流量了,如图17所示。
图17 查看流量
(3)rrdPlugin:用于生成流量图。RRD可以简单的说是MRTG的升级版,它比MRTG更灵活,更适合用Shell、Perl等程序来调用,生成所要的图片。
(4)sFlow:sFlow(RFC 3176)是基于标准的最新网络导出协议,能够解决当前网络管理人员面临的很多问题。sFlow已经成为一项线速运行的“永远在线”技术,可以将sFlow技术嵌入到网络路由器和交换机ASIC芯片中。与使用镜像端口、探针和旁路监测技术的传统网络监视解决方案相比,sFlow能够明显地降低实施费用,同时可以使面向每一个端口的全企业网络监视解决方案成为可能。与数据包采样技术(如RMON)不同,sFlow是一种导出格式,它增加了关于被监视数据包的更多信息,并使用嵌入到网络设备中的sFlow代理转发被采样数据包,因此在功能和性能上都超越了当前使用的RMON、RMON II和NetFlow技术。sFlow技术的独特之处在于它能够在整个网络中,以连续实时的方式监视每一个端口,但不需要镜像监视端口,对整个网络性能的影响也非常小。
(5)手机插件:这个功能很有意思,我们可以用智能手机,随时随地监控我们的网络,如图18所示。
图18 手机插件
插件使用高清演示:http://www.tudou.com/programs/view/Jvq8HOBDOuI/
Ntop在病毒查杀方面的应用
某客户感染病毒案例:某天上班时间,网络性能突然下降,导致不少用户无法上网传输文件。首先怀疑是设备故障,后来又查找了线路是否有问题,但都能ping通从而一一排除,随后在Ntop检测的“IP协议”菜单中发现网络负荷维持在95%以上。在“Network Traffic:Data Sent”图表中显示局域网中一台机器发送大量的数据包,这台机器的IP地址和MAC也能找到。基本能断定这台机器中了病毒在发送大量的UDP包,从而造成了广播风暴,导致网络性能急速下降,如图19所示,是Ntop捕捉到的随机发送的地址列表。找到故障节点后,随后根据MAC-IP-墙点的对应,及时将这台机器隔离出网络进行杀毒处理。
图19 病毒随机发送数据包列表
除此之外,Ntop另一个重要功能是探测DDoS类型攻击,主要是它可以通过分析网路流量来确定网路上存在的各种问题,也可以用来判断是否有骇客正在攻击网路系统,还可以很方便地显示出特定的网路协议、佔用大量频宽的 主机、各次通信的目标主机、资料包的发送时间、传递资料包的延时等详细讯息。
最后谈谈下一代Ntop工具 ---Ntopng ,功能上有所增强,主要亮点还是图形化显示方面,只要大家掌握了Ntop的使用,能够理解Ntop各种菜单中显示参数的含义,那么对于Ntopng的使用将易如反掌,下面展示几个Ntopng的工作界面。
看了以上精美图片是不是有些心动?下载地址为:http://www.ntop.org/get-started/download/ 、Windows 64位系统安装地址为:http://www.nmon.net/packages/Windows/ 具体安装方法不再讲述。
上面介绍了一些Ntop工具的特点,不过还有很多由于篇幅限制没有给大家介绍,要知道Ntop这个工具只是Ossim平台的一个很小的模块,Ossim系统中集成的ntop可以将netflow数据存入mysql数据库,并可以再下次系统启动后继续从数据库中读取,不会影响新生成的数据分析图。要了解Ossim是什么,请参考我的其他有关博文或视频。