1. 安装必备Sniffer工具
在Ubuntu系统中,常用Sniffer工具可通过包管理器快速安装。例如,安装命令行工具tcpdump(基础数据包捕获)、图形化工具wireshark(详细协议分析)、实时流量监控工具iftop/nethogs(进程/连接级流量查看),命令如下:
sudo apt update
sudo apt install tcpdump wireshark iftop nethogs
安装wireshark时,系统会提示是否允许非root用户捕获数据包,选择“Yes”以方便后续使用。
2. 选择网络接口
启动Sniffer前需明确监控的网络接口(如以太网eth0、无线网卡wlan0)。可通过ip a命令查看接口名称,例如:
ip a
# 输出示例:eth0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc fq_codel state UP group default qlen 1000
若需监控所有接口,可使用any关键字。
3. 捕获数据包
使用tcpdump捕获数据包的基本命令格式为:sudo tcpdump -i [接口] [过滤条件]。例如:
eth0接口所有数据包:sudo tcpdump -i eth0eth0接口HTTP流量(端口80):sudo tcpdump -i eth0 port 80eth0接口TCP SYN包(用于检测连接请求):sudo tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn) != 0'若需保存捕获的数据包供后续分析,可添加-w参数指定文件名(如capture.pcap):
sudo tcpdump -i eth0 -w capture.pcap
按Ctrl+C停止捕获。
4. 过滤与聚焦关键流量
通过过滤表达式缩小分析范围,常见过滤条件包括:
tcp(TCP流量)、udp(UDP流量)、icmp(ICMP流量,如ping)port 80(HTTP)、port 443(HTTPS)、src port 1234(源端口1234)src host 192.168.1.100(源IP为192.168.1.100)、dst host example.com(目标IP为example.com)tcp and port 80 and src host 192.168.1.100(源IP为192.168.1.100的TCP 80端口流量)例如,捕获eth0接口源IP为192.168.1.100的HTTP流量:
sudo tcpdump -i eth0 'tcp and port 80 and src host 192.168.1.100'
过滤后的数据能更精准地定位问题(如特定主机的异常流量)。
5. 分析数据包内容
捕获的数据包可通过以下工具进一步分析:
wireshark命令打开保存的.pcap文件(如capture.pcap),界面会展示数据包的分层结构(链路层、网络层、传输层、应用层)、详细字段(源/目标MAC、IP、端口)、协议树(如HTTP请求的Method、URL)及数据内容(如明文传输的用户名、密码)。可通过过滤栏(如http.request.method == GET)快速筛选特定类型的流量。-r参数读取.pcap文件,结合过滤条件查看关键信息。例如,查看capture.pcap中的HTTP请求:sudo tcpdump -r capture.pcap 'tcp port 80 and tcp[((tcp[12:1] & 0xf0) >> 2):4] = 0x47455420'
# 0x47455420为GET请求的十六进制表示
输出结果会显示请求的源IP、目标IP、端口及HTTP方法。6. 实时监控流量趋势
若需了解实时流量状态(如带宽占用、连接数),可使用以下工具:
P键切换端口显示,按q键退出。命令:sudo iftop -i eth0q键退出。命令:sudo nethogs eth0vnstat -i eth0 -d(查看eth0接口当日流量)。7. 检测异常与入侵行为
通过Sniffer分析网络行为时,需关注以下异常特征:
tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) = 0)ether broadcast或ether multicast)例如,检测eth0接口的SYN Flood攻击:
sudo tcpdump -i eth0 'tcp[tcpflags] & (tcp-syn) != 0 and tcp[tcpflags] & (tcp-ack) = 0'
若发现异常,应及时采取措施(如封锁IP、调整防火墙规则)。