网络流量基础:看懂正常,才能识别异常
做DDoS防护,说白了就是跟流量打交道。你连正常流量长什么样都不知道,怎么抓得出攻击?
我经常跟团队说一句话:“先学会看正常,再谈检测异常”。这一章,我们就从最基础的流量模型开始,把TCP/IP协议栈、UDP/TCP/HTTP/HTTPS/DNS这些常见流量的特征,一个一个捋清楚。
核心观点:正常流量有规律、有比例、有特征。攻击流量往往在这些维度上出现“突变”。你掌握了基线,就能一眼看出不对劲。
2.1 正常网络流量模型
正常流量不是随机乱跳的。它有几个明显特征:
- 周期性:上班时间流量高,凌晨流量低。工作日和周末也有差异。
- 比例稳定:TCP占大头(通常70%-90%),UDP次之,ICMP很少。
- 包长分布集中:TCP以小包(ACK、SYN)和大包(数据段)为主,UDP包长相对固定。
- 连接行为正常:三次握手完整,四次挥手正常,没有大量半连接或重传。
我个人习惯,在部署任何DDoS检测系统之前,先抓一周的流量做基线。你想想看,没有基线,你怎么定义“异常”?
实战技巧:用tcpdump抓24小时流量,统计各协议占比、包长分布、连接速率。把这些数据画成图,就是你最原始的“正常模型”。
2.2 TCP/IP协议栈回顾
TCP/IP协议栈,说白了就是四层模型。每一层干每一层的活,各司其职。
| 层级 | 名称 | 典型协议 | 核心作用 |
|---|---|---|---|
| 第4层 | 应用层 | HTTP, HTTPS, DNS, FTP | 为用户提供网络服务 |
| 第3层 | 传输层 | TCP, UDP | 端到端通信,数据分段与重组 |
| 第2层 | 网络层 | IP, ICMP | 路由寻址,包转发 |
| 第1层 | 网络接口层 | 以太网, Wi-Fi | 物理传输,帧封装 |
我记得刚入行时,有个老工程师跟我说:“你只要把传输层搞透了,DDoS检测就学会了一半。” 这话一点不假。因为大部分DDoS攻击,都集中在传输层和应用层。
2.3 UDP与TCP流量特征
这两个协议,是流量分析的重中之重。它们的区别,直接决定了攻击手法的不同。
TCP流量特征
- 面向连接:三次握手建立连接,四次挥手断开连接。
- 可靠传输:有确认、重传、滑动窗口机制。
- 流量特征明显:SYN包、SYN-ACK包、ACK包、数据包、FIN包,每种包都有固定大小和标志位。
- 正常比例:SYN包约占所有TCP包的5%-10%,数据包占60%-70%,ACK包占20%-30%。
注意:如果SYN包占比突然飙升到30%以上,且大量SYN包没有对应的SYN-ACK响应,这基本就是SYN Flood攻击。我曾经在客户现场遇到过,业务直接瘫痪,连ssh都连不上去。
UDP流量特征
- 无连接:发出去就不管了,没有确认机制。
- 包长固定:很多UDP应用(如DNS、NTP、游戏)的包长是固定的。
- 正常场景:DNS查询、视频流、VoIP、游戏数据。
- 异常信号:UDP流量突然暴增,且源端口随机、目的端口固定,大概率是UDP Flood。
说白了,TCP攻击靠“耗尽连接资源”,UDP攻击靠“填满带宽”。两种攻击的检测思路完全不同。
2.4 HTTP/HTTPS流量特征
Web流量是DDoS攻击的重灾区。我处理过的攻击案例里,超过一半是冲着HTTP/HTTPS来的。
HTTP流量特征
- 请求-响应模型:客户端发请求,服务器回响应。
- 方法多样:GET、POST、PUT、DELETE等,正常业务中GET占绝大多数(70%-80%)。
- 状态码分布:正常情况2xx占90%以上,4xx和5xx很少。
- User-Agent:正常请求的User-Agent是浏览器或合法客户端,攻击流量往往用伪造或空User-Agent。
- 请求间隔:正常用户有思考时间,攻击流量往往是毫秒级连续请求。
避坑指南:我曾经遇到一个案例,攻击者用大量GET请求刷一个静态页面,QPS飙到10万+。表面看是CC攻击,但仔细分析发现所有请求的Referer都一样,而且没有Cookie。这就是典型的“低慢速”攻击变种。
HTTPS流量特征
- 加密传输:内容不可见,但TLS握手过程可见。
- TLS握手特征:Client Hello、Server Hello、证书交换、密钥协商。
- 攻击难点:加密流量让传统特征检测失效,但握手阶段的异常仍然可识别。
- 常见攻击:HTTPS Flood、TLS重协商攻击、慢速攻击。
你想想看,HTTPS流量虽然加密了,但握手次数、证书大小、加密套件这些元数据还是暴露的。检测思路要从“看内容”转向“看行为”。
2.5 DNS流量特征
DNS流量平时不起眼,但一旦被利用,破坏力惊人。DNS放大攻击就是典型例子。
正常DNS流量特征
- 查询类型:A记录(IPv4)占绝大多数,AAAA(IPv6)、MX、CNAME次之。
- 包长:正常DNS查询包约50-60字节,响应包约100-500字节。
- 频率:客户端对同一域名的查询有缓存,不会频繁请求。
- 源端口:随机高位端口(1024-65535)。
DNS攻击流量特征
- 查询量暴增:每秒数万甚至数百万次查询。
- 源IP分散:攻击者伪造源IP,导致响应流量放大数十倍。
- 查询类型异常:大量ANY或TXT查询,响应包特别大。
- 目的端口固定:通常指向53端口。
严重警告:DNS放大攻击的放大倍数可以达到50-100倍。攻击者用1Mbps的伪造查询,就能打出50-100Mbps的响应流量。我曾经见过一个案例,攻击者利用开放DNS服务器,直接把客户的上行带宽打满,整个网络瘫痪。
2.6 知识体系总览
下面这张图,把本章的核心知识点串起来了。你可以把它当作流量分析的“地图”。
这张图把五个核心知识点串成了一个整体。你从“网络流量分析”出发,往五个方向展开,每个方向又有自己的子特征。做DDoS检测时,就是在这五个维度上同时做“偏差分析”。
个人建议:把这五个维度的正常基线做成仪表盘,实时监控。一旦某个维度出现“跳变”,立刻告警。我自己的团队就是这么干的,效果很好。
好了,这一章的内容就到这里。流量基础打牢了,后面讲攻击检测和应急响应,你才能听得懂、用得上。