tcpdump检测网络攻击的核心价值在于“抓准”而非“抓全”,通过bpf过滤表达式直击syn flood、端口扫描、icmp flood等攻击特征,结合实时输出识别flags[s]、异常端口轮询及可疑源ip,并用-s0保存完整pcap供溯源分析。

tcpdump 在检测网络攻击行为时,核心价值不是“抓全”,而是“抓准”——用过滤表达式直击攻击流量的典型特征,边捕获边观察,快速识别异常模式。
确认网卡与权限,避免无效监听
攻击流量来自外部网络接口,必须选对真实物理网卡,不能抓 lo(回环)或错误接口:
- 运行 sudo tcpdump -D 查看可用接口,重点关注 eth0、ens33、enp0s3 等有线网卡名
- 若输出为空或报错“device not found”,用 ip link show 或 ifconfig 辅助确认真实接口名
- 务必加 sudo 执行,否则无法启用混杂模式,漏掉非本机目标的数据包
按攻击类型设置针对性过滤
不同攻击在流量层面有稳定指纹,直接用 BPF 表达式缩小范围:
一款基于PHP、MySQL、SNMP及RRDTool开发的网络流量监测图形分析工具,通过snmpget来获取数据,使用RRDtool绘画图形,提供了非常强大的数据和用户管理功能
- SYN Flood:捕获密集 SYN 包但无 ACK 响应 → sudo tcpdump -i eth0 -nn 'tcp[tcpflags] & (tcp-syn) != 0 and not tcp[tcpflags] & (tcp-ack)'
- 端口扫描:同一源 IP 连续访问多个端口 → sudo tcpdump -i eth0 -nn -c 50 'src host 192.168.5.100 and tcp and dst portrange 1-1000'
- ICMP Flood:大量 ping 请求来自非常规源 → sudo tcpdump -i eth0 -nn icmp and src host 203.12.44.88
- DNS 隧道或恶意查询:高频 UDP 53 请求且域名异常长 → sudo tcpdump -i eth0 -nn -c 100 'udp port 53 and src host 10.0.3.77'
实时输出中识别三类关键信号
不必等抓完再分析,终端滚动输出就是第一手线索:
- 看到连续多行 Flags [S](SYN),但极少出现 [S.](SYN-ACK)或 [.](ACK)→ 强烈提示 SYN Flood
- 同一 src host 后跟数十个不同 dst port(如 .22、.23、.25、.80、.443 轮番出现)→ 典型扫描行为
- 源 IP 明显异常:如 0.0.0.0、255.255.255.255、或内网段地址(如 192.168.x.x)却从外网接口进来 → 可能存在 IP 欺骗
保存完整包供溯源与复核
发现可疑后立即落盘,确保协议字段不被截断:
- 用 -w 保存为标准 pcap 格式:sudo tcpdump -i eth0 -nn -s0 -w /tmp/suspicious-20260707.pcap 'src host 192.168.5.100'
- -s0 是关键,避免默认快照长度导致 TCP 头部字段(如 flags、seq)丢失
- 该文件可直接拖入 Wireshark 深度分析,也可用 tcpdump -r 回放验证










