四、网络流量捕捉:命令行工具tcpdump
1、tcpdump简介
tcpdump可以将网络中传送的数据包的“头”完全截获下来提供分析。它支持针对网络层、协议、主机、网络或端口的过滤,并提供and、or、not等逻辑语句来帮助你去掉无用的信息。tcpdump就是一种免费的网络分析工具,尤其是它提供了源代码,公开了接口,因此具备很强的可扩展性,对于网络维护和入侵者都是非常有用的工具。tcpdump存在于基本的Linux系统中,由于它需要将网络界面设置为混杂模式,普通用户不能正常执行,但具备root权限的用户可以直接执行它来获取网络上的信息。因此系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。另外,由于其相对于Wireshark来说,没有非常详细的用户界面,所以非常适合于在终端上使用,网管员可以通过常见的命令行来进行流量捕捉和过滤等操作,所以非常方便,这也是它一直广泛为网络管理员欢迎和使用的原因。
2、 安装tcpdump
在linux下tcpdump的安装十分简单,一般是以源程序的形式安装。其实,Linux一个最大的诱人之处就是在她上面有很多软件是提供源程序的,人们可以修改源程序来满足自己的特殊的需要。所以我特别建议朋友们都采取这种源程序的安装方法。最新的tcpdump的源代码可以在网站http://www.tcpdump.org/上即时获得。
在源程序的安装方式中,我们首先要取得tcpdump的源程序分发包。目前,该源程序包的最新版本为:tcpdump-4.0.0.tar.gz,安装的具体过程如下所示:
(1)解压缩源代码包
#tar xvfz tcpdump-4.0.0.tar.gz |
(2)做好编译源程序前的准备活动
在编译源程序之前,需要已经确定库文件libpcap已经安装完毕,这个库文件是tcpdump软件所需的库文件。同样,你同时还要有一个标准的c语言编译器。在linux下标准的c 语言编译器一般是gcc。在tcpdump的源程序目录中。有一个文件是Makefile.in,configure命令就是从Makefile.in文件中自动产生Makefile文件。在Makefile.in文件中,可以根据系统的配置来修改BINDEST和MANDEST这两个宏定义,缺省值如下:
BINDEST = @sbindir@ MANDEST = @mandir@ |
第一个宏值表明安装tcpdump的二进制文件的路径名,第二个表明tcpdump的man帮助页的路径名,用户可以修改它们来满足系统的需求。
(3)编译源程序
使用源程序目录中的configure脚本,它从系统中读出各种所需的属性。并且根据Makefile.in文件自动生成Makefile文件,以便编译使用。make 命令则根据Makefile文件中的规则编译tcpdump的源程序。使用make install命令安装编译好的tcpdump的二进制文件。
具体的编译步骤,如下命令所示:
# . /configure # make # make install |
3、使用tcpdump
普通情况下,直接启动tcpdump将监视第一个网络界面上所有流过的数据包。如下命令所示:
tcpdump支持相当多的不同参数,如使用-i参数指定tcpdump监听的网络界面,这在计算机具有多个网络界面时非常有用,使用-c参数指定要监听的数据包数量,使用-w参数指定将监听到的数据包写入文件中保存,等等。
然而更复杂的tcpdump参数是用于过滤目的,这是因为网络中流量很大,如果不加分辨将所有的数据包都截留下来,数据量太大,反而不容易发现需要的数据包。使用这些参数定义的过滤规则可以截留特定的数据包,以缩小目标,才能更好的分析网络中存在的问题。tcpdump使用参数指定要监视数据包的类型、地址、端口等,根据具体的网络问题,充分利用这些过滤规则就能达到迅速定位故障的目的。请使用man tcpdump查看这些过滤规则的具体用法。