最新文章专题视频专题问答1问答10问答100问答1000问答2000关键字专题1关键字专题50关键字专题500关键字专题1500TAG最新视频文章推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37视频文章20视频文章30视频文章40视频文章50视频文章60 视频文章70视频文章80视频文章90视频文章100视频文章120视频文章140 视频2关键字专题关键字专题tag2tag3文章专题文章专题2文章索引1文章索引2文章索引3文章索引4文章索引5123456789101112131415文章专题3
当前位置: 首页 - 正文

网络流量分析

来源:动视网 责编:小OO 时间:2025-09-30 01:17:37
文档

网络流量分析

网络流量分析网络流量分析(一)原著:KarenFrederick以往关于入侵分析的文章都把注意力集中在可疑的数据包(TCP包或者保留的IP地址)上.但是弄清楚什么是正常的网络数据流也是非常重要的.知道什么是正常数据流最好的办法就是先产生一些正常的数据流,然后拦截数据包进行分析.在本文中,本人介绍一些截获数据包的工具并对截获数据进行一些分析,顺带说一下非正常的数据流.学习本文的前提在于你已经有TCP/IP的基础.现在已经有了很多截获数据包的工具,最有名的是UNIX下的TCPDUMP和WINDOW
推荐度:
导读网络流量分析网络流量分析(一)原著:KarenFrederick以往关于入侵分析的文章都把注意力集中在可疑的数据包(TCP包或者保留的IP地址)上.但是弄清楚什么是正常的网络数据流也是非常重要的.知道什么是正常数据流最好的办法就是先产生一些正常的数据流,然后拦截数据包进行分析.在本文中,本人介绍一些截获数据包的工具并对截获数据进行一些分析,顺带说一下非正常的数据流.学习本文的前提在于你已经有TCP/IP的基础.现在已经有了很多截获数据包的工具,最有名的是UNIX下的TCPDUMP和WINDOW
网络流量分析

网络流量分析(一) 

原著: Karen Frederick 

以往关于入侵分析的文章都把注意力集中在可疑的数据包(TCP包或者保留的IP地址)上.但是弄清楚什么是正常的网络数

据流也是非常重要的.知道什么是正常数据流最好的办法就是先产生一些正常的数据流,然后拦截数据包进行分析.在本文

中,本人介绍一些截获数据包的工具并对截获数据进行一些分析,顺带说一下非正常的数据流.学习本文的前提在于你已经

有TCP/IP的基础. 

现在已经有了 很多截获数据包的工具,最有名的是UNIX下的TCPDUMP和WINDOWS下面的WINDUMP.我在自己家98的机器上用

过WINDUMP2.1,用CABLE MODEM上网拦截数据包,不过需要指出的是:未经授权而拦截数据包时你可千万要小心啊. 

WINDUMP基础 

WINDUMP使用起来很简单,在它的站点上你可以找到使用文件.我经常用的命令是

WINDUMP –N –S,或者WINDUMP –n –S –v 或者WINDUMP –n-S-vv.-N是不显示计算机名而直接显示IP地址;-S是显示

TCP/IP的实际进程数,如果不选择这个选项,可能出现的就是近似值,比如:如果现在的进程数是87334271,下一秒变成了多

了一个,就会显示出来是87334272.-V和-VV是让机器显示更加全面的信息,显示诸如存活时间/IP的ID等信息. 

在开始剖析例子之前,我们先看一下WINDUMP记录的不同种类的数据包,这里有一个TCP的例子, 

13:45:19.184932 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.31: P 4138420250:4138420282(32) ack

87334272 win 32120 (DF) 

13:45:19.184932 [timestamp]    sshserver.xx.yy.zz.22 [source address and port]    >

mypc.xx.yy.zz.31: [destination address and port]    P [TCP flags]    4138420250:4138420282 

[sequence numbers]    (32) [bytes of data]    ack 87334272 [acknowledgment flag and number]    win 

