6.7 学习iptables应该掌握的工具

6.7.1 命令行的抓包工具TCPDump

TCPDump是入侵分析人员工具包中的一个重要工具。在底层,TCPDump是一个捕获和分析数据包的软件,也就是说TCPDump可以用来监听网络通信,但是实际能够监听到什么样的数据流将取决于所在网络的拓朴结构。它是一款基于命令行的工具,可以通过不同的命令行选项来改变状态,它也提供了丰富的选项可使我们很容易地改变程序的运行方式。在使用TCPDump的过程中,我们会发现大部分捕获数据的动作只需要用到一些常用的选项即可,而不需要用到其他全部的选项。另外,TCPDump存在于绝大多数的Linux系统中,是不需要安装即可使用的。下面就以具体的例子来说明它的使用方法。

广告:个人专属 VPN,独立 IP,无限流量,多机房切换,还可以屏蔽广告和恶意软件,每月最低仅 5 美元

1)想要截获210.27.48.1的主机收到的和发出的所有数据包,命令如下:

tcpdump host 210.27.48.1

2)想要截获主机210.27.48.1和主机210.27.48.2或210.27.48.3的通信,命令如下(在命令行中使用括号时,要用转义符\来对()进行转义):

tcpdump host 210.27.48.1 and \(210.27.48.2 or 210.27.48.3 \)

3)想要获取主机210.27.48.1和所有主机(除了210.27.48.2)通信的IP包,命令如下:

tcpdump ip host 210.27.48.1 and !210.27.48.2

4)想要获取主机210.27.48.1接收或发出的smtp包,命令如下:

tcpdump tcp port 25 and host 210.27.48.1

5)如果怀疑系统正受到拒绝服务攻击(DoS),网络管理员可以通过截获发往本机的所有ICMP包,来确定目前是否有大量的ping指令流向服务器,此时可用如下命令:

tcpmdump icmp -n -i eth0

6)想要将其结果生成详细的报告,命令如下:

tcpdump tcp port 25 and host 211.147.1.11 > awstat.txt

用TCPDump捕获的TCP包的输出信息一般是:

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

这里说明一下TCPDump抓取TCP包的情况。

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

由于所涉及的服务器协议大部分是TCP协议的,因此这里只介绍TCP包的输出信息。至于UDP和ICMP协议信息,可以根据上面介绍的TCPDump语法自行研究,限于篇幅,这里不做详细说明。