DPI深度报文检测架构及关键技术实现
DPI深度报文检测架构及关键技术实现
当前DPI(Deep Packet Inspect深度报文识别)技术是安全领域的关键技术点之一,围绕DPI技术衍生出的安全产品类型也非常的多样。在分析DPI的进一步技术实现之前,分析DPI对用户的价值可以看到主要体现在两个方面:
从攻击防御的角度看,Web类的安全风险正在成为目前安全风险的主流攻击形式,针对Web类应用层安全攻击的防护,依靠传统的防火墙是无法实现的,具备深度报文检测能力的IPS设备或者WAF设备开始为大家所熟知;
从业务应用识别分析的角度看,单纯的分析报文的头字段内容无法识别该报文所承载的具体的业务类型,要想深度了解报文所承载的业务应用类型及流量大小等信息,必须要跟踪业务应用的协议交互过程,并对报文的负载payload进行深度的识别。如果用户希望网络安全设备具备针对应用层的风险防护能力且能够对互联网出口的流量应用进行精细化的管理控制,DPI技术的能很好的满足客户的需求。
和传统的防火墙域间策略的匹配查询不同,DPI技术旨在借助字符串特征的逐包匹配来完成入侵检测和流量控制的目的,在这个过程中,深度报文检测的引擎设计和丰富的规则特征库定义是核心设计环节。从检测引擎设计的角度看,除了要有良好的设计框架之外,在收到需要检测的报文后,涉及到报文的正规化处理、检测引擎的协议解析、引擎对报文关键特征提取和高效算法查询等内容;从特征库的角度,涉及到对检测规则的定义、特征库的提取和升级更新等内容,接下来我们将针对其中的关键技术点进行说明。
1、DPI技术实现的基本框架(Deep Inspect Management)
从控制管理层面上看,DPI的各个业务模块的需求都可以抽象化成“规则”,基于这些规则定义可以生成不同的“分类”对象;规则同时具有“使能状态、报文动作”等属性,内部还设置有特征、选项等关键字部件。DIM的框架设计将业务模块的公共业务需求进行抽象并处理。控制管理层面的工作在用户态完成,主要工作包括:
统一开放格式的规则管理;
统一开放格式的特征库加载和文件解析;
配置变更和下发流程管理,包括引擎的编译和下发、规则的下发,以及它们的板间同步(如图1所示)。
从数据转发层面上看,DPI的各个业务需求都需要对应用层协议进行解析、解码和搜索。为了保证高效转发和单次报文处理,有别于传统防火墙的设计思路,在新一代安全产品的实现过程中必须有并行的检测引擎,尽可能保证只对报文进行一次处理。数据转发层面的需求主要在内核态进行处理,涉及到的几个功能模块如下:
协议解析器;
搜索算法引擎;
检测结果处理模块,或者说报文动作处理模块;一般是在I/O 接口的处理流程中(如图1所示)。
图1 DPI软件设计架构示意图(注:DIM, Deep Inspect Management)
这种将控制管理层和数据转发层相互独立的设计模型,使得CPU密集型的引擎预处理(编译和下发)和高性能的搜索算法过程分离在用户态和内核态,也可以使得我们的预处理和匹配在不同的单板甚至不同的设备上进行,易于保证转发流程的检测持续性和稳定性,匹配也易于由软件查表扩展成硬件处理器来完成。
2、DPI控制管理层面的规则定义
3、DPI检测引擎设计及典型算法模型
有别于传统的DFA(Deterministic Finite Automaton)和NFA(Non-Deterministic Finite Automaton)算法,H3C 的DPI软件引擎具有内存可伸缩特性。DIM用户态可动态感知需要加载软件引擎的单板或者子设备(的内核态)是否有充裕的内存,根据内存剩余情况和用户的配置选择最优的引擎存储方式,然后启动编译线程完成编译下发工作。海量特征的编译下发是一个CPU密集型过程,考虑到可能遇到的配置频繁变更或者特征库升级调度,DIM的编译线程设置了可中断可重入机制,不需要用户等待。
图 3 DPI 检测引擎在报文转发中的流程示意图
DPI内核态的检测引擎可能出现在入接口业务点、域间策略业务点或者出接口业务点,任何涉及DPI业务的配置启用都会开启转发流程中的DPI业务点,如果用户有多种相关配置,DPI会在报文转发流程中最早的业务点生效,其余点则不生效。在DPI的入接口处理时,数据转发层面的处理流程如协议解析、算法引擎和检测结果处理是其工作重点【图3】。
在具体的DPI检测引擎设计时,其在内核态的位置如图4所示。可以看出,DPI检测引擎包含了多种检测算法,典型的如Aho-Crassick , Boyer ,Moore算法以及PCRE算法等等,通过这些算法的配合可以有效实现关键特征的快速查找匹配,提升了查找效率。
图 4 DPI 检测引擎在内核态的部件示意图
4、DPI检测引擎的协议解析器设计模型
检测引擎自身包括三个部件:协议解析器、算法引擎和检测结果处理,下面主要对其关键部分的协议解析器进行说明。现阶段额度协议解析器的职责主要有:
1)协议确认: 进入HTTP、HTTPS等协议解析器的条件都是固定端口映射。但越来越多的互联网应用正试图通过80、443等传统端口来逃逸传统网络设备的检测和控制。因此必要的协议确认是防止这种逃逸的前提。
2)协议切分: 协议切分是在流(会话)的基础上进一步细分出“检测流”或者叫“事物”的概念。例如:HTTP的一次transaction、FTP的一次用户登录行为、SMTP/POP3的一次邮件发送/接收等,都抽象成一条“检测流”。有时一条流可以传输多次检测流,甚至同时有并发的检测流出现。协议切分对于关心检测流的业务模块有着重要意义,例如内容过滤和应用审计。
3)协议域切分:协议域切分是在最小的粒度上细分报文。将检测流分成Header和Body部分,Header还要细分成各个Field,包含Field Value和Field Data部分。协议域切分有助于判别该头域是否需要检测,判定该头域命中的特征与之定义是否吻合,以及识别提取审计日志信息的关键位置。
图 5 HTTP请求报文的协议域切分示意图
4)解码: HTTP的URI部分和邮件协议的Subject部分等进行了编码,需要协议解析器进行解码,大多数情况下需要我们将解码后的字段送入算法引擎。有些情况又有个别特征基于编码前定义,需要我们将原始字段送入算法引擎,但同时发生会对性能产生一定损耗。
5)解压缩:HTTP可以用gzip、x-gzip、deflate等方式传送压缩后的数据内容,在用户的配置要求下解析器会将内容解压缩后送入算法引擎,以帮助我们发现压缩数据中的需要被检测出的特征。
6)SSL卸载:在用户的配置要求下,可以通过SSL卸载技术尽可能还原HTTPS中的原始流量,进行更加全面的检测和控制。
7)协商协议识别:FTP、SIP以及很多加密方式的P2P协议都采用协商甚至多次协商的方式来进行数据传输。对应的协议解析器需要能够通过控制通道报文的解析识别出协商协议的数据通道的五元组特征,通过协商关联表的匹配来识别其数据通道。
当然,基于这些协议分析完成之后,通过算法引擎可以匹配查找可以发现相关的检测结果,同时送到后续的动作设计模块进行处理。在内核态,DPI支持大量的动作以及它们的组合,各个DPI的业务模块都可以基于规则或者规则分类来配置报文的动作。这些动作包括Permit/deny、Drop丢掉后续报文、Redirect或者发送双向TCP Reset断开连接、生成攻击日志告警等。
5、特征库的设计模型
在进行DPI特征库的设计时,一般都是采用统一的文件头结构和开放式TLV架构,易于软件统一处理和后续业务扩展。同时考虑到不同产品对存储空间、转发性能、并发规格的不同要求,为不同的产品(不限于NGFW)量身定制了不同的特征库。并且,为了能够快速完成升级,在服务器上放置了邻近旧版本的增量库(补丁包)。
图 6 DPI设备特征库升级流程示意图
结束语
DPI技术的应用和发展是一个动态不断完善的过程:一方面攻击类型在不断的发展变化,由此导致的攻击特征漏洞的提取也要与时俱进不断更新,另一方面随着攻击类型的增加,除了攻击特征漏洞匹配和应用层协议解析之外,未知的不能识别的攻击类型报文也会逐渐增加,目前已经出现的云端的未知攻击的检测识别技术可以为设备侧的DPI检测提供很好的补充,基于大数据的云端安全分析平台也会逐渐成为安全的核心竞争力,配合安全设备终端形成完整的DPI防护解决方案。
DPI深度报文检测架构及关键技术实现的更多相关文章
- 互联网DSP广告系统架构及关键技术解析
互联网DSP广告系统架构及关键技术解析 宿逆 关注 1.9 2017.10.09 17:05* 字数 8206 阅读 10271评论 2喜欢 60 广告和网络游戏是互联网企业主要的盈利模式 广告是广告 ...
- DSP广告系统架构及关键技术解析(转)
广告和网络游戏是互联网企业主要的盈利模式 广告是广告主通过媒体以尽可能低成本的方式与用户达成接触的商业行为.也就是说按照某种市场意图接触相应人群,影响其中潜在用户,使其选择广告主产品的几率增加,或对广 ...
- DPI深度包检测
最近在读网络协议方面的论文,接触到DPI技术.博主是个小白,这里写些查到的笔记. 原文出处因为比较多,杂乱.百度文库和许多地方都有,就不贴链接了. 1. DPI 全称为"Deep Packe ...
- DTS搭载全新自研内核,突破两地三中心架构的关键技术|腾讯云数据库
随着企业规模的扩大,对数据库可用性要求越来越高,更多企业采用两地三中心.异地多活的架构,以提高数据库的异常事件应对能力. 在数据库领域,我们常听的"两地三中心"."异地多 ...
- DPI (深度报文检测) 关于DPI的学习笔记
关于DPI的学习笔记 先看一下定义 : DPI(Deep Packet Inspection)是一种基于数据包的深度检测技术,针对不同的网络应用层载荷(例如HTTP.DNS等)进行深度检测,通过对报文 ...
- DPI (Deep Packet Inspection) 深度包检测技术
详解DPI与网络回溯分析技术 随着网络通讯技术进步与发展,网络通讯已跨入大数据时代,如何监控各类业务系统的通讯数据在大数据流量中传输质量,以及针对海量的网络通讯数据的范畴中存在少量的恶意流量的检测,避 ...
- 深度包检测(DPI)详细介绍
目录 简介 背景 流量识别 常用功能 具体功能 做法 特征识别 架构举例 部署方式 串接方式 并接方式 存在问题 检测引擎举例 参考文献 简介 DPI(Deep Packet Inspection)深 ...
- 基于DPI(深度报文解析)的应用识别
一.概述 1.DPI(Deep packet inspection,深度报文解析) 所谓“深度”是和普通的报文分析层次相比较而言的,“普通报文检测”仅分析IP包4 层以下的内容,包括源地址.目的地址. ...
- 解读:20大5G关键技术
解读:20大5G关键技术 5G网络技术主要分为三类:核心网.回传和前传网络.无线接入网. 核心网 核心网关键技术主要包括:网络功能虚拟化(NFV).软件定义网络(SDN).网络切片和多接入边缘计算(M ...
随机推荐
- B - Expression
Problem description Petya studies in a school and he adores Maths. His class has been studying arith ...
- wolf
package com.wh.Demo50; /** * @author 王恒 * @datetime 2017年4月7日 下午4:40:54 * @description * 分析:子类重写父类的方 ...
- 在线word论文生成的方法
下午实验室师妹问我latex转word生成的格式不行咋办.于是找了一下网上,发现了一个可以自动生成word论文的网站 https://typeset.io/formats/bmc/default-te ...
- Android GoogleMap 谷歌地图从零开始
说明 由于国内使用v2最新的谷歌地图有很多限制,所有如果要在真机上测试运行要做一些准备 准备1: vpn必不可少啦 推荐cloud vpn或者betternet都是不错的免费vpn 准备2: 由于最新 ...
- 1) 十分钟学会android--建立第一个APP,创建android项目
一个Android项目包含了所有构成Android应用的源代码文件. 本小节介绍如何使用Android Studio或者是SDK Tools中的命令行来创建一个新的项目. Note:在此之前,我们应该 ...
- background-attachment css3属性
<style type="text/css"> body{ margin: 0; } .zhan{ width: 100%; height: 500px; backgr ...
- MySQL定时任务与存储过程实例
shell 定时任务:/usr/bin/mysql -uroot -pxxxxx databasename -e "update table set ......."mysq ...
- WPF 解决拼接屏全屏的问题
需求: 8块1920*1080屏幕拼接 橙色4个框每个框(1920*1080)拼接成一个1920*1080 红色4个框每个框(1920*1080)拼接成一个1920*1080 橙色和红色作为displ ...
- Unity3D_脚本_获取对象的位置_碰撞后加一段音乐_旋转对象_使物体随机运动
获取对象的位置(Position) 在代码中加上 public Rigidbody cd;cd = GetComponent<Rigidbody>();Vector3 m=cd.trans ...
- [POI2007]MEG-Megalopolis 树状数组 + dfs序前缀和 好题
#include<cstdio> #include<cstring> #include<algorithm> using namespace std; const ...