32120 [window size]    (DF) [don't fragment flag is set] 

and then gives the number of data bytes in the packet: 

下一个是UDP的例子,里面也是该有的全有了:时戳/数据源地址和端口/目的地地址和端口,最后还招供了使用的协议(UDP)和

数据包里面的数据数 

15:19:14.490029 208.148.96.68.23079 > mypc.xx.yy.zz.6976:  udp 401

ICMP包格式也是类似的,只是注意一下最后,出现了存活时间和IP的ID,当然,你要使用-V选项 

18:33:45.9204 mypc.xx.yy.zz > .208.34.100: icmp: echo request (ttl 4, id 56693)

最后,WINDUMP也抓获ARP请求和回复.我们来看看:第一行是ARP请求;在这个例子里,MYPC把MAC地址为24.167.235.1的机器信

息发送MYPC.XX.YY.ZZ(MYPC的IP地址),第二行则显示了ARP回复,包含着24.167.235.1这个MAC地址. 

13:45:13.836036 arp who-has 24.167.235.1 tell mypc.xx.yy.zz 

13:45:13.841823 arp reply 24.167.235.1 is-at 0:xx:xx:xx:xx:xx 

UDP和ICMP例子 

上面我们已经看过了WINDUMP的记录格式,接下来我们看看数据包:MYPC使用DHCP来获得IP地址,而DHCP租用是定时更新的,这

个过程是从MYPC的68端口到DHCP机器的67端口,然后由DHCP服务器回送到MYPC 

18:47:02.667860 mypc.xx.yy.zz.68 > dnsserver.xx.yy.zz.67:  xid:0x8d716e0f C:mypc.xx.yy.zz [|bootp]

18:47:03.509471 dnsserver.xx.yy.zz.67 > mypc.xx.yy.zz.68:  xid:0x8d716e0f C:mypc.xx.yy.zz

Y:mypc.xx.yy.zz [|bootp] 

WINDUMP的一个好处就在于它可以自动识别协议和记录的其他信息,在这个例子里,他就识别出这是一个BOOTP,所以它不仅记

录了标准的UDP记录,而且记录了BOOTP的特定信息:XID,C,Y. 

现在我们来看看一些ICMP数据:一个例子就是你在98机器上使用TRACERT命令时出现的数据流,WINDOWS使用ICMP来识别系统之

间的跳(UNIX则使用UDP). 

WINDOWS在执行路由追踪时先向目的主机发送3个ICMP包,将存活时间设为1,这意味着当数据包到达第一跳时,数值会降为0.此

时.第一跳的机器会将ICMP超时错的信息回送到主机,主机就再发出3个ICMP包,将跳数设为2,所以这会就可以在时延结束前到

达第二跳的机器,第二跳的机器就又将时延错回送到主机,主机重新再发ICMP包,如此这般,直到找到目标机或者中间有一关将

数据流截断为止. 

which is one of the intermediate network devices between mypc and .208.34.100. 

这里就有一个路由追踪的例子,ICMP的时延值已经被设为1,2,3而且都已经过期,由于尚未到达最终目的机,WINDOWS开始发送

时延设为4的ICMP包,这里是第一个数据包和回复 ,请注意虽然第一个数据包的目的地址是.208.34.100,回复却来自于

24.95.80.133,这是MYPC和.208.34.100之间的一个网络设施的地址. 

18:33:45.9204 mypc.xx.yy.zz > .208.34.100: icmp: echo request (ttl 4, id 56693)

18:33:45.668638 24.95.80.133 > mypc.xx.yy.zz: icmp: time exceeded in-transit (ttl 252, id 0)

在收到时延错误信息的千分之一秒内,MYPC发出后续的ICMP包,在收到数据包的错误信息时,机器立即发送出第三个ICMP包: 

18:33:45.669968 mypc.xx.yy.zz > .208.34.100: icmp: echo request (ttl 4, id 56949)

18:33:45.690719 24.95.80.133 > mypc.xx.yy.zz: icmp: time exceeded in-transit (ttl 252, id 0)

18:33:45.691863 mypc.xx.yy.zz > .208.34.100: icmp: echo request (ttl 4, id 57205)

18:33:45.710787 24.95.80.133 > mypc.xx.yy.zz: icmp: time exceeded in-transit (ttl 252, id 0)

请注意这些数据相当近似,只是每一个ICMP回应请求中IP的ID号不同,这点很重要,我们应该对IP的ID号雷同的现象引起高度

的重视. 

检测SSH进程 

SSH是一个更加典型的数据流.我在工作站上装了个SSH的客户并连接到一个开了俺帐户的机器上. 

我有用于连接到SSH服务器上的SSH的客户端软件.我的机器并不直到SSH服务器的IP地址,所以他需要DNS的服务,不幸的是,我

的机器上又使不了DNS,所以没办法的办法之一就是先使ARP取得默认网关的MAC地址. 

13:45:13.836036 arp who-has gateway.xx.yy.zz tell mypc.xx.yy.zz 

13:45:13.841823 arp reply gateway.xx.yy.zz is-at 0:xx:xx:xx:xx:xx 

would expect with a DNS query: 

现在可以连接到网关上了,MYPC可以发出如下所示的DNS请求,请注意MYPC使用了大于1023的端口,要求建立到DNS的53端口的

连接,这种请求使用的是UDP协议 

13:45:13.841920 mypc.xx.yy.zz.3163 > dnsserver.xx.yy.zz.53:  1+ A? sshserver. (32)

DNS请求的结果是”1+A SSHSERVER”,我们可以认为这是一个IP地址的进程,因为A和+证明我们要求的是一个循环进程,1是

DNS请求数,用于匹配DNS的请求和回复,SSHSERVER则是我们要解析的名字 

以下是DNS服务器的回应: 

13:45:13.947208 dnsserver.xx.yy.zz.53 > mypc.xx.yy.zz.3163:  1 q: sshserver. 3/4/6 sshserver. CNAME

ssh2server., ssh2server. CNAME ssh3server., ssh3server. A sshserver.xx.yy.zz (283) 

回复情况由"1 q: sshserver. 3/4/6"体现,1是DNS的进程序号, "q: sshserver."是显示我们的请求,3/4/6是显示有3个回

复,4个标准记录和6个额外记录,和SSHSERVER连接的IP地址方在A后面 

现在我们知道了SSH服务器的IP地址,就可以连上去了,MYPC开始三次握手: 

13:45:13.956853 mypc.xx.yy.zz.31 > sshserver.xx.yy.zz.22: S 87334271:87334271(0) win 65535  (DF)

13:45:14.059243 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.31: S 4138420249:4138420249(0) ack 87334272

win 32120  (DF) 

13:45:14.059475 mypc.xx.yy.zz.31 > sshserver.xx.yy.zz.22: . 87334272:87334272(0) ack 4138420250

win 65535 (DF) 

三次握手完成,记住:即使2台机器在SSH端口建立了连接,我也没有登录到SSH服务器上去,在3次握手完成前机器间并没有数

据交流.SSH客户和服务器是建立了SSH进程,通过下面的数据包进行交流: 

13:45:19.184932 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.31: P 4138420250:4138420282(32) ack

87334272 win 32120 (DF) 

13:45:19.201814 mypc.xx.yy.zz.31 > sshserver.xx.yy.zz.22: P 87334272:87334314(42) ack 4138420282

win 65503 (DF) 

13:45:19.300401 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.31: . 4138420282:4138420282(0) ack 87334314

win 32120 (DF) 

13:45:19.300616 mypc.xx.yy.zz.31 > sshserver.xx.yy.zz.22: P 87334314:87334690(376) ack 4138420282

win 65503 (DF) 

13:45:19.303977 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.31: P 4138420282:4138421210(928) ack

87334314 win 32120 (DF) 

13:45:19.422141 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.31: . 4138421210:4138421210(0) ack 87334690

win 32120 (DF) 

13:45:19.488282 mypc.xx.yy.zz.31 > sshserver.xx.yy.zz.22: . 87334690:87334690(0) ack 4138421210

win 575 (DF) 

sshserver's port 22. 

我敲了密码,正式作为用户登录了进去,所有我使用SSH服务器所产生的数据流都很类似,在MYPC的3136端口和SERVER的22端

口之间,有PSH/ACK和ACK包. 

我从SSHSERVER注销的时候,服务器和客户机之间也有数据流产生,客户机收到来自服务器的最后数据: 

13:45:33.791528 mypc.xx.yy.zz.31 > sshserver.xx.yy.zz.22: P 87335442:87335474(32) ack 4138426586

win 359 (DF) 

13:45:33.902690 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.31: . 4138426586:4138426586(0) ack 87335474

win 32120 (DF) 

一旦收到这个数据,客户机就自动断开连接,服务器确认断开: 

13:45:33.902909 mypc.xx.yy.zz.31 > sshserver.xx.yy.zz.22: F 87335474:87335474(0) ack 4138426586

win 359 (DF) 

13:45:34.002179 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.31: . 4138426586:4138426586(0) ack 87335475

win 32120 (DF) 

13:45:34.003336 sshserver.xx.yy.zz.22 > mypc.xx.yy.zz.31: F 4138426586:4138426586(0) ack 87335475

win 32120 (DF) 

13:45:34.003492 mypc.xx.yy.zz.31 > sshserver.xx.yy.zz.22: . 87335475:87335475(0) ack 4138426587

win 359 (DF) 

所以,我们可以归纳出SSH连接的5个步骤: 

(1)使用ARP确认MYPC的默认网关的MAC地址 

(2)发出DNS请求确认SSH服务器的IP地址 

(3)MYPC的高端口和SSHSERVER低端口间的三次TCP握手 

(4)MYPC和SSHSERVER之间的数据交流,包括建立SSH连接,用户认证和数据传输. 

(5)MYPC和服务器间的TCP连接断开 

在这个例子里,SSH客户机使用的是高端口(高于1023).在一般连接里,客户机使用的高端口而服务器使用的是低端口,但是

需要引起注意的是很多SSH的客户机也使用低端口,所以千万别让一个和本文例子不同的情况把你给弄糊涂了 

在和SSH类似的连接里,有更多的如TELNET等协议 

结论 

对例行的网络流量进行分析是好好了解TCP/IP和我们环境的好办法,每次我拦截数据包时,我总能学到点新东西,如果你对

本文有了兴趣, 我强烈建议你生产/拦截并分析你自己的数据包, 我只是稍微进行 了一些介绍,后面将继续介绍更多的数

据流分析,尤其是FTP和HTTP. 

以下为作者简介: 

Karen Frederick is a senior security engineer for NFR Security. Karen has a B.S. in Computer Science and 

is completing her Master's thesis in intrusion detection through the University of Idaho's Engineering 

Outreach program. She holds several certifications, including Microsoft Certified Systems Engineer + Internet, 

Check Point Certified Security Administrator, and SANS GIAC Certified Intrusion Analyst. Karen is one of 

the authors and editors of "Intrusion Signatures and Analysis", a new book on intrusion detection that was 

published in January 2001. 

-------------------------------------------------------------------------------- 

网络流量分析(二) 

-------------------------------------------------------------------------------- 

(译者注: 作者在这里又把前面一篇文章开头的话说了半天,俺就全给他省了)在以前的文章里已经探讨了TCP/UDP/SSH的情况,

下面我们来看FTP,你应该有TC排队基础,熟知WINDUMP和TCPDUMP的报告格式,这些我们在前文里面已经介绍过了 

标准的FTP进程 

FTP建立进程的方式非常有趣.在检测FTP流量前,我从MYPC.XX.YY.ZZ到远程的FTP服务器建立一个连接,假设这个服务器是

FTP.microsoft.com(207.46.133.140) 

FTP进程和我们上文见到的SSH进程的建立方式有些类似,首先取得默认网关的MAC地址,只是这里这个过程在MYPC的ARP CACHE

里完成,不必劳烦动用ARP请求,这个结果会在DNS里面见到,请求获得目的FTP服务器的IP地址后,又取得一个DNS回复,注意这

些UDP包,客户机使用高端口而服务器使用低端口53用于DNS解析. 

13:50:46.490130 mypc.xx.yy.zz.3170 > dnsserver.xx.yy.zz.53:  1+ A? ftp.microsoft.com. (35)

13:50:46.500269 dnsserver.xx.yy.zz.53 > mypc.xx.yy.zz.3170:  1 q: ftp.microsoft.com. 1/4/4

ftp.microsoft.com. A 207.46.133.140 (215) 

现在MYPC有了服务器的IP地址: 207.46.133.140,立即于服务器的21端口建立TCP的三次握手 

13:50:46.5494 mypc.xx.yy.zz.3171 > 207.46.133.140.21: S 87666930:87666930(0)

win 65535  (DF) 

13:50:46.671920 207.46.133.140.21 > mypc.xx.yy.zz.3171: S 3058770520:3058770520(0)

ack 87666931 win 17520  (DF) 

13:50:46.672155 mypc.xx.yy.zz.3171 > 207.46.133.140.21: . 87666931:87666931(0)

ack 3058770521 win 65535 (DF) 

握手完成后,客户机开始和FTP服务器交换信息,服务器要求用户提供用户名,我敲了anonymous而且输入EMAIL作为密码,

这一系列交流是通过PUSH/ACK和ACK包完成的.下面就是一个例子,在例子里面,MYPC使用的是3171端口,服务器是21端口 

13:50:46.779273 207.46.133.140.21 > mypc.xx.yy.zz.3171: P 3058770521:3058770576(55)

ack 87666931 win 17520 (DF) 

13:50:46.6881 mypc.xx.yy.zz.3171 > 207.46.133.140.21: . 87666931:87666931(0)

ack 3058770576 win 65480 (DF) 

13:50:48.282313 mypc.xx.yy.zz.3171 > 207.46.133.140.21: P 87666931:87666947(16)

ack 3058770576 win 65480 (DF) 

13:50:48.3862 207.46.133.140.21 > mypc.xx.yy.zz.3171: P 3058770576:30587708(72)

ack 87666947 win 17504 (DF) 

13:50:48.495939 mypc.xx.yy.zz.3171 > 207.46.133.140.21: . 87666947:87666947(0)

ack 30587708 win 65408 (DF) 

和SSH相比,FTP有些差别:它在整个连接过程中采用进程控制.用户向服务器的请求和服务器对客户的回应都通过这个控制

通道进行.类似目录列表/上传和下载这样的数据传输则不通过这个通道进行,在这个例子里,客户机的3171端口个服务器的

21端口就是控制通道,当用户下载文件或者要求列出目录列表时,相应的数据传输实际上是通过另外一个连接进行的. 

当用户使用LS命令来要求列出目录时,相应的步骤开始了.服务器为了初始化一个到客户机的连接,它就必须知道和客户机的

哪个端口建立连接.在这个记录文件里,在第一行里: 客户机告诉服务器用于连接的IP地址和端口号;第二行则是服务器的回

复,告诉客户机IP地址和端口号被接受;第三行是客户机要求列出目录列表,第四行则是服务器告知客户机自己正在初始化连接 

13:50:53.501031 mypc.xx.yy.zz.3171 > 207.46.133.140.21: P 87666966:87666994(28)

ack 3058770765 win 65291 (DF) 

13:50:53.607175 207.46.133.140.21 > mypc.xx.yy.zz.3171: P 3058770765:3058770795(30)

ack 87666994 win 17457 (DF) 

13:50:53.632708 mypc.xx.yy.zz.3171 > 207.46.133.140.21: P 87666994:87667000(6)

ack 3058770795 win 65261 (DF) 

13:50:53.737852 207.46.133.140.21 > mypc.xx.yy.zz.3171: P 3058770795:3058770850(55)

ack 87667000 win 17451 (DF) 

为了传输数据(,在这里是客户机从服务器取得的目录列表,),服务器初始化了一个从自己的20端口到客户机指定端口(这里

是3172)的连接,我们看到三次握手建立,服务器开始向客户机发送PUSH/ACK数据包,这里面就有文件列表,因为他正好小到

可以放进一个包里. 

13:50:53.738024 207.46.133.140.20 > mypc.xx.yy.zz.3172: S 3061133541:3061133541(0)

win 16384  (DF) 

13:50:53.738200 mypc.xx.yy.zz.3172 > 207.46.133.140.20: S 87674104:87674104(0)

ack 3061133542 win 65535  (DF) 

13:50:53.844704 207.46.133.140.20 > mypc.xx.yy.zz.3172: . 3061133542:3061133542(0)

ack 87674105 win 17520 (DF) 

13:50:53.850833 207.46.133.140.20 > mypc.xx.yy.zz.3172: P 3061133542:3061133706(1)

ack 87674105 win 17520 (DF) 

这时,出现了2个的连接: 

一个是客户机的3171和服务器的21端口的连接 

一个是客户机的3172和服务器的20端口的连接 

服务器一旦完成目录列表的传输,就采用发送FIN/ACK包数据的方式准备结束连接.需要注意的是服务器仅仅在自己的20端

口上结束了连接而不是21端口上的控制通道.当数据传输连接截断后,控制通道内仍然有数据传输.下面记录的第五行就显

示了控制通道内一个24字节的传输,从客户机的角度看来,是一个”226 TRANSFER COMPLETE”的显示,表示传输成功. 

13:50:53.850981 207.46.133.140.20 > mypc.xx.yy.zz.3172: F 3061133706:3061133706(0)

ack 87674105 win 17520 (DF) 

13:50:53.851068 mypc.xx.yy.zz.3172 > 207.46.133.140.20: . 87674105:87674105(0)

ack 3061133707 win 65371 (DF) 

13:50:53.5937 mypc.xx.yy.zz.3171 > 207.46.133.140.21: . 87667000:87667000(0)

ack 3058770850 win 65206 (DF) 

13:50:53.903415 mypc.xx.yy.zz.3172 > 207.46.133.140.20: F 87674105:87674105(0)

ack 3061133707 win 65371(DF) 

13:50:54.002060 207.46.133.140.21 > mypc.xx.yy.zz.3171: P 3058770850:3058770874(24)

ack 87667000 win 17451 (DF) 

13:50:54.009333 207.46.133.140.20 > mypc.xx.yy.zz.3172: . 3061133707:3061133707(0)

ack 87674106 win 17520 (DF) 

13:50:54.196818 mypc.xx.yy.zz.3171 > 207.46.133.140.21: . 87667000:87667000(0)

ack 3058770874 win 65182 (DF) 

如果我从服务器下载数据,我们会看见相同的数据进程,服务器会从自己的20端口到客户机的新的高端口建立一个连接,

进行三次握手,数据是通过这个连接进行传输,传输一旦完成,连接即告断开. 

在FTP进程里,在同一时间内可能存在多个数据连接,每建立一个连接,一个新的客户机的端口就被打开使用,仅仅看到进程

的一部分的话,可能会被认为是一个端口扫描,尤其是当客户机端口有保护时.所以遇见这种情况时,你就应该仔细看看数

据传输的情况以判断到底是端口扫描还是仅仅只是FTP连接. 

被动的FTP进程 

FTP的另一特殊之处在于服务器要初始化和客户机的连接,而不是由客户机初始化所有与服务器的连接,由于他的这种特性,

可能会导致一些防火墙和包过滤器的过激反应.为了解决这个问题,用户可以采用被动FTP来取代标准FTP. 

被动FTP在开始时个一般的FTP一样:客户机先初始化一个从服务器21端口到自己高端口的连接,当需要开放一个数据传输

通道是,服务器向客户机发送一个可供选择的高端口号,客户机则初始化从自己的高端口和服务器的高端口的连接.所以在

使用被动FTP时,20端口从不被使用,所有数据传输均通过高端口进行. 

这里有一个被动FTP工作的例子,信息源是一台OPENBSD2.8,截获手段是TCPDUMP,OPENBSD的客户端的默认设置是使用被动FTP 

首先,被动的FTP和普通的FTP一样,客户机初始化一个从自己的高端口到服务器21端口的TCP连接(请注意我这里用的是OPENBSD

下的TCPDUMP而不是WINDOWS下面的WINDUMP,所以记录看来有很大的差别) 

15:57:28.005993 bsdpc.xx.yy.zz.28348 > 207.46.133.140.21: S 157025335:157025335(0)

win 16384 

15:57:28.099136 207.46.133.140.21 > bsdpc.xx.yy.zz.28348: S 1286994806:1286994806(0)

ack 157025336 win 17520  (DF) 

15:57:28.099193 bsdpc.xx.yy.zz.28348 > 207.46.133.140.21: .

ack 1286994807 win 17376 

15:57:28.193361 207.46.133.140.21 > bsdpc.xx.yy.zz.28348: P 1286994807:1286994862(55)

ack 157025336 win 17520 (DF) 

15:57:28.193413 bsdpc.xx.yy.zz.28348 > 207.46.133.140.21: . ack 1286994862 win 17376

(N.B.: Several additional PUSH/ACK and ACK packets have been omitted.) 

(作者原注:这里省略了好多PUSH/ACK和ACK数据包) 

the client simply acknowledges that it has received the packet with the port information. 

接下来,我键入LS以取得文件列表,在第一个数据包里,我的FTP客户机告诉服务器要使用被动FTP,第二个包则是服务器的

回应,包括了分配以用于连接的服务器IP地址和端口号,在第三个包里,客户机确认已经收到了包含端口信息的数据包. 

15:57:36.243722 bsdpc.xx.yy.zz.28348 > 207.46.133.140.21: P 157025383:1570253(6)

ack 1286995115 win 17376 

15:57:36.342188 207.46.133.140.21 > bsdpc.xx.yy.zz.28348: P 1286995115:1286995166(51)

ack 1570253 win 17467 (DF) 

15:57:36.342213 bsdpc.xx.yy.zz.28348 > 207.46.133.140.21: .

ack 1286995166 win 17325 

现在客户机知道使用服务器的哪一个端口,从另一高端口建立了一个倒服务器的连接,在这里是端口24626,服务器使用端口

3668,三次握手建立,我们就看见服务器21端口和客户机28348端口间的控制通道里开始有数据传输 

15:57:36.342370 bsdpc.xx.yy.zz.24626 > 207.46.133.140.3668: S 157871686:157871686(0)

win 16384 

15:57:36.440039 207.46.133.140.3668 > bsdpc.xx.yy.zz.24626: S 1292391804:1292391804(0)

ack 157871687 win 17520  (DF) 

15:57:36.440076 bsdpc.xx.yy.zz.24626 > 207.46.133.140.3668: .

ack 1292391805 win 17376 

15:57:36.440167 bsdpc.xx.yy.zz.28348 > 207.46.133.140.21: P 1570253:157025395(6)

ack 1286995166 win 17376 

15:57:36.542608 207.46.133.140.21 > bsdpc.xx.yy.zz.28348: P 1286995166:1286995220(54)

ack 157025395 win 17461 (DF) 

15:57:36.542638 bsdpc.xx.yy.zz.28348 > 207.46.133.140.21: . ack 1286995220 win 17322

数据传输连接已经建立,文件列表得以传输,如果你现在看看依照时戳的记录,似乎是在数据传输结束前(第三行)服务器就

终止了连接(第一行),如果你再看下去,你就会发现收到的数据包是杂乱无章的,0字节的数据包后于1167字节的数据包发出,

但是却先被收到,当你分析记录时按时戳顺序是很有用的,但是你最好注意序列号. 

15:57:36.547340 207.46.133.140.3668 > bsdpc.xx.yy.zz.24626: F 1292392972:1292392972(0)

ack 157871687 win 17520 (DF) 

15:57:36.547367 bsdpc.xx.yy.zz.24626 > 207.46.133.140.3668: .

ack 1292391805 win 17376 

15:57:36.549363 207.46.133.140.3668 > bsdpc.xx.yy.zz.24626: P 1292391805:1292392972(1167)

ack 157871687 win 17520 (DF) 

15:57:36.549396 bsdpc.xx.yy.zz.24626 > 207.46.133.140.3668: .

ack 1292392973 win 16209 

15:57:36.551374 bsdpc.xx.yy.zz.24626 > 207.46.133.140.3668: F 157871687:157871687(0)

ack 1292392973 win 17376 

15:57:36.635184 207.46.133.140.21 > bsdpc.xx.yy.zz.28348: P 1286995220:1286995244(24)

ack 157025395 win 17461 (DF) 

15:57:36.635211 bsdpc.xx.yy.zz.28348 > 207.46.133.140.21: .

ack 1286995244 win 17376 

15:57:36.7798 207.46.133.140.3668 > bsdpc.xx.yy.zz.24626: .

ack 157871688 win 17520 (DF) 

小结 

我们已经深入分析了FTP,FTP用2种方式连接:数据控制:控制通道用于发送客户机到服务器的命令请求和服务器的回应.FTP

客户机初始化一个到服务器的控制连接.在标准FTP里,服务器初始化所有的到客户机的连接,在被动FTP里,客户机初始化所

有的到服务器的数据传输.

MRTG Router 流量分析架设法 

流量分析的用途: 

MRTG 流量分析, 是一个可以从支援 SNMP 网路设备中取得流量资讯, 然後分析这些资讯, 绘成网页 格式图表的工具. 它可以让网管人员, 很快地藉由流量负载, 来判断网路或设备发生问题的可能原 因. 

架设前的注意事项: 

本讲义, 假设您打算把流量分析, 放在 /home/httpd/html/mrtg 这个目录下, 以下均以这个目录为 说明的示位置, 如果您打算按本讲义说明来架设贵校的流量分析, 请在 /home/httpd/html 下,开设 一个 mrtg 的子目录. 

本讲义中的 163.26.167.126 这个 router 的 IP 只是个示, 您应该将它换成贵校 router 的 IP. 

确定主机中已安装了 GD Library (下 rpm -q gd可查知) 

架设步骤: 

取得 MRTG 的软体:目前(2000/03)最新版本 2.8.12 

ftp://linux.tnc.edu.tw/pub/Sysop/MRTG/mrtg-2.8.12.tar.gz 

MRTG 作者的站台: 

http://ee-staff.ethz.ch/~oetiker/webtools/mrtg/mrtg.html 

解压, 并进入解压後的目录中: 

tar xvzf mrtg-2.8.12.tar.gz 

cd mrtg-2.8.12 

执行设定程式: 

./configure 

执行编译及相关设定Perl路径的动作: 

make 

拷贝相关目录至 /home/httpd/html/mrtg 中 

a. 将 mrtg 的一些标图档拷贝至 /home/httpd/html/mrtg 目录中 

cp images/* /home/httpd/html/mrtg 

b. 将 run 目录拷贝至 /home/httpd/html/mrtg 中 

cp -R run /home/httpd/html/mrtg 

产生 mrtg 的设定档: 

a. 进入 run 这个目录 

cd /home/httpd/html/mrtg/run 

b. 开始产生设定档啦! 

./cfgmaker public@163.26.167.126 > mrtg.conf

其中 @ 之後的 IP 即是贵校 router 的 IP, 记得将 163.26.167.126 换成贵校的. 

> mrtg.conf 是说将输出内容存成 mrtg.conf 这个档案. 

修改 mrtg.conf 设定档: 

在 mrtg.conf 的上方, 加入 WorkDir 这个关键字: 

vi mrtg.conf 

加上 WorkDir: /home/httpd/html/mrtg 

以下是部份内容样本: 

WorkDir: /home/httpd/html/mrtg 

###################################################################### 

# Description: SW/NBSI-NW,11.2 

# Contact: 

# System Name: 

# Location: 

#..................................................................... 

Target[163.26.167.126.1]: 1:public@163.26.167.126 

MaxBytes[163.26.167.126.1]: 12500000 

Title[163.26.167.126.1]: 3Com_NETBuilderETH/1-1 

PageTop[163.26.167.126.1]: 

Traffic Analysis for 3Com_NETBuilderETH/ 1-1 

System: 3Com NetBuilderETH

in jmjh.tnc.edu.tw 

Maintainer:

OLS3 

Interface:

3Com_NETBuilderETH/1-1 (1) 

IP:

163.26.167.126 

Max Speed:

12.5 MBytes/s (ethernetCsmacd) 

开始执行 mrtg : 

./mrtg mrtg.conf 

第一次执行时, 可能会有很多 Warning 的讯息, 可以不必理会它, 无妨! 

此时, 您会在 /home/httpd/html/mrtg 中, 发现 mrtg 已帮您产生了许多流量分析的显示图表. 其 中 163.26.167.126.1.html 是主要的显示档. 

163.26.167.126 是 router 的 IP, 1 是介面 port 号, 两者合起来形成一个 label. 

让 mrtg 每五钟执行一次: 

为了让 mrtg 可以持续而完整的取得受测介面的资料, 通常我们会将 mrtg 设定成每五分钟就执行 一次, 这就要仰仗 cron daemon 了. 

a. 设定 root 的 crontab: 

crontab -u root -e 

它会带您进入 vi 模式(您看! 把 vi 练好真的很重要吧?!) 

b. 填入以下内容: 

*/5 * * * * /home/httpd/html/mrtg/run/mrtg /home/httpd/html/mrtg/run/mrtg.conf 

然後存档离开. 

在 /home/httpd/html/mrtg 中产生 index.html 档: 

cd /home/httpd/html/mrtg 

ln -s 163.26.167.126.1.html index.html 

往後只要用览浏器观看 http://贵校网址/mrtg 就可以看到流量分析了.

当然其它介面的流量分析档(例如 163.26.167.126.2.html) 也有参考价值, 请自行在贵校网页中加 上连结位置吧. 

MRTG 还有许多细节您必须去研读的, 请参考:mrtg-conf.htm 

疑难问题: 

在架设过程中, 您可能会遇到以下情况: 

loading for gcc... gcc

checking whether the c compiler (gcc) works... yes

checking whether the c compiler (gcc) is a cross-compiler... no

checking whether we are using GNN c... yes

checking whether gcc accepts -g...yes

checking how to run the preprocessor...gcc-E

checking make sets ${MAKE}... yes

checking per... /usr/bin/perl

checking gdImageGif in -Igd ... no

checking gdImagePng in -Igd ... no

**The GD libraryis required for rateup to compile.................... 

下 make 之後, 出现:

make:***NO targets. stop. 

这表示您的 Server 中尚未安装 GD Library. GD Library 在 RedHat 光碟片中便有, 请先 用 rpm 指令安装 GD, 之後再来架设 mrtg. 

网络流量监控器mrtg全攻略

简介

 Mrtg(Multi Router Traffic Grapher,MRTG)是一个监控网络链路流量负载的工具软件, 它通过snmp 协议从设备得到设备的流量信息,并将流量负载以包含PNG格式的图形的HTML 文档方式显示给用户,以非 常直观的形式显示流量负载(可以在网站http:// www.stat.ee.ethz.ch/mrtg/得到mrtg的输出结果示例)。

关于mrtg的最详细的信息可以从http://people.ee.ethz.ch/~oetiker/webtools/mrtg得 到。

mrtg具有以下特色:

可移植性:目前可以运行在大多数Unix系统和Windows NT之上。 

源码开放:Mrtg是用perl编写的,源代码完全开放。 

高可移植性的SNMP支持:Mrtg采用了Simon Leinen编写的具有高可移植性的SNMP实现模 块,从而不依赖于 操作系统的SNMP模块支持。 

支持SNMPv2c:MRTG可以读取SNMPv2c的位的记数器,从而大大减少了记数器回转次数。

可靠的接口标识:被监控的设备的接口可以以IP地址、设备描述、SNMP对接口的编号及 Mac地址来标识。 

常量大小的日志文件:MRTG的日志不会变大,因为这里使用了独特的数据合并算法。 

自动配置功能:MRTG自身有配置工具套件,使得配置过程非常简单。 

性能:时间敏感的部分使用C代码编写,因此具有很好的性能。 

PNG格式图形:图形采用GD库直接产生PNG格式。 

可定制性:MRTG产生的web页面是完全可以定制的。 

mrtg的主页是http://www.mrtg.org,可以从这里下载软件。

Mrtg兼容性

mrtg软件可以运行在以下的操作系统上:

Linux 1.2.x, 2.0.x, 2.2.x, 2.4.x (Intel and Alpha and Sparc and PowerPC) 

Linux MIPS, Linux S/390 

SunOS 4.1.3 

Solaris 2.4, 2.5, 2.5.1, 2.6, 7, 8 

AIX 4.1.4, 4.2.0.0, 4.3.2 

HPUX 9,10,11 

WindowsNT 3.51, 4.0, 2k, XP

IRIX 5.3, 6.2 

BSDI BSD/OS 2.1, 4.x, 3.1 

NetBSD 1.5.x 

FreeBSD 2.1.x, 2.2.x, 3.1, 3.4, 4.x 

OpenBSD 2.x 

Digital Unix 4.0 

SCO Open Server 5.0 

Reliant UNIX 

NeXTStep 3.3 

OpenStep 4.2 

Mac OS X 10.1 

And about and other sensible Unix

可以通过mrtg监控的设备(目前市场上绝大多数产品都支持SNMP协议,只要支持SNMP协议的设备就都可以 使用MRTG来监控):

3Com NETBuilders, LANplex 6012 and 2500 

3Com etherswitches and hubs 

3Com Linkswitch 1000 1100 3300 

3Com Superstack II switch 3900, 3300 MX 

3Com 812 ADSL Router 

Alantec powerhub 7000 

Allied Telesyn - 8224XL and 8324XL 24 port managed switches 

Annex terminal server 

Asante Hub 

Ascend (Lucent) Max 600, [24]00x, Pipeline 50, TNT, APX-8000, MAX-6000 

Alcatel (Assured Access) x1600, OmniSR9, OmniCore 5022 

AT&T Wave Point, Lan 

BayNetworks (Wellfleet) 7.80 and up, BayStack 350T, Instant Internet, see Nortel 

BreezeCom AP,SA 

Cabletron ESX-820 Etherswitch, Smartswitch 2000,6000 and router 

Centillion Token Ring SpeedSwtich 100 (IBM 8251 Token Ring Switch) 

About every Cisco Kit there is ... 

CentreCOM 8116 

Compatible Systems 

DECBridge 620, DEC 900EF, 900EE, Gigaswitch 

ELSA Lancom L 11 (Wireless Router) 

Enterasys Matrix E5, VH-4802 and VH-2402S Switche 

Ericsson Tirgis Series RAS Servers 

Extreme Networks -- Blackdiamond 6808 & Alpine 3808 Layer 3 Switches 

Fore ASX200 ATM 

FlowPoint 2200 ATM/DSL Router 

formula 8200 series 

Foundry BigIron 8000 Gigabit, FastIron Switch, ServerIron Switch 

Cable Modems from Lancity, Terayon and DOCSIS 

HP - network interfaces, disks, database Informix 

HP AdvanceStack/Procurve Switch 2000 and 2524, AdvanceStack Switch 200 

HP Procurve Switches , model 4000m, 2424m and 2400m 

IBM 8260 swtich (with 155MB ATM blades installed), IBM 2210 ISDN Routers. 

Intel switches (details) -- 510T, Intel Gigabit Server adapter 

IMV Victron NetPro 3000 UPS 

Kentrox Pacesetter Pro 

Lantronix Bridge 

Lucent/Xedia Access PointT 450, 1000 

Livingston (Lucent) IRX 3.2.1R, IRX 114, PM2E(R) PM3-2E OR-U 

Motorola 6560 Regional Node, SB3100 CableModem, 320, 30 and 55 routers 

Morningstar terminal servers/routers 

MGE (Merlin Gerin) UPSes (details) 

Network Appliance 

Netopia R7100C SDSL 

Netscreen 5 / 10 / 100 

Nortel Networks, Bay Routers BCN, BLN, ASN, ARN, AN, Passport 1k and Passport 8k3 series L3 switches, BayStack 450 L2 switches. 

Nortel Networks, Accelar L3 Switches 

Nokia IP 330/440/650 

Nbase ethernet switch 

Novell 3.11, 4.11 

Rmon probes 

SGI-Server (Irix 5.3) 

Any server server running HP-UX, Ultrix, Solaris, SunOS, OSF, NetBSD, FreeBSD, BSDi, Linux, AIX, OpenBSD, Irix or even Windows operating systems (badly), when using NET-SNMP (former UCD-SNMP). 

Apple Mac (An snmp service is included on the OS CD >= 8.5 )

Shiva Accesport 

Solaris Server 

Squid Web cache 

US-Robotics Total Control Modemracks 

Wellfleet (later Bay Networks): see Nortel routers 

WaveWireless SpeedLan 8x00 RF Routers 

WinNT, MS Proxy 

Xylan (today Alcatel) 4024C 24port 10/100 OmniStack Switch, 9k devices, including ATM links. 

Yamaha rt100i 

Zyxel Prestige P310, 153X, 2. 

不支持mrtg的设备:

D-Link switches (details) 

SNMP简介

 一个网络管理系统一般要包含以下几个元素:①若干个(可能很多个)需要被管理的网络设 备节点,如 路由器、服务器等设备,每个节点上都运行着一个称为设备代理(agent)的应 用进程,其实现对被管理设 备的各种被管理对象的信息如流量等的搜集和对这些被管对象 的访问的支持;②至少一个管理工作站,该 管理站运行着管理平台应用系统,实现为管理 员提供对被管设备的可视化的图形界面,从而使管理员可以 方便的进行管理;③一个管理 协议,用来定义设备代理和管理工作站之间管理信息传送的规程。其中管理 协议的操作是 在管理框架下进行的,管理框架定义了和安全相关的认证,授权,访问控制和加密策略等各 种安全防护框架。 

 在运行TCP/IP协议的互联网环境中,管理协议标准是简单网络管理协议(Simple Network Management Protocol,SNMP),其定义了传送管理信息的协议消息格式及管理站和设备代 理相互之间进行消息传送的规 程。 

 出于业界对网络管理协议标准化的迫切要求的驱动,IETF于1990发布了SNMPv1的正式RFC 文档;其设 计思想重点放在保证协议的简单性、灵活性和可扩展性上,并希望把SNMP作为 一个过渡性的网管协议来作 为实现对互连的网络设备进行管理时遵循的标准,待OSI的网 络管理协议—CMIP的开发、实现和标准化成 熟和完善到可以在业界推广之后,再用CMIP来 替换SNMP。但是由于各种的原因,CMIP并没有替代SNMP,而 SNMP发展为业界的标准。 

SNMP一共发展有3个主版本,分别为SNMPv1 ,SNMPv2和SNMPv3。其中SNMPv2又分为若干个 子版本,其中 SNMPv2c应用最为广泛: 

SNMPv1: 是第一个正式协议版本,在RFC1155-RFC1158中定义,该版本采用了基于共同体 名的安全机制; 

SNMPv2c: 这个版本被称为基于共同体名的SNMPv2,使用基于共同体名的安全机制和 SNMPv2p做出的协议操 作方面的扩充,由RFC1901-RFC1906定义; 

SNMPv3: 该协议版本采用基于用户的安全机制,其安全机制是在SNMPv2u和SNMPv2*基础上 进行大量的评议 以后进行了更新,并且对协议机的逻辑功能模块的进行了划分而保证了良 好的可扩充性,由RFC2271- RFC2275所定义。 

运行SNMP管理系统的原理及SNMP协议 

 使用SNMP协议的网络管理系统管理结构工作一般包括:管理进程通过定时向各个设备的设备代理进程 发送查询请求消息(以轮询方式),来跟踪各个设备的状态;而当设备出现异常事件如设备冷启动等时,设备代理进程主动向管理进程发送陷阱消息,汇报出现的异常事 件。这些轮询消息和陷阱消息的发送和接受 规程及其格式定义都是由SNMP协议定义的;而被管理设备将其各种管理对象的信息都存放在一个称为管理信息库(Management Information Base)库结构中。 

 其中SNMP协议是运行在UDP协议之上,它利用的是UDP协议的161/162端口。其中161端口被 设备代理监 听,等待接受管理者进程发送的管理信息查询请求消息;162端口由管理者进 程监听等待设备代理进程发 送的异常事件报告陷阱消息,如Trap。 

 设备的所有的需要被管理的信息被看作一个各种被管理对象的集合,这些被管理对象由 OSI定义在一 个被称作管理信息库(Management Information Base,MIB)的虚拟的信息库 中。 

管理对象库MIB 

 MIB是一个按照层次结构组织的树状结构(定义方式类似于域名系统),管理对象为定义 为树中的相 应叶子节点。管理对象是按照模块的形式组织,每个对象的父节点表示该种对 象属于上层的哪一个模块。 而且OSI为树中每一层的每个节点定义唯一的一个数字标识, 每层中的该数字标识从1开始递增,这样树中 的每个节点都可以用从根开始到目的节点的 相应的标识对应的一连串的数字来表示,如1.3.6.1.2.1.1表 示了MIBII中系统组子树,而 1.3.6.1.2.1.1.1.0表示系统组中的系统描述(sytem Descrption)对象。每个 对象的一连 串数字表示被称为对象标识符(Object Indentifier,OID)。 

 相关的一组对象的集合被定义为一个MIB模块。这些模块使用OSI的抽象语法标记 (Abstract Syntax Notation One,ASN.1)的一个子集写成。该子集被定义为管理信息结 构(Management Information,SMI)。

SNMP的消息在发送和传输时消息是采用基本编码规则(BER)对消息进行编码。

SNMP基本的标准MIB库是MIBII,具体请参考RFC 1213。 

SNMP协议操作 

SNMP提供有三类操作,分别为Get,Set和Trap。

 Get操作实现对被管理对象所表示的管理信息的读操作。在SNMPv1中,GET操作具体一共有 两种形式

 Get和GetNext操作: Get操作指示直接读取操作参数指定的OID所表示的被管理对象的管 理信息 值。GetNext操作指示读取操作参数指定的OID所表示的被管理对象在MIB树中按照 字典顺序的下一个被管 理对象的管理信息的值。在SNMPv2中,增加了一种GetBulk操作, 其是Get和GetNext的综合,是为了提高 对被管理信息的访问的效率而增加的。

 Set操作实现对被管理对象的管理信息进行写操作,其实现直接对操作参数指定的OID所表 示的被管理 对象对应的管理信息的值的设置。

 前面几种消息是由管理工作站主动实现对被管理设备进行轮询访问时发出以得到被管理设 备的各种信 息;而在被管理设备出现异常事件需要及时向管理工作站报告时,就需要Trap 操作,该操作实现被管理设 备向管理工作站报告设备上出现的异常事件,如网络接口出现 故障或恢复工作,设备重新启动等信息。另 外在SNMPv2中新增加了一种Inform操作来实现 管理站与管理站之间的通信。 

 其中上述操作的消息都可以在操作参数中一次指定一个或多个管理对象OID信息,也就是 说一个消息 一次可以实现对多个被管理对象的操作。 

SNMPv1和SNMPv2c采用了一种简单的基于共同体名的安全机制: 

 管理站和被管设备上都存储有该充当密码作用的共同体名;消息发送者(一般是管理者)在 要发送的消 息中的共同体名字段中填入对应于接收者的共同体名,然后以明文方式在网络上发送消息,接收方(被管 理设备)接收到消息以后,如果消息格式是正确的,则读取该字 段,与自身保存的共同体名相比较,来实 现对发送消息者的认证。在一些实现中,对应于 每个共同体名还有一个机器地址列表,来表示只有地址在 这个列表中的机器使用该共同体 名发送的消息才认为是可信的。这里的共同体名就担任密码的作用。同时 对应于每个共同 体名都有一个访问控制权限,可能值为读或读写。只有请求的操作和使用的共同体名的权 限一致才允许进行。 

详细情况请参考RFC 1157、RFC 1902、RFC 2273、RFC 2274。 

MRTG的安装配置 

安装支持软件 

我们这里以Rehat7.2为例子讨论MRTG的配置和安装。要安装MRTG需要安装以下软件 包:GCC、Perl、gd、libpng和zlib。可以使用下面的命令来判断系统是否安装有这些软 件包:

[root@mail doc]# rpm -qa|grep gd

gd-1.8.4-4

gd-devel-1.8.4-4

[root@mail doc]# rpm -qa|grep perl

perl-5.6.0-17

mod_perl-1.24_01-3 

[root@mail doc]# rpm -qa|grep libp

libpng-1.0.12-2

libpng-devel-1.0.12-2 

[root@mail doc]# rpm -qa|grep zlib

zlib-1.1.3-24

zlib-devel-1.1.3-24

[root@mail doc]# rpm -qa|grep gcc 

gcc-2.96-98

gcc-g77-2.96-98

gcc-c++-2.96-98 

如果发现哪个软件包没有安装,只需直接从redhat安装盘安装对应的rpm包即可,例如:

root@mail doc]# rpm -ivh zlib-1.1.3-24 zlib-devel-1.1.3-24 

MRTG的安装 

目前mrtg的最新版本为2.9.17: 

[root@mail src]# tar xvfz mrtg-2.9.17.tar.gz 

[root@mail src]# cd mrtg-2.9.17

[root@mail mrtg-2.9.17]# ./configure --prefix=/usr/local/mrtg-2

[root@mail mrtg-2.9.17]# make

[root@mail mrtg-2.9.17]# make install 

到现在我们就已经正确地安装了MRTG系统。 

配置SNMP服务 

 对于不同的设备,配置SNMP支持的方法是不一致的,具体请参的随机文档,一般里 面都有详细 的介绍。这里我们讨论在Linux环境下配置SNMP服务器,以实现对本机流出流 入数据的分析和报表(我的应 用环境是使用Linux带动一个小型局域网上网,监控本机进出 流量)。 

在linux环境下安装snmp软件包是很容易的,只需要安装相应的软件包即可: 

[root@mail doc]# rpm -qa|grep snmp 

ucd-snmp-4.2.1-7

ucd-snmp-utils-4.2.1-7

ucd-snmp-devel-4.2.1-7 

这时候运行下面的命令: 

[root@mail doc]# /etc/rc.d/init.d/snmpd start

Starting snmpd: [ OK ] 

如果命令输出如上所示,就表示snmp服务器启动正常。

为了配合mrtg使用,还要修改snmpd的配置,以使其允许mrtg读取其interface(网络接口) 流量数据。 

vi /etc/snmp/snmpd.conf

#view systemview included mib2

的内容修改为:

view mib2 included .iso.org.dod.internet.mgmt.mib-2 fc

然后将

access notConfigGroup "" any noauth exact systemview none none

修改为:

access notConfigGroup "" any noauth exact mib2 none none

然后再重新启动snmpd:

/etc/rc.d/init.d/snmpd restart 

配置MRTG 

 下一步就是要配置mrtg,实现对网络设备的监控。mrtg的配置信息都是保存在mrtg.cfg文 件中的,创 建该文件并且在其中定义希望的监控特性。幸运的是一般不需要直接手工编辑 该配置文件,因为mrtg软件 包提供有cfgmaker配置工具,这是一个脚本文件,根据运行参 数可以自动生成mrtg.cfg配置文件。在mrtg 源码目录的bin子目录下你可以得到该工具。 

 首先在www服务器的DocumentRoot目录下创建一个子目录用来存放mrtg生成的统计文件, 这里假设 apache是默认安装,因此DocumentRoot在/var/www/html目录下,我们在该目录下创建子目录mrtg: 

mkdir /var/www/html/mrtg 

这里的/var/www/html/mrtg就是mrtg的工作目录。下面就生成mrtg配置文件: 

cfgmaker --global "WorkDir: /var/www/html/mrtg" 

--global "Options[_]: growright,bits" 

--ifref=ip 

--output /etc/mrtg.cfg 

public@192.168.0.1 

 这里的--global参数表示后面的选项是对后面指定的设备都是有效的(如果希望对多个设 备进行监控 时,该参数就会发生作用)。WorkDir用来指示mrtg的工作目录;Options用来 指定一些特定的选项,这里 的growright,bits是用来指定默认options配置的,对于常见 的应用来说默认options配置就可以满足需求 了。ifref用来指示用什么选项来标识设备接 口,这里指定使用IP地址来标识网络设备接口。ifref可以指 定为 nr、ip、eth、descr、name。nr表示用接口在MIBII库中Interface接口的ifIndex来识别 接口;IP表 示使用ip地址识别接口;eth表示使用接口的物理地址标识接口;descr表示使 用接口的描述信息来标识接 口;name表示使用接口名来标识接口。一般来说ip地址是唯一 的,但是有些情况下接口是没有IP地址的, 例如交换机就会出现这种情况。对于接口来说 nr(接口号)是唯一的,因此对于一般情况使用IP地址就可以 了,而对于其他一些情况则需 要采用nr了。"--output /etc/mrtg.cfg"标识将生成的配置文件存放在/ etc/目录 下。"public@192.168.0.1"表示监控IP地址为192.168.0.1的设备,采用public作为共同 体名通 过snmp协议来监控设备192.168.0.1。 

对于希望使用mrtg来对多个设备进行监控的情况,举例如下: 

cfgmaker --global "WorkDir: /var/www/html/mrtg" 

--global "Options[_]: growright,bits" 

--ifref=descr 

--ifdesc=alias 

public@router1.place.xyz 

public@router2.place.xyz 

--global "Options[_]: growright" 

--ifref=name 

--ifdesc=descr 

public@switch1.place.xyz 

--ifdesc=name 

public@switch2.place.xyz > mrtg.cfg

 这里指示监控四个设备:router1.place.xyz、router2.place.xyz、switch1.place.xyz

和switch2.place.xyz,所有的设备都采用共同体名public来进行监控。并且两个路由器 采用descr来作为 设备的描述信息,而两个交换机则采用alias作为设备描述(这两者是不 同的,例如对于cisco路由器来 说,对于descr来说设备描述为"Serial0",而对于aliasl 来说则为"Link to HQ")。 

对于我这里的应用环境来说,生成的mrtg.cfg内容如下: 

# Created by 

# /usr/local/mrtg-2/bin/cfgmaker --global WorkDir: /var/www/html/mrtg --global Options[_]: growright,bits

--output /etc/mrtg.cfg --ifref=ip public@192.168.0.1

### Global Config Options

# for UNIX

# WorkDir: /home/http/mrtg

# or for NT

# WorkDir: c:mrtgdata

### Global Defaults

# to get bits instead of bytes and graphs growing to the right

# Options[_]: growright, bits

WorkDir: /var/www/html/mrtg

Options[_]: growright,bits 

######################################################################

# System: 192.168.0.1

# Description: Linux 192.168.0.1 2.4.7-10smp #1 SMP Thu Sep 6 17:09:31 EDT 2001 i686

# Contact: Root (configure /etc/snmp/snmp.local.conf)

# Location: Unknown (edit /etc/snmp/snmpd.conf)

###################################################################### 

### Interface 1 >> Descr: lo | Name: | Ip: 127.0.0.1 | Eth: ###

### The following interface is commented out because:

### * it is a Software Loopback interface

# Target[192.168.0.1_127.0.0.1]: /127.0.0.1:public@192.168.0.1:

# SetEnv[192.168.0.1_127.0.0.1]: MRTG_INT_IP="127.0.0.1" MRTG_INT_DESCR="lo"

# MaxBytes[192.168.0.1_127.0.0.1]: 1250000

# Title[192.168.0.1_127.0.0.1]: Traffic Analysis for 127.0.0.1 -- 192.168.0.1

# PageTop[192.168.0.1_127.0.0.1]: 

Traffic Analysis for 127.0.0.1 -- 192.168.0.1 

#

#

#

#

#

#

#

#

System:

192.168.0.1 in Unknown (edit /etc/snmp/snmpd.conf) 

Maintainer:

Root (configure /etc/snmp/ snmp.local.conf)

Description:

lo

ifType:

softwareLoopback (24)

ifName:

Max Speed:

10.0 Mbits/s

Ip:127.0.0.1 (localhost)

### Interface 2 >> Descr: eth0 | Name: | Ip: 211.99.43.111 | Eth:

Target[192.168.0.1_211.99.43.158]: /211.99.43.158:public@192.168.0.1:

SetEnv[192.168.0.1_211.99.43.158]: MRTG_INT_IP="211.99.43.158" MRTG_INT_DESCR="eth0"

MaxBytes[192.168.0.1_211.99.43.158]: 1250000

Title[192.168.0.1_211.99.43.158]: Traffic Analysis for 211.99.43.158 -- 192.168.0.1

PageTop[192.168.0.1_211.99.43.158]: 

Traffic Analysis for 211.99.43.158 - - 192.168.0.1

System:

192.168.0.1 in Unknown (edit /etc/snmp/snmpd.conf)

Maintainer:

Root (configure /etc/snmp/ snmp.local.conf)

Description:

eth0

ifType:

ethernetCsmacd (6)

ifName:

Max Speed:

10.0 Mbits/s

Ip:211.99.43.158 (192.168.0.1)

### Interface 3 >> Descr: eth1 | Name: | Ip: 192.168.0.1 | Eth:

Target[192.168.0.1_192.168.0.1]: /192.168.0.1:public@192.168.0.1:

SetEnv[192.168.0.1_192.168.0.1]: MRTG_INT_IP="192.168.0.1" MRTG_INT_DESCR="eth1"

MaxBytes[192.168.0.1_192.168.0.1]: 1250000

Title[192.168.0.1_192.168.0.1]: Traffic Analysis for 192.168.0.1 -- 192.168.0.1

PageTop[192.168.0.1_192.168.0.1]:

Traffic Analysis for 192.168.0.1 -- 192.168.0.1

>

System:

192.168.0.1 in Unknown (edit /etc/snmp/snmpd.conf)

Maintainer:

Root (configure /etc/snmp/ snmp.local.conf)

Description:

eth1

ifType:

ethernetCsmacd (6)

ifName:

Max Speed:

10.0 Mbits/s

Ip:192.168.0.1 (192.168.0.1)

运行mrtg

一旦生成正确的配置文件,就运行下面的命令:

/usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg

 这将查询被监控的设备并在工作目录下创建初始的流量图和web页面,在前三次运行时可 能会报告遗 失日志文件的告警信息,不要理睬这些信息,只需要连续运行三次以后再运行 就不会产生告警信息了。如 果仍然出现告警那么就需要察看问题出在哪里了。

 使用手工运行mrtg并不能定时产生适当的统计信息,因此最好还是定时自动运行mrtg来生 成统计信 息,默认为五分钟运行一次。作为root身份crontab -e进入编辑状态,添加内容 如下:

*/5 * * * * /usr/local/mrtg-2/bin/mrtg /etc/mrtg.cfg 

 然后就可以通过浏览器访问地址http://192.168.0.1/mrtg/选择适当的接口地址察看流量 信息了。如 果希望生成类似于http://www.stat.ee.ethz.ch/mrtg/的信息,就需要自己手工编辑一个index.html文档 存放在/var/www/html/mrtg目录下,内容为接口说明以及该接 口的日统计信息的图即可。

文档

网络流量分析

网络流量分析网络流量分析(一)原著:KarenFrederick以往关于入侵分析的文章都把注意力集中在可疑的数据包(TCP包或者保留的IP地址)上.但是弄清楚什么是正常的网络数据流也是非常重要的.知道什么是正常数据流最好的办法就是先产生一些正常的数据流,然后拦截数据包进行分析.在本文中,本人介绍一些截获数据包的工具并对截获数据进行一些分析,顺带说一下非正常的数据流.学习本文的前提在于你已经有TCP/IP的基础.现在已经有了很多截获数据包的工具,最有名的是UNIX下的TCPDUMP和WINDOW
推荐度:
  • 热门焦点

最新推荐

猜你喜欢

热门推荐

专题
Top