如何配置Ubuntu Sniffer以监控特定端口
导读:在 Ubuntu 上监控特定端口的抓包配置指南 一 工具选择与准备 在 Linux 环境中,常用的“Sniffer”是 tcpdump(命令行)与 Wireshark(图形化)。两者均支持按端口、协议、主机等条件过滤。抓包通常需要 roo...
在 Ubuntu 上监控特定端口的抓包配置指南
一 工具选择与准备
- 在 Linux 环境中,常用的“Sniffer”是 tcpdump(命令行)与 Wireshark(图形化)。两者均支持按端口、协议、主机等条件过滤。抓包通常需要 root 权限 或具备 CAP_NET_RAW 能力。为后续分析,建议准备一个测试端口(如 8080)或使用本机的 SSH 22 流量进行验证。
二 使用 tcpdump 监控特定端口
- 安装与基础检查
- 安装:sudo apt-get update & & sudo apt-get install tcpdump
- 查看网卡:sudo tcpdump -D(列出可用接口,如 eth0、wlan0)
- 常用命令模板
- 监控某接口的单一端口(示例:端口 80)
- sudo tcpdump -i eth0 port 80
- 同时监控多个端口(示例:80 与 443)
- sudo tcpdump -i eth0 ‘port 80 or port 443’
- 仅监控某协议的端口(示例:UDP 53 DNS)
- sudo tcpdump -i eth0 udp and port 53
- 指定源或目的端口
- 源端口 8080:sudo tcpdump -i eth0 ‘src port 8080’
- 目的端口 22:sudo tcpdump -i eth0 ‘dst port 22’
- 显示更详细信息并禁用解析(便于排障)
- sudo tcpdump -i eth0 -n -v ‘tcp port 22’
- 将结果写入文件以便后续分析
- 捕获:sudo tcpdump -i eth0 -w capture.pcap ‘port 80’
- 读取:tcpdump -r capture.pcap
- 只抓取前 N 个包
- sudo tcpdump -i eth0 -c 100 ‘port 443’
- 在所有接口上抓包
- sudo tcpdump -i any ‘port 3306’
- 监控某接口的单一端口(示例:端口 80)
- 实用过滤表达式
- 指定主机 + 端口:sudo tcpdump -i eth0 ‘host 192.168.1.10 and port 22’
- 排除某端口:sudo tcpdump -i eth0 ‘not port 22’
- 组合条件:sudo tcpdump -i eth0 ‘(tcp port 80 or tcp port 443) and host 10.0.0.5’
- 提示
- 使用单引号包裹含关键字的过滤表达式,避免 shell 解释。
- 需要查看包内容时,可加 -A(ASCII)或 -X(十六进制+ASCII)。
三 进阶分析与自动化
- 与 Wireshark 联合分析
- 在 Ubuntu 上抓包并保存:sudo tcpdump -i eth0 -s 0 -w traffic.pcap ‘tcp port 80’
- 将 traffic.pcap 复制到本地,用 Wireshark 打开进行深度协议解析与图形化分析。
- 自动化抓包与轮转
- 示例 Bash 脚本(按时间轮转,每 60 秒一个文件,最多保留 10 个):
- #!/usr/bin/env bash INTERFACE=“eth0” DIR=“/var/log/sniff” mkdir -p “$DIR” while true; do ts=$(date +%Y%m%d-%H%M%S) sudo tcpdump -i “$INTERFACE” -s 0 -G 60 -W 10 -w “$DIR/cap_${ ts} _%03d.pcap” ‘port 8080’ done
- 说明:-G 60 表示每 60 秒切换文件,-W 10 表示最多保留 10 个文件,旧文件自动覆盖。
- 示例 Bash 脚本(按时间轮转,每 60 秒一个文件,最多保留 10 个):
- 简单告警示例(检测短时 SYN 洪泛)
- sudo tcpdump -i eth0 -n ‘tcp[tcpflags] &
(tcp-syn) != 0 and tcp[tcpflags] &
(tcp-ack) == 0’ |
awk ‘{ count[src]++; if (count[src] > 100) print "Possible SYN flood from " src; } ’ - 将阈值(如 100)按实际环境调整。
- sudo tcpdump -i eth0 -n ‘tcp[tcpflags] &
(tcp-syn) != 0 and tcp[tcpflags] &
(tcp-ack) == 0’ |
四 常见问题与排障
- 权限不足或找不到设备
- 使用 sudo 运行;若提示 “no suitable device found”,确认接口名是否正确(用 -D 查看),并确保以 root 权限执行。
- 抓不到包
- 确认目标流量确实经过所选接口;必要时使用 -i any 抓取所有接口;检查是否启用了 混杂模式(多数情况下默认即可);过滤表达式是否正确(如协议与端口拼写)。
- 输出太多刷屏
- 加 -n 禁用解析,使用 -c 限制包数,或将结果写入文件 -w 后用 -r 分析。
- 需要查看包载荷
- 使用 -A(ASCII)或 -X(十六进制+ASCII)查看内容;若仍不完整,确保使用 -s 0(抓取完整包)。
五 合规与安全提示
- 抓包会接触到网络中的明文数据(如 HTTP、FTP、SMTP 等),请仅在拥有明确授权的网络与主机上执行,避免侵犯隐私或违反合规要求。对生产环境建议先在测试环境验证过滤表达式与存储路径,并设置合适的文件大小或轮转策略,防止磁盘被占满。
声明:本文内容由网友自发贡献,本站不承担相应法律责任。对本内容有异议或投诉,请联系2913721942#qq.com核实处理,我们将尽快回复您,谢谢合作!
若转载请注明出处: 如何配置Ubuntu Sniffer以监控特定端口
本文地址: https://pptw.com/jishu/749802.html
