本文目录导读:

镜像流量的筛选与分析是网络安全、运维监控和故障排查中的核心环节,通过端口镜像(Port Mirroring)或网络分路器(TAP)将网络流量复制后,需要对海量数据进行筛选(去粗取精)和分析(洞察价值)。
以下是系统化的操作指南,按步骤分为四个阶段:
第一阶段:基础筛选(最关键的步骤,减少噪音)
在没有筛选的情况下分析全量镜像流量,会让分析工具不堪重负,且难以定位问题,筛选通常在捕获引擎的驱动层面或捕获工具的预处理阶段完成。
基于五元组(源/目的IP、端口、协议)筛选 这是最常见的方式,快速指定“谁和谁在通信”。
- 工具示例(tcpdump):
tcpdump -i eth0 -nn 'host 192.168.1.100 and tcp port 443'
- 应用场景: 只关注某个核心服务器或某个关键业务的流量。
基于协议/高层应用筛选 直接过滤掉非目标协议(如ARP、ICMP等背景流量),专注HTTP、DNS、SQL或自定义应用层协议。
- 工具示例(Wireshark/TShark):
tshark -r capture.pcap -Y "http.request or http.response"
- 应用场景: 分析Web请求延迟、API调用错误码。
基于会话特征(关键流量特征)
- TCP Flags: 只抓取带有特定标志的包(如
SYN用于新连接分析,RST用于连接中断排查)。 - Packet Length: 过滤掉小包(如ACK纯确认包,通常只有60-80字节),只留下包含实际数据载荷的包。
- IP Fragments: 只捕获分片包。
基于时间轴的动态筛选 只捕获特定时间段(如业务高峰期9:00-10:00,或故障发生前3分钟)的流量。
第二阶段:流量预处理与重组(提升分析质量)
经过第一阶段的筛选,流量已经大幅减少,但为了深度分析,需要将碎片化信息重组。
-
TCP流重组 镜像流量是零散的IP包,需要将属于同一个TCP连接的数据包按序列号拼接成完整的应用层数据流,所有主流抓包工具(Wireshark、tcpdump)通过
Follow TCP Stream功能实现。 -
数据对象提取 从重组后的流中提取出实际文件、图片、邮件附件、SQL语句等。
- 工具: NetworkMiner(倾向于提取)、Wireshark的导出对象功能(
File -> Export Objects -> HTTP/SMB)。
- 工具: NetworkMiner(倾向于提取)、Wireshark的导出对象功能(
-
去重与归并 镜像流量可能存在源端口镜像、多方向镜像导致的重复包,需要基于IPID、TCP SEQ/ACK号、时间戳进行去重,避免重复统计。
第三阶段:深度分析策略(不同类型问题的分析方法)
根据分析目的,采用不同的分析视角:
性能分析(延迟、吞吐量、重传)
- 关键指标: 往返时间(RTT)、接收窗口(TCP Window)、重传包(Retransmission)、Dup ACK。
- 分析方法:
- 在Wireshark中使用
Statistics -> TCP Stream Graph -> Time-Sequence Graph (Stevens)观察吞吐量变化。 - 使用
tshark统计重传率:tshark -r capture.pcap -q -z io,stat,1,"tcp.analysis.retransmission"
- 在Wireshark中使用
- 核心指令: 使用显示过滤器
tcp.analysis.flags快速定位所有异常TCP事件。
安全分析(入侵检测、恶意流量)
- 关键特征: 异常协议版本、非常规端口、DNS查询长域名、SSL/TLS证书异常、ICMP隧道、异常大的数据包(如ICMP Echo超过64KB)、扫描模式。
- 关键方法:
- 协议违规检测: 比如HTTP请求头格式错误、SQL注入尝试(
GET /?id=1 OR 1=1)。 - 签名匹配: 使用Snort/Suricata规则引擎对镜像流量进行检测。
- 流量基线与异常偏离: 基于机器学习/统计,识别突然的流量暴涨(DDoS)或低频慢速攻击(Slowloris)。
- 协议违规检测: 比如HTTP请求头格式错误、SQL注入尝试(
- 工具: Zeek ( 原Bro )、Suricata、Security Onion。
故障分析(连接断开、丢包、黑洞)
- 关键位置: 查看三次握手是否完整(SYN -> SYN-ACK -> ACK)、四次挥手是否异常(RST替代了FIN)。
- 分析方法:
- 观察是否只有ACK包但没有数据(可能为Window Update或Zero Window)。
- 查找
TCP Previous segment lost和TCP ACKed unseen segment。
第四阶段:自动化与可视化(规模化处理)
面对海量数据(如每天数TB的镜像流量),手动分析不现实,需要建立自动化流水线。
- 抓取层(Agent): 在交换机或服务器上部署
ntopng、netflow(sFlow/IPFIX) 采集器。- 注:NetFlow是流统计(5元组+字节数),不是完整包,但非常适合做长周期趋势分析。
- 存储与索引层: 将Pcap文件存入Elasticsearch(通过Filebeat/Packetbeat)或使用Arkime(原Moloch)进行全包索引和检索。
- 分析层(规则引擎 + AI):
- 使用Zeek将流量转化为结构化日志(连接日志、HTTP日志、SSL日志)。
- 传入Spark/Flink等流处理引擎,实现实时告警(如:某IP每分钟DNS请求超过1000次 -> 告警)。
- 可视化层: Grafana时序仪表盘(流量趋势)、Kibana日志搜索(关键词定位)、即时拓扑图(TraceRoute/社交网络分析)。
一句话行动指南
如果你只想做一次快速分析:
- 抓取:
tcpdump -i any -nn -s0 -w /tmp/cap.pcap - 筛选(避免崩掉Wireshark):
tcpdump -r /tmp/cap.pcap -w /tmp/small.pcap host <目标IP> - 分析:用Wireshark打开
small.pcap,输入显示过滤器tcp.analysis.flags(看问题)+http.time > 0.5(看卡顿)。
如果你需要构建持续稳定运行的镜像流量分析系统:
建议采用 Zeek/Suricata ( 分析层 ) + Elasticsearch ( 索引层 ) + Grafana ( 展示层 ) + 规则库 ( 筛选层 ) 的架构,通过NetFlow/静态五元组做第一道粗筛,再用Zeek做协议级深度解析,最后将告警和日志入库供追溯分析。
标签: 精准筛选