分类

  • 软件天地

  • 网络数据采集分析工具TCPDUMP简介‖
    windows平台上的sniffer工
    式的局域网中,采用sniffe
    上就是一个网络上的抓包工
    息包是会广播到网络中所有
    络设备会判断该信息包是否
    使主机的网络设备接收所有
    具既可以适合于黑客的使用
    ,使用嗅探器可以随时掌握
    工具来分析原因,找出造成
    序。
    中,嗅探器(sniffer)是最常见
    具(例如,netxray和sniffer pr
    r工具简直可以对网络中的所有
    具,同时还可以对抓到的包进行
    主机的网络接口,只不过在没有
    应该接收,这样它就会抛弃不应
    到达的信息包,这样就达到了网
    ,也同样有利于网络管理员和网
    网络的实际情况,在网络性能急
    网络阻塞的来源。对于网络程序

    ,也是最重要的技术之一。用过
    o软件)的朋友可能都知道,在共享
    流量一览无余!Sniffer工具实际
    分析。由于在共享式的网络中,信
    使用sniffer工具之前,主机的网
    该接收的信息包,sniffer工具却
    络监听的效果。其实,sniffer工
    络程序员。对于网络管理人员来说
    剧下降的时候,可以通过sniffer
    员来说,通过sniffer工具来调试程


      Linux作为网络服务器
    所以,今天我们就来看看Li
    ,特别是作为路由器和网关时,
    nux中强大的网络数据采集分析
    数据的采集和分析是必不可少的。
    工具——TcpDump。

      用尽量简单的话来定义
    的定义对网络上的数据包进
    tcpdump,就是:dump the traf
    行截获的包分析工具。
    fice on a network.,根据使用者


      作为互联网上经典的的系统管理员必
    ,成为每个高级的系统管理员分析网络,
    备工具,tcpdump以其强大的功能,灵活的截取策略
    排查问题等所必备的东东之一。

      顾名思义,TcpDump可以将网络中传
    针对网络层、协议、主机、网络或端口的
    无用的信息。
    送的数据包的“头”完全截获下来提供分析。它支持
    过滤,并提供and、or、not等逻辑语句来帮助你去掉


      tcpdump提供了源代码
    都是非常有用的工具。tcpd
    杂模式,普通用户不能正常
    。因此系统中存在网络分析
    全存在威胁。
    ,公开了接口,因此具备很强的
    ump存在于基本的FreeBSD系统中
    执行,但具备root权限的用户可
    工具主要不是对本机安全的威胁

    可扩展性,对于网络维护和入侵者
    ,由于它需要将网络界面设置为混
    以直接执行它来获取网络上的信息
    ,而是对网络上的其他计算机的安


      普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。   
      -----------------------                               
      bash-2.02# tcpdump                                         
      tcpdump: listening on eth0                         
      11:58:47.873028 202.102.245.40.netbios-ns > 202.102.245.127.netbios-ns: udp 50

      11:58:47.974331 0:10:7b:8:3a:56 > 1:80:c2:0:0:0 802.1d ui/C len=43

      0000 0000 0080 0000 1007 cf08 09
    00 0000

      0e80 0000 902b 4695
    0980 8701 0014 0002
      000f 0000 902b 4695 0008 00                       
      11:58:48.373134 0:0:e8:5b:6d:85 > Broadcast sap e0 ui/C len=97


      ffff 0060 0004 ffff
    ffff ffff ffff ffff

      0452 ffff ffff 0000
    e85b 6d85 4008 0002
      0640 4d41 5354 4552 5f57 4542 00
    00 0000
      0000 00                                                               
      ^C                                                                         
      ------------------------                             

      首先我们注意一下,从上面的输出结果上可以看出来,基本上tcpdump总的的输出格式为:系统时间 来源主机.端口 > 目标主机.端口 数据包参数


      TcpDump的参数化支持

      tcpdump支持相当多的不同参数,如
    机具有多个网络界面时非常有用,使用-c
    听到的数据包写入文件中保存,等等。
    使用-i参数指定tcpdump嗵耐缃缑妫庠诩扑?br>参数指定要监听的数据包数量,使用-w参数指定将监


      然而更复杂的tcpdump
    所有的数据包都截留下来,
    过滤规则可以截留特定的数
    使用参数指定要监视数据包
    规则就能达到迅速定位故障
    参数是用于过滤目的,这是因为
    数据量太大,反而不容易发现需
    据包,以缩小目标,才能更好的
    的类型、地址、端口等,根据具
    的目的。请使用man tcpdump查
    网络中流量很大,如果不加分辨将
    要的数据包。使用这些参数定义的
    分析网络中存在的问题。tcpdump
    体的网络问题,充分利用这些过滤
    看这些过滤规则的具体用法。

      显然为了安全起见,不
    为了屏蔽它们,可以屏蔽内
    接收或发送与本计算机无关
    绕过标准的TCP/IP堆栈才行
    核中取消bpfilter支持,就
    用作网络管理用途的计算机上不
    核中的bpfilter伪设备。一般情
    的数据包,为了接收这些数据包
    。在FreeBSD下,这就需要内核
    能屏蔽tcpdump之类的网络分析
    应该运行这一类的网络分析软件,
    况下网络硬件和TCP/IP堆栈不支持
    ,就必须使用网卡的混杂模式,并
    支持伪设备bpfilter。因此,在内
    工具。

      并且当网卡被设置为混杂模式时,系
    意这台系统是否被用作攻击同网络的其他
    统会在控制台和日志文件中留下记录,提醒管理员留
    计算机的跳板。

      May 15 16:27:20 host
    1 /kernel: fxp0: promiscuous
    mode enabled

      虽然网络分析工具能将
    对这些数据进行分析、分类
    同的协议,而不同协议数据
    能的展示出来,对于协议分
    持很多种类的应用层协议,
    网络中传送的数据记录下来,但
    统计、发现并报告错误却是更关
    包的格式也不同。因此对捕获的
    析工具来讲更为重要。昂贵的商
    而不仅仅只支持tcp、udp等低层
    是网络中的数据流量相当大,如何
    键的问题。网络中的数据包属于不
    数据进行解码,将包中的信息尽可
    业分析工具的优势就在于它们能支
    协议。

      从上面tcpdump的输出可以看出,tcp
    大部分内容是使用十六进制的形式直接打
    办法是先使用带-w参数的tcpdump 截获数
    析。当然也应该定义过滤规则,以避免捕
    dump对截获的数据并没有进行彻底解码,数据包内的
    印输出的。显然这不利于分析网络故障,通常的解决
    据并保存到文件中,然后再使用其他程序进行解码分
    获的数据包填满整个硬盘。

      TCP功能

      数据过滤

      不带任何参数的TcpDum
    数据对我们不一定全都需要
    ,TcpDump提供以下参数供
    p将搜索系统中所有的网络接口
    ,而且数据太多不利于分析。所
    我们选择数据:
    ,并显示它截获的所有数据,这些
    以,我们应当先想好需要哪些数据


      -b 在数据-链路层上选择协议,包括
    ip、arp、rarp、ipx都是这一层的。

      例如:tcpdump -b arp
    将只显示网络械腶rp即地址转
    换协议信息。

      -i 选择过滤的网络接
    以只过滤指定的接口上通过
    口,如果是作为路由器至少有两
    的数据。例如:
    个网络接口,通过这个选项,就可


      tcpdump -i eth0 只显示通过eth0接口上的所有报头。         

      src、dst、port、host、net、ether
    host、net、ehost等附加选项。他们用来
    定源主机IP地址是192.168.0.1,dst net
    类推,host是与其指定主机相关无论它是
    跟的不是IP地址而是物理地址,而gatewa
    道了:
    、gateway这几个选项又分别包含src、dst 、port、
    分辨数据包的来源和ハ颍瑂rc host 192.168.0.1指
    192.168.0.0/24指定目标是网络192.168.0.0。以此
    源还是目的,net是与其指定网络相关的,ether后面
    y则用于网关主机。可能有点复杂,看下面例子就知


      tcpdump src host 192
    .168.0.1 and dst net 192.168
    .0.0/24

      过滤的是源主机为192.168.0.1与目
    的网络为192.168.0.0的报头。

      tcpdump ether src 00:50:04:BA:9B
    and dst……

      过滤源主机物理地址为
    然不可能有网络喽)。
    XXX的报头(为什么ether src后

    面没有host或者net?物理地址当


      Tcpdump src host 192
    .168.0.1 and dst port not te
    lnet

      过滤源主机192.168.0.1和目的端口不是telnet的报头。           

      ip icmp arp rarp 和 tcp、udp、ic
    数据报的类型。
    mp这些选项等都要放到第一个参数的位置,用来过滤

      例如:                                                                       

      tcpdump ip src……                                             

      只过滤数据-链路层上的IP报头。                                             

      tcpdump udp and src host 192.168.0.1     

      只过滤源主机192.168.0.1的所有udp报头。                         

      数据显示/输入输出                                                           

      TcpDump提供了足够的参数来让我们选择如何处理得到的数据,如下所示:     

      -l 可以将数据重定向。                                                     

      如tcpdump -l >tcpcap.txt将得到
    的数据存入tcpcap.txt文件中。

      -n 不进行IP地址到主机名的转换。                                         

      如果不使用这一项,当
    名显示,就像这样:eth0
    eth0 < 192.168.0.9.1165
    系统中存在某一主机的主机名时
    < ntc9.1165> router.domain
    > 192.168.0.1.telnet。
    ,TcpDump会把IP地址转换为主机
    .net.telnet,使用-n后变成了:


      -nn 不进行端口名称的转换。                                               

      上面这条信息使用-nn
    后就变成了:eth0 < ntc9.116
    5 > router.domain.net.23。

      -N 不打印出默认的域名。                                                   

      还是这条信息-N 后就
    是:eth0 < ntc9.1165 > rou
    ter.telnet。

      -O 不进行匹配代码的优化。                                                 
      -t 不打印UNIX时间戳,也就是不显示时间。                               
      -tt 打印原始的、未格式化过的时间。                                       
      -v 详细的输出,也就比普通的多了个TTL和服务类型。                       

      TCPDUMP的安装

      在linux下tcpdump的安
    安装。另外一种是以源程序
    装十分简单,一般由两种安装方
    的形式安装。
    式。一种是以rpm包的形式来进行

      1. rpm包的形式安装                                                     
      #rpm -ivh tcpdump-3_4a5.rpm                       
      这样tcpdump就顺利地安装到你的linux系统中。怎么样,很简单吧。     
      2. 源程序的安装                                                           
      #tar xvfz tcpdump-3_4a5.tar.Z                   
      rpm的包可以使用如下命令安装:                                             
      #rpm -ivh tcpdump-3_4a5.src.rpm               
      这样就把tcpdump的源
    代码解压到/usr/src/redhat/SO
    URCES目录下.

      第二步 做好编译源程序前的准备活动                                           

      在编译源程序之前,最好已经确定库
    件所需的库文件 。同样,你同时还要有
    译器一般是gcc。 在tcpdump的源程序目
    是从Makefile.in文件中自动产生Makefil
    来修改BINDEST 和 MANDEST 这两个宏定
    文件libpcap已经安装完毕,这个库文件是tcpdump软
    一个标准的c语言编译器。在linux下标准的c 语言编
    录中。有一个文件是Makefile.in,configure命令就
    e文件。在Makefile.in文件中,可以根据系统的配置
    义,缺省值是
      BINDEST = @sbindir@                                       
      MANDEST = @mandir@                                         
                                                                                  
      第一个宏值表明安装tc
    的路径名,你可以修改它们
    pdump的二进制文件的路径名,
    来满足系统的需求。
    第二个表明tcpdump的man 帮助页


      第三步 编译源程序                                                           
                                                                                  
      使用源程序目录中的co
    Makefile.in文件自动生成M
    规则编译tcpdump的源程序
    nfigure脚本,它从系统中读出
    akefile文件,以便编译使用.ma
    。使用make install命令安装编
    各种所需的属性。并且根据
    ke 命令则根据Makefile文件中的
    译好的tcpdump的二进制文件。
                                                                                  
      总结一下就是:                                                               
                                                                                  
           # tar xvfz tcpdump-3_4a5.tar.Z       
            # vi Makefile.in                                 
            # . /configure                                     
            # make                                                     
            # make install                                     

    上一页 下一页




    map