Linux网络流量捕捉工具Wireshark详解

运维 系统运维
本篇报道主要为了告诉大家Linux网络流量的安全管理的方法,以便大家更安全更有效的对网络流量进行管理。

相信大家对目前Linux网络流量的管理方法都有所了解了,并且希望找到一个更安全更有效的方法,今天在这里我们就像大家介绍一个更安全更有效的Linux网络流量安全管理方法,希望对大家有用。

网络流量捕捉:图形化工具Wireshark

1、Wireshark简介

Ethereal是一个开放源码的Linux网络流量分析系统,也是目前***的开放源码的网络协议分析器,支持Linux和windows平台。Ethereal起初由Gerald Combs开发,随后由一个松散的etheral团队组织进行维护开发。它目前所提供的强大的协议分析功能完全可以媲美商业的Linux网络流量分析系统,自从1998年发布最早的0.2版本至今,大量的志愿者为ethereal添加新的协议解析器,如今ethereal已经支持五百多种协议解析。另外,网络分析系统首先依赖于一套捕捉网络数据包的函数库。这套函数库工作在网络分析系统模块的***层。作用是从网卡取得数据包或者根据过滤规则取出数据包的子集,再转交给上层分析模块。从协议上说,这套函数库将一个数据包从链路层接收,至少将其还原至传输层以上,以供上层分析。6月8号,Ethereal的作者Gerald Coombs宣布了离开NIS的消息,因而Ethereal现改名为Wireshark。

Linux网络流量分析系统首先依赖于一套捕捉网络数据包的函数库。这套函数库工作在在网络分析系统模块的***层。作用是从网卡取得数据包或者根据过滤规则取出数据包的子集,再转交给上层分析模块。从协议上说,这套函数库将一个数据包从链路层接收,至少将其还原至传输层以上,以供上层分析。

在Linux系统中,1992年Lawrence Berkeley Lab的Steven McCanne和Van Jacobson提出了包过滤器的一种的实现,BPF(BSD Packet Filter)。Libpcap是一个基于BPF的开放源码的捕包函数库。现有的大部分Linux捕包系统都是基于这套函数库或者是在它基础上做一些针对性的改进。在window系统中,意大利人Fulvio Risso和Loris Degioanni提出并实现了Winpcap函数库,作者称之为NPF。由于NPF的主要思想就是来源于BPF,它的设计目标就是为windows系统提供一个功能强大的开发式数据包捕获平台,希望在Linux系统中的网络分析工具经过简单编译以后也可以移植到windows中,因此这两种捕包架构是非常现实的。就实现来说提供的函数调用接口也是一致的。Ethereal网络分析系统也需要一个底层的抓包平台,在Linux中是采用Libpcap函数库抓包,在windows系统中采用winpcap函数库抓包。

2、层次化的数据包协议分析方法

取得捕包函数捕回的数据包后就需要进行协议分析和协议还原工作了。由于OSI的7层协议模型,协议数据是从上到下封装后发送的。对于协议分析需要从下至上进行。首先对网络层的协议识别后进行组包还原然后脱去网络层协议头。将里面的数据交给传输层分析,这样一直进行下去直到应用层。由于网络协议种类很多,就Ethereal所识别的500多种协议来说,为了使协议和协议间层次关系明显。从而对数据流里的各个层次的协议能够逐层处理。Ethereal系统采用了协议树的方式。

图1所示就是一个简单的协议树。如果协议A的所有数据都是封装在协议B里的,那么这个协议A就是协议B是另外一个协议的儿子节点(比如图中的TCP和UDP协议就是IP协议的儿子节点)。我们将***层的无结构数据流作为根接点。那么具有相同父节点的协议成为兄弟节点。那么这些拥有同样父协议兄弟节点协议如何互相区分了?Ethereal系统采用协议的特征字来识别。每个协议会注册自己的特征字。这些特征字给自己的子节点协议提供可以互相区分开来的标识。比如tcp协议的port字段注册后。Tcp.port=21就可以认为是ftp协议,特征字可以是协议规范定义的任何一个字段。比如ip协议就可以定义proto字段为一个特征字。

在Ethereal中注册一个协议解析器首先要指出它的父协议是什么。另外还要指出自己区别于父节点下的兄弟接点协议的特征。比如ftp协议。在Ethereal中他的父接点是tcp协议,它的特征就是tcp协议的port字段为21。这样当一个端口为21的tcp数据流来到时。首先由tcp协议注册的解析模块处理,处理完之后通过查找协议树找到自己协议下面的子协议,判断应该由那个子协议来执行,找到正确的子协议后,就转交给ftp注册的解析模块处理。这样由根节点开始一层层解析下去。

由于采用了协议树加特征字的设计,这个系统在协议解析上由了很强的扩展性,增加一个协议解析器只需要将解析函数挂到协议树的相应节点上即可。

图1  协议树简单图示

3、基于插件技术的协议分析器

所谓插件技术,就是在程序的设计开发过程中,把整个应用程序分成宿主程序和插件两个部分,宿主程序与插件能够相互通信,并且,在宿主程序不变的情况下,可以通过增减插件或修改插件来调整应用程序的功能。运用插件技术可以开发出伸缩性良好、便于维护的应用程序。它著名的应用实例有:媒体播放器winamp、微软的网络浏览器IE等。

