背景
tcpdump作为Linux常用的抓包工具,原理是它使用 libpcap 库来抓取网络数据包,这个库几乎在所有的 Linux/Unix 中都有,抓取到的数据包用来提供网络分析。工具支持针对网络层、协议、主机、网络或端口的过滤,并可使用and、or、not等逻辑指令来帮助使用者筛掉无用信息。
工具安装
一、tcpdump安装
1、云主机:CentOS 7.6
2、安装tcpdump
yum -y install tcpdump
3. 版本查看
tcpdump --h
可以看出tcpdump版本和libpcap库版本
二、tcpdump参数
该工具常用参数选项和作用:
参数 | 参数含义 |
-c | 设置指定的数据包收取数; |
-e | 显示数据链路层信息; |
-n | 直接显示IP地址,不显示成域名; |
-nn | 显示查看 IP 和端口号,而且在抓取大量数据时非常高效 |
-s | tcpdump 默认只会截获前96字节的内容,要想截取指定字节的报文内容,可以使用-s number,number表示要截取的报文字节数,如果是 0 的话,表示截取报文全部内容; |
-t | 在输出的每一行不打印时间戳; |
-v | 输出一个稍微详细的信息,例如在ip包中可以包括ttl和服务类型的信息; |
-vv | 输出详细的报文信息; |
-w | 将抓获数据写入指定文件; |
-i | 选择要捕获的接口,通常是以太网卡或无线网卡; |
proto | 过滤指定协议协议的数据报文; |
port | 过滤指定端口的数据包报文; |
host | 过滤包含指定主机ip的数据报文; |
三、命令选项操作演示及说明
1.首先先理解tcpdump指令的输出:
tcpdump
和普通指令终止的方式一样,Ctrl+C可终止执行tcpdump命令
数据包格式为:
时间 源IP 端口/协议 > 目标IP 端口/协议 协议详细信息
PS:">"符号代表数据的方向
2. 指定抓包数量 -c
设定抓取6个数据包
tcpdump -c 6
信息展示如下:
3. 指定监听接口 -i
tcpdump -i eth0
4.打印更详细的数据包信息 -v和-vv
-v:
-vv:
可以看出-vv打印的信息更详细
5.不显示时间
tcpdump -t
6.不显示域名-n -nn
-n:
-nn:
对比可以看出,-nn比-n显示的信息更详细,具体到ip和端口,更方便分析
7.增加过滤信息proto、port、host
tcpdump -n icmp
tcpdump port 22
tcpdump host x.x.x.x
协议:
端口:
主机ip:
四、 逻辑表达式
逻辑表达式可以拼接出更复杂的过滤策略,更好的筛选数据包;
1. and(和)
tcpdump tcp and host 192.168.200.230
tcpdump tcp and src 192.168.200.230 and port 22 -nn
①
②
2. or(或)
tcpdump host 192.168.100.32 or 192.168.200.230
可看到两个ip的包都有抓到
3. not(非)
有时候为了不让ssh远程端口影响到主要数据包的收集,所以一般需要禁止ssh数据包的输出。会用到以下两个方式:
tcpdump not tcp port 22
tcpdump ! tcp port 22
4、and和!的结合使用
想要获取主机10.20.10.93除了和主机192.168.100.32之外所有主机通信的ip包,使用命令:
tcpdump ip host 10.20.10.93 and ! 192.168.100.32
不想错过文章内容?读完请点一下“在看”,加个“关注”,您的支持是我创作的动力
期待您的一键三连支持(点赞、在看、分享~)