第221篇:应用层识别与深度包检测(DPI)
关键词
DPI、深度包检测、应用识别、协议解析、特征匹配、行为分析、加密流量识别
一、DPI 概述
1.1 什么是 DPI
DPI(Deep Packet Inspection,深度包检测)不仅检查 IP 头部的五元组,还深入到应用层分析报文内容:
传统包过滤(到 L4): | 源 IP 10.0.0.1 | 目的 IP 8.8.8.8 | 端口 443/TCP | 协议 HTTPS | ← 只看到这里 | | --- | --- | --- | --- | --- |
DPI(到 L7): | 源 IP 10.0.0.1 | 目的 IP 8.8.8.8 | 端口 443/TCP | 协议 HTTPS | 应用层内容 Google YouTube Video Streaming | | --- | --- | --- | --- | --- | ↑ 传统方法只到这里 ↑ DPI 可以看到这里
1.2 DPI 的识别方法
DPI 使用多种技术组合来识别应用:
识别技术 原理 精度 性能
───────────────────────────────────────────────────────────────
端口识别 检查 TCP/UDP 端口号 低 最高
特征字匹配 匹配报文中的特定字符串 中-高 高
协议解码 完整解析协议流程 高 中
行为分析 分析通信行为模式 中 低
机器/深度学习 训练模型识别 高 低
二、DPI 识别技术详解
2.1 端口识别
最简单的识别方法——根据端口号判断应用:
端口号 传统应用
──────────────────────
80/TCP HTTP
443/TCP HTTPS
21/TCP FTP
22/TCP SSH
25/TCP SMTP
53/UDP DNS
局限性:
1. 应用可以运行在非标准端口(HTTP on 8080)
2. 标准端口可能跑不同应用(443 跑 WebSocket)
3. P2P 应用动态使用随机端口
2.2 特征字匹配
识别 HTTP 流量的特征字:
HTTP 请求的特征字:
GET /index.html HTTP/1.1
Host: www.example.com
User-Agent: Mozilla/5.0
↑ 特征字符串
华为 DPI 特征库包含:
- 5000+ 应用特征
- 每 2 周更新一次
- 支持自定义特征
# 查看 DPI 应用识别结果
display application statistics
Application Sessions Bandwidth
YouTube 1234 500 Mbps
Facebook 567 200 Mbps
WeChat 890 50 Mbps
Unknown 45 10 Mbps
2.3 协议解码
以 HTTP 为例,DPI 对协议进行完整解码:
原始流量:
TCP Payload:
47 45 54 20 2f 69 6e 64 65 78 2e 68 74 6d 6c ...
(GET /index.html ...)
DPI 解码结果:
方法:GET
URI:/index.html
版本:HTTP/1.1
主机:www.example.com
用户代理:Chrome/120
内容类型:text/html
状态码:200 OK
# 支持解码的协议列表(华为防火墙)
display dpi protocol supported
Protocol Category
HTTP Web
FTP File Transfer
SMTP/POP3/IMAP Email
DNS Name Resolution
SIP/H.323 VoIP
MySQL/MSSQL Database
SMB/NFS File Sharing
三、DPI 应用场景
3.1 应用识别 + 安全策略
# 基于应用的安全策略(而非端口)
security-policy
rule name Block_P2P
source-zone trust
destination-zone untrust
application app BitTorrent # 识别 BitTorrent 应用
application app Thunder # 识别迅雷
action deny # 一律禁止
!
rule name Limit_Video
source-zone trust
destination-zone untrust
application app YouTube
application app NetFlix
action permit
profile bandwidth YouTube 10000 # 限速 10 Mbps
3.2 带宽管理
# 不同应用分配不同带宽
bandwidth-profile name Enterprise_QoS
# 关键业务保障
application app ERP cir 50000 pir 100000 # ERP:50-100M
application app Voice cir 10000 pir 20000 # VoIP:10-20M
application app Video_Conference cir 20000 pir 50000 # 视频会议:20-50M
!
# 非关键业务限速
application app YouTube cir 5000 pir 10000 # 视频:5-10M
application app Games cir 2000 pir 5000 # 游戏:2-5M
!
# 其余应用
default cir 10000 pir 30000 # 其余共享 10-30M
3.3 日志审计
# DPI 应用日志
display application log
Time User Application Action Bandwidth
2024-03-15 10:00:01 10.0.0.1 YouTube Permit 5 Mbps
2024-03-15 10:00:02 10.0.0.2 BitTorrent Deny 0
2024-03-15 10:00:03 10.0.0.3 WeChat Permit 0.1 Mbps
2024-03-15 10:00:04 10.0.0.1 Zoom Permit 2 Mbps
四、加密流量识别
4.1 挑战
HTTPS/TLS 加密后,DPI 无法看到明文内容:
加密流量: | 源 IP 10.0.0.1 | | 端口 443 | | TLS 加密数据(不可读) 0x8A3F ... 不可解析 | | --- | --- | --- | --- | --- |
4.2 基于元数据的识别
即使加密,DPI 仍可以通过流量特征判断应用:
加密流量的识别依据:
1. TLS SNI(Server Name Indication)
Client Hello 中的 SNI 字段是明文:
SNI = www.youtube.com → 识别为 YouTube
2. 流量模式
视频流:稳定的大流量、长连接
网页浏览:突发性、短连接
VoIP:小包、固定间隔
P2P:对称流量、大量 UDP
3. JA3 指纹
TLS 握手参数(密码套件、扩展)的唯一组合
每个客户端的 JA3 指纹不同
可识别 VPN、Tor 等加密隧道
配置:
# 加密流量识别
application-profile name Encrypted_Detect
ja3 enable # JA3 指纹识别
sni enable # SNI 域名识别
traffic-analysis enable # 流量模式分析
五、DPI 性能考量
5.1 性能开销
DPI 处理级别与性能:
处理级别 吞吐量 CPU 占用
───────────────────────────────────────────────
无 DPI(L4 转发) 10 Gbps 5%
端口识别(基本 DPI) 8 Gbps 15%
特征匹配 5 Gbps 30%
协议解码 3 Gbps 50%
完整 DPI + 内容过滤 2 Gbps 70%
5.2 优化策略
1. 按需启用 DPI
对内网到内网的流量跳过 DPI
只对 Internet 边界流量启用
security-policy
rule name Internal_Traffic
source-zone trust
destination-zone trust
action permit # 跳过 DPI
2. 应用白名单
已知安全的流量跳过 DPI
application-profile name Skip_DPI
skip application app WeChat # 微信跳过 DPI
skip application app Corporate_VPN
3. 硬件加速
华为 USG6600E/9500E 内置 DPI 硬件加速引擎
吞吐量可达 10 Gbps(全 DPI 场景)
六、总结
| 知识点 | 核心要点 |
|---|---|
| DPI | 深入 L7 应用层的报文检测技术 |
| 识别方法 | 端口、特征字、协议解码、行为分析 |
| 应用场景 | 安全策略、带宽管理、日志审计 |
| 加密流量 | SNI/JA3/流量模式间接识别 |
| 性能影响 | DPI 越深,性能开销越大 |
| 优化策略 | 按需启用、白名单跳过、硬件加速 |
七、思考
- DPI 和传统包过滤(L4 ACL)的本质区别是什么?
- DPI 有哪几种识别技术?它们的精度和性能如何权衡?
- HTTPS 加密后,DPI 还能识别出 YouTube 流量吗?如何识别?
- 如果 DPI 误将正常应用识别为恶意应用,应该怎么排查和修正?
- 在一个 10Gbps 的出口链路上启用全 DPI,会对性能有什么影响?
下篇预告:第222篇《带宽管理与应用限速》——基于应用识别的智能带宽管理,保障关键业务带宽。