
TcpDump是一种强大的网络分析工具,能够捕获网络中传输的数据包并进行分析。它支持针对网络层、协议、主机、网络或端口进行过滤,并提供逻辑运算符来帮助去除无用信息。TcpDump尤其提供了源代码,并公开了接口,因此具有很强的可扩展性,对于网络维护和入侵检测都非常有用。
TcpDump存在于基本的FreeBSD系统中,由于它需要将网络界面设置为混杂模式,普通用户不能执行,但具有root权限的用户可以执行它来获取网络信息。系统中存在网络分析工具主要不是对本机安全的威胁,而是对网络上的其他计算机的安全存在威胁。
要使用TcpDump,可以直接启动它来第一个网络界面上所有流过的数据包。通过tcpdump命令支持的参数,用户可以定义更复杂的过滤规则来截取特定的数据包,以缩小分析范围。为了查看这些过滤规则的具体用法,可以使用man tcpdump命令。
除了显示数据包的原始数据外,TcpDump还支持各种解码协议的工具,如tcpshow等,可以将数据包中的信息进行展示。在FreeBSD的Packages Collection中,还提供了其他网络分析工具,如Ethereal和Sniffit等。
TcpDump的命令行格式灵活多变,使用者可以通过各种选项和表达式来定制捕获的数据包。常见的选项包括将网络地址和广播地址转换为名字、以人类可读的格式输出匹配信息包的代码等。TcpDump还提供了强大的表达式功能,可以根据源地址、目的地址、协议类型等条件来过滤数据包。
C. TCP包的详细输出信息解析
通过TCPDUMP捕获的TCP包,其常见的输出信息结构如下:
源地址 > 目标地址:标志位 数据序列号 确认序列号 窗口大小 紧急选项及其他标志。其中,“src > dst”表示数据包从源IP地址发送到目标IP地址。标志位包括SYN(同步)、FIN(完成)、PUSH(推送)、RST(重置)等。数据序列号标识数据包中的数据顺序,确认序列号则表示接收方期望接收的下一个数据序列号。窗口大小反映了接收方的接收能力。紧急选项及其他标志则提供了更多关于TCP包的细节信息。
D. UDP包的简易输出信息解读
使用TCPDUMP捕获的UDP包,其输出信息大致为:
路由.端口1 > 冰点.端口2:UDP 数据长度。这表示一个UDP数据包从路由的端口1发送到冰点的端口2,数据类型为UDP,并指明了数据的长度。
辅助工具及其使用
(1)查看TCP或UDP端口使用情况,可以使用netstat -anp命令。若某些进程不可见,可以尝试使用sudo netstat -anp。若想查询特定端口的信息,如端口631,可以使用lsof命令,如sudo lsof -i :631。netstat -tln用于查看Linux的端口使用情况。
(2)/etc/init.d/vsftp start命令用于启动FTP端口。查看已连接的服务端口(ESTAISHED)可以使用netstat -a,查看所有服务端口(LISTEN,ESTAISHED)则使用netstat -ap。若想知道某个服务端口对应的服务程序名,可以使用nmap进行扫描。例如,nmap localhost或nmap -p 1024-65535 localhost等。
(3)在使用netstat -apn查看网络连接时,可能会看到类似“tcp 0 52 218.104.81.152:7710 211.100.39.250:29488 ESTAISHED 6111/1”的信息。若想知道这个端口7710属于哪个程序,可以使用lsof -i :7710命令查询。