由于现在网络协议种类繁多,为了可以随时增加新的协议分析器,一般的协议分析器都采用插件技术,这样如果需要对一个新的协议分析只需要开发编写这个协议分析器并调用注册函数在系统注册就可以使用了。通过增加插件使程序有很强的可扩展性,各个功能模块内聚。#p#

4、安装Wireshark

Wireshark可以在http://www.wireshark.org/download.html上下载,该软件有极其方便和友好的图形用户界面,并且能够使得用户通过图形界面的配置和选择,针对多块网卡、多个协议进行显示,效果非常好。目前***版本为:Wireshark 1.0.3。安装该软件请按照如下步骤进行:

  1. //将下载的***版本软件拷贝到临时文件夹   
  2. # cp wireshark-1.0.3.tar.gz /usr/local/src/  
  3. //切换到临时文件夹目录  
  4. # cd /usr/local/src/  
  5. //解压缩文件  
  6. # tar -xvf wireshark-1.0.3.tar.gz  
  7.    

另外,同Tcpdump一样,在编译Ethereal之前应先确定已经安装pcap库(libpcap),这是编译Wireshark时所必需的。如果该库已经安装,就可以执行下面的命令来编译并安装Wireshark:

  1. # cd wireshark-1.0.3   
  2. # ./configure  
  3. # make  
  4. # make install  

当编译并安装好Wireshark后,就可以执行“wireshark”命令来启动Wireshark。

5、使用Wireshark

(1)捕包选项

抓包是进行协议分析的***步骤,在Wireshark中,有几个抓包的相关选项需要尤其注意(如图1和2所示):

◆Interface:指定在哪个接口(网卡)上抓包。一般情况下都是单网卡,所以使用缺省的就可以了Limit each packet: 限制每个包的大小,缺省情况不限制。

◆Capture packets in promiscuous mode:确定是否打开混杂模式。如果打开,抓取所有的数据包。一般情况下只需要监听本机收到或者发出的包,因此应该关闭这个选项。

◆Filter:过滤器。只抓取满足过滤规则的包。

◆File:如果需要将抓到的包写到文件中,在这里输入文件名称。use ring buffer:是否使用循环缓冲。缺省情况下不使用,即一直抓包。值得注意的是:循环缓冲只有在写文件的时候才有效。如果使用了循环缓冲,还需要设置文件的数目,文件多大时回卷。其他的项选择缺省的就可以了。

图1  Wireshark的捕包界面

图2  Wireshark捕包选项设置示意图

(2)协议过滤(Filter)选项

由于网络中的协议五花八门,Http、Ftp、ARP、ICMP等协议等都在抓包的范围之列,因而给协议分析工作带来了一些麻烦。为了对特定的协议进行分析统计,则可以使用Ehereal提供的Filter选项来对数据报文进行过滤,对特定的协议进行提取,再进行分析。图3(a)给出了使用Capture菜单下的Capture Filter选项进行过滤设置的示意,该软件已经提供了许多协议的Filter供用户选择使用,而用户也可以自行添加;图3(b)则显示了通过在工具栏的Filter编辑框内输入协议名称对已捕捉的包进行过滤的结果,图中显示了过滤后所得Http协议的数据包情况。用户也可以通过输入Ftp、ARP或者TCP等字段来获取相应的协议内容。

图3  协议过滤选项示意图

注意:图3(a)和3(b)所示的设置方法的不同在于:前者设置后该工具只对选取的协议进行捕包;而后者则是在所有捕获的数据包中(包括各种协议)选择用户设定的协议进行提取和显示。

(3)统计选项(statistics)

统计选项用于对过滤后的各协议类型进行统计,从而从宏观上对网络中的流量进行统计分析和全局把握。图4给出了操作的流程和显示结果。

 

图4  统计选项示意图
 

【编辑推荐】

  1. 关于linux 性能监控的详细介绍
  2. linux 网络监控系统的开发及其应用
  3. 分享Linux流量监控的几个方法
  4. 系统监控:linux 系统监控命令详解
  5. Linux内存监控过程详解
责任编辑:chenqingxiang 来源: IT168
相关推荐

2010-06-04 10:35:25

Linux 网络流量

2010-06-13 14:47:15

2016-10-07 22:54:03

流量监控ossim

2011-03-31 09:47:21

CACTI流量监控

2010-05-27 12:38:35

2011-11-07 09:50:30

2010-06-04 14:04:06

2011-04-06 10:57:14

监控MRTG

2010-08-04 10:09:05

Oracle Dire

2010-06-10 17:41:47

2010-09-03 15:08:35

系统升级

2011-08-30 15:41:03

UbuntuNethogs

2010-08-06 09:39:53

Linux流量控制

2010-06-04 14:24:12

Linux 查看网络流

2010-06-13 15:08:05

Linux 查看网络流

2022-09-26 14:24:18

Linux网络流量审计

2014-11-06 10:25:41

nogotofail网络流量安全

2015-04-14 09:26:13

网络流量监控vnStatvnStati

2019-08-19 00:14:12

网络测试带宽网络流量

2010-05-27 09:17:44

Linux网络流量
点赞
收藏

51CTO技术栈公众号