手机站
网通分站
电信主站
密 码:
用户名:
当前位置 : 主页>网站运营>建站经验>列表

用Tcpdump过滤数据包

来源:互联网 作者:west263.com 时间:2008-04-16
西部数码-全国虚拟主机10强!40余项虚拟主机管理功能,全国领先!双线多线虚拟主机南北访问畅通无阻!免费赠送企业邮局,.CN域名,自助建站480元起,免费试用7天,满意再付款! P4主机租用799元/月.月付免压金!


在Tcpdump的过滤表达式中,各类关键字之间还能够通过布尔运算符来构成组合表达式,以满足实际运用时的需要。布尔运算符包括取非运算符(not或!)、和运算符(and或&&)、或运算符(or或||),使用布尔运算符能够将表达式组合起来构成强大的组合条件,从而能够对Tcpdump的过滤器做进一步细化。

下面给出几个使用Tcpdump过滤数据包的例子,嗅探器提供的过滤表达式对于管理员监测网络运行状况很重要:

1. 假如想要截获主机“9.185.10.57”任何收到和发出的数据包,能够使用如下命令:

# tcpdump host 9.185.10.57



2. 假如想要截获在主机“9.185.10.57”和主机“9.185.10.58”或“9.185.10.59”之间传递的数据包,能够使用如下命令:

# tcpdump host 9.185.10.57 and \
>\(9.185.10.58 or 9.185.10.59\)



需要注意的是,在使用布尔运算符构成组合表达式时,有时需要使用括号来表达复杂的逻辑关系。假如要在命令行中使用括号,一定要用转义字符(“\”)对括号进行转义,否则命令行解释器将给出语法错误的提示。

3. 假如想要截获主机“9.185.10.57”和除主机“9.186.10.58”外任何其他主机之间通信的IP数据包,能够使用如下命令:

# tcpdump ip host 9.185.10.57 and ! 9.185.10.58



4. 假如想要截获主机“9.185.10.57”接收或发出的FTP(端口号为21)数据包,能够使用如下命令:

# tcpdump tcp port 21 host 9.185.10.57



5. 假如怀疑系统正受到拒绝服务(DoS)攻击,网络管理员能够通过截获发往本机的任何ICMP包,来确定现在是否有大量的ping指令流向服务器,此时就能够使用下面的命令:

# tcpdump icmp -n -i eth0


Tcpdump的输出结果

在对网络中的数据包进行过滤后,Tcpdump的输出结果中包含网络管理员关心的网络状态信息。由于Tcpdump只是个命令行方式的嗅探器,因而其输出结果不是很直观,下面以几种典型的输出信息为例,介绍如何对Tcpdump的输出结果进行分析。

1. 数据链路层头信息

使用“tcpdump -e host tiger”命令截获主机“tiger”任何发出和收到的数据包,并在输出结果中包含数据链路层的头部信息。

“tiger”是一台装有Linux的主机,其MAC地址是00:D0:59:BF:DA:06;“mag”是一台装有SCO Unix的工作站,其MAC地址是08:90:B0:2F:AF:46,上述命令的输出结果如下:

20:15:20.735429 eth0
< 08:90:b0:2f:af:46 00:d0:59:bf:da:06 ip 60: mag.36579 >
tiger.ftp 0:0(0) ack 25565 win 8970 (DF)



在输出的信息中,“20:15:20”为截获数据包的时间,“735429”是毫秒数,“eth0 <”表示从网络接口eth0接收该数据包(若为“eth0 >”,则表示从网络接口eth0发送数据包)。“08:90:b0:2f:af:46”是主机mag的MAC地址,指明发送该数据包的源主机为“mag”,“00:d0:59:bf:da:06”是主机tiger的MAC地址,指明该数据包发送的目标主机为“tiger”。“ip”表明该数据包是IP数据包,“60”是数据包的长度,“mag.36579 > tiger.ftp”表明该数据包是从主机“mag”的36579端口发往主机“tiger”的FTP(21)端口。“ack 25565”表示对序列号为25565的包进行确认,“win 8970”则指明发送窗口的大小为8760。

2. ARP包的输出信息

若使用“tcpdump arp -c 2”命令截获ARP数据包,得到的输出结果可能是:

20:42:22.713502 eth0
> arp who-has mag tell tiger
(00:d0:59:bf:da:06)
20:42:22.713907 eth0
< arp reply mag is-at 08:90:b0:2f:af:46
(00:d0:59:bf:da:06)



在输出的信息中,“20:42:22”为截获数据包的时间;“713502”和“713907”为毫秒数;“eth0 >”表明从主机发出该数据包;“eth0 <”表明从主机接收该数据包。“arp”表明该数据包是ARP请求,“who-has mag tell tiger”表明是主机“tiger”请求主机“mag”的MAC地址,“00:d0:59:bf:da:06”是主机“tiger”的MAC地址。“reply mag is-at”表明主机“mag”响应“tiger”的ARP请求,“08:90:b0:2f:af:46”是主机“mag”的MAC地址。

3. TCP包的输出信息

用Tcpdump截获的TCP包的一般输出格式如下:

src > dst: flags data-sequno ack window urgent options



“src > dst:”标明从源地址到目的地址;flags是TCP包中的标志信息,包括S(SYN)标志、F(FIN)标志、P(PUSH)标志、R(RST)标志和“.”(没有标志);data-sequno是数据包中的数据序列号;ack是下次期望的数据序列号;window是接收缓存的窗口大小;urgent标明数据包中是否有紧急指针;options是可能的选项值。

4. UDP包的输出信息

用Tcpdump截获的UDP包的一般输出格式如下:

src.port1 > dst.port2: udp lenth



UDP中包含的信息很简单。上面的输出结果表明从主机“src”的“port1”端口发出的一个UDP数据包被送到主机“dst”的“port2”端口,数据包的类型是UDP,其长度为“lenth”。

通过上面的介绍能够知道,Tcpdump是个命令行方式的嗅探器。他能够根据需要显示出经过一个网络接口的任何数据包,供网络管理员对网络进行检测。但由于采用的是命令行方式,对这些数据包的分析可能会比较困难。利用Tcpdump提供的表达式过滤一些截获的数据包,能够从截获的大量数据包中提取出有用的信息,从而能够有针对性地对网络进行监测。

由于任何网络嗅探器的原理都大体相似,因而Tcpdump的基本知识能够应用于几乎任何的嗅探器。Tcpdump是基于命令行方式的嗅探器,其输出结果比较难于分析,因此很多网络管理员都使用图像化的嗅探器来检测网络故障,并处理可能存在的安全问题。下次将介绍两个图像化的网络嗅探器—Ethereal和EhterApe。同Tcpdump相比,使用这两个嗅探器的分析过程要简单许多。(转)

文章整理:西部数码--专业提供域名注册虚拟主机服务
http://www.west263.com
以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!