网络安全 频道

【安全大讲堂之UTM】关键软件技术实现

    多核架构下,相当于每个平台内嵌多个处理器,如何合理调度多个处理器,做到性能与功能的平衡,是需要通过软件技术创新解决的。通常情况下,对于多核处理器的调用有串行和并行两种基本调度方式。多核的并行处理方式如图1所示。

 

    图1  多核的并行处理方式

    优点:

  •     ·各个核独立,业务相互不影响;
  •     ·没有性能瓶颈;
  •     ·灵活性高,扩容方便;
  •     ·可移植能力强。

    缺点:

  •     ·技术难度大;
  •     ·开发周期长;
  •     ·需要入侵、病毒、检测技术方面的深厚积累。

    难点:

  •     ·多核平台开发技术;
  •     ·引擎一体化;
  •     ·特征库一体化;
  •     ·操作系统并行化重构,包括内存管理、文件管理、定时器管理、任务调度等;
  •     ·内核故障自动恢复。

    多核的串行处理方式如图2所示。

 

    图2多核的串行处理

    优点:

  •     ·技术难度小;
  •     ·开发周期短;
  •     ·集成性强,容易集成其他厂商的功能模块。

    缺点:

  •     ·业务串行处理,存在性能瓶颈;
  •     ·灵活性差,模块或平台发生变化,牵一发而动全身,需要重构。

    难点:

  •     ·多核平台开发技术。

    对于并行和串行处理方式,各有优点,对于多核平台的UTM,非常好的的实现是把这两种方式的优点结合起来,这对驾驭多核提出了很大的挑战。

    分析匹配是UTM的关键步骤,在结构设计上做到优化,可以最大限度地提高设备的性能。为了便于了解区别,我们对叠加式UTM和一体化UTM的模型分别加以描述。

    叠加式UTM的深度内容检测匹配整个数据流过滤过程,其匹配过程的抽象描述如   图3所示。

 

    图3 叠加式UTM系统匹配过程逻辑图

    UTM的特征匹配器采用多模串匹配算法,这种算法的匹配效率和特征关键的总数量相关性不大,和有待过滤的数据流长短成正比关系。从图3可以看出,由于数据是串行穿过每个匹配器的,从而导致了输入数据被多次匹配,从而降低了匹配效率。

    一体化UTM需要采用基于标签的融合式综合匹配技术。这种技术在结构上最大限度地融合了存在冗余功能的模块,从而避免了重复的数据还原、分析过程。同时将相关的特征码加上标签,输入同一个特征匹配器——融合式综合匹配器,融合后的过滤模块对输入的数据匹配一次,匹配到关键字后,根据相应关键字的标签选择报警/响应方式。这避免了对同一数据流进行重复匹配过滤的操作。基于标签的融合式综合匹配技术的原理图如  图4所示。

 

    图4 基于标签的融合式综合匹配技术

    特征匹配的过程不仅包括串匹配,还有对诸如地址、端口、协议类型等许多协议字段的匹配。为了方便,我们将多个协议字段构成的模式称为多数据类型模式,与上面提到的串模式进行区分,串模式可以认为是多数据类型模式的一个子集。

    在以往的工作中,我们受AC算法的启发,将其扩展到多数据类型模式匹配,即将多个模式中的相同协议字段归并,构建一个或多个树型模式结构,达到一次匹配多个模式的目的。

    与串匹配不同的是,多数据类型模式中,每种数据类型的单次匹配开销是不同的,在实际运行中的命中几率也是不同的。同样是树型数据结构,其非常好的效率和最差效率相差可能在一个数量级以上,如果尽可能做好降低命中率、低匹配开销的工作,将会接近非常好的的匹配效率。因此要深入分析各协议字段的特点,在实现系统初始化时根据当前特征库自动建立非常好的效率规则树的功能。

    UTM上的应用层安全功能很多,通过“对症下药”我们知道,检测是关键和难点。在实施多种应用层安全功能时,对数据进行全面的、精确的协议分析是确保高安全能力、高性能的前提条件。

    一般的协议类型识别方法是利用RFC规定的协议默认端口来判断协议的类型,然而这种方法的准确性并不高,因此需要通过增加对后续数据报文内容的分析来综合判断协议类型,同时在底层平台中设计相应的处理机制,以支持对协议类型的综合判断。在TCP/IP网络结构下,应用层的数据报文主要基于UDP和TCP两种传输层之上,下面进行关键技术讨论。

    1)UDP数据

    在平台的性能和实际应用中,对于没有上下文信息的数据,比如IP分片、IP数据和UDP数据等,采用优先级按照插件优先级的顺序进行调用,根据高优先级的插件的返回结果决定当前数据是否提交低优先级的插件处理。例如,如果存在两个不同的IP层数据处理插件IPP1、IPP2,分别赋予两个插件优先级1,2。当监控平台捕获网络数据包A的时候,平台首先调用优先级最高的插件IPP1,如果IPP1处理完成后返回PASS指令,则将当前数据包继续提交插件IPP2,如果IPP1处理完成后返回的指令是DROP,则抛弃当前的数据包,不再提交优先级较低的IPP2处理。这种方式可以有效地避免同一数据包的重复处理,可以有效地提高系统的整体性能。

    2)TCP数据

    针对有上下文连接信息的TCP数据,采用竞争连接控制权的方式来决定处理插件。相对于网络层的协议而言,应用层的协议没有统一的表示来表明协议的类型。

    目前,除了少数的协议(如:DNS和SMTP协议)可以通过TCP连接的目的端口判定以外,其他的协议均可以变换连接的端口,比如HTTP协议虽然在RFC规定默认情况下使用80端口,但在实际应用中,可以见到大量的网站采用其他端口,比如说1080、8080等。

    因此,对于应用层协议的判定,有必要通过对数据内容进行分析来进行协议识别。但是应用层协议种类繁多、内容复杂、并且更新很快,而通过平台统一完成应用层协议的识别既复杂又降低了平台的通用性和可扩展性,因此可将具体协议的识别交给进行相应协议处理的插件去完成,如图5所示,每个数据报文按自上而下的顺序依次传递给各插件进行处理。

 

    图5 插件的组织结构

    当底层平台捕获一个TCP连接的建立信息,平台将这个连接建立的信息提交所有的TCP协议处理插件进行处理,每个插件的处理过程如图2-8所示。所有的插件都必须对当前连接的内容进行处理,判定当前连接的类型是否是自己所能处理的协议。

    如果不是,则通过平台提供的函数DROP_ME通知平台放弃当前连接的处理权;如果插件识别出当前连接的协议和他所能处理的协议吻合,插件通过函数KEEP_ME通知平台宣称自己对于当前连接的处理控制权;而对于那些根据当前信息还不能进行有效判断的功能插件,则可以使用函数PEND_ME通知平台将自己挂在当前连接上等待进一步更多的数据到来再完成有效的判断。

    这样,通过不断到达的数据包驱动上述过程,可以找到当前连接的处理插件或者所有的插件均放弃对于当前连接的处理权。如果找到了当前连接的处理插件平台,则需要通知调用了PEND_ME的插件释放对于当前连接的控制并完成现场销毁。

    由于可能出现在同一TCP连接中包含多个应用层协议的问题,比如说使用SOCKS代理进行HTTP访问的TCP连接,连接的前一部分是SOCKS协议,而连接的后一个部分则为标准的HTTP协议,所以平台提供函数RESTORE_ME函数允许插件在完成协议分析以后将连接控制权交还给平台,使平台重新选择当前连接的处理插件。对于一个TCP连接,平台的状态转换也如图6所示。

 

    图6 插件的处理过程

    这种方法给出了一种协议类型识别及内容分析的实现机制,它使得底层平台具有良好的通用性和可扩展性。

    在UTM中存在很多特征,包括病毒特征、入侵特征、内容过滤对象特征、垃圾邮件特征等,对这些特征进行匹配是比较耗用系统资源的,通过优化算法,提高匹配效率是必需的。

    在过去的几十年内学术界提出了若干的多模匹配算法,并且在产业界得到了很好的应用,在商业产品中应用较多的有Aho-Corasick、Wu-Manber和ExB算法或它们的变种。根据研究发现,所有这些算法的性能分析全部是基于理想的存储模型,忽略访问存储器的性能开销。由于存储器速度远低于处理器速度,两者相差一个数量级以上,为避免存储器效能低造成系统整体的效能低下,绝大多数系统采用多级存储结构,以增加少量的高速缓存隐藏存储器的性能瓶颈。但是在多串匹配算法中,数据结构非常庞大,并且匹配过程中不断在非连续的地址间跳转,此时高速缓存的命中率大幅下降,不考虑访问存储器开销显然已不能反映各算法在实际应用中的效能了。

    实际上不存在一种普适的算法能够在各种情况下都有非常好的表现,同样的算法可能在不同的数据源、特征集、处理器结构上性能相差甚远。我们将结合具体的硬件(处理器)架构和匹配规则的分布类型,将其抽象为与匹配算法效能相关的若干关键参数,计算出当前适用的最优算法。具体采用动态和静态两种方式来实现自适应选择。

    静态自适应在系统初始化时进行,统计各协议变量特征及相关匹配模式特征,结合备选多模式匹配算法的性能特征,为规则匹配树节点选择最优的多模式匹配算法。控制参数包括处理器类型、主频、Cache Line长度、L2Cache容量、存储器时延、最短模式长度、次短模式长度、模式数量、模式字符集大小、同前缀模式数量等。动态自适应在系统运行过程中采样统计影响算法效率的网络数据,如果统计值显示当前网络数据趋势稳定,则进行动态算法选择,确定是否有大幅超过当前算法效率的算法模块存在,并进行调用。

    对用户的多个网络行为进行关联,是提高检测精度的有效手段。比如一个用户首先对HTTP服务进行了慢速CGI扫描,服务端反馈的结果证明其运行了可能含有漏洞的某个CGI,之后该用户又发送了包含ShellCode的请求。若分别看这两次行为,每个都不能绝对地将其界定为恶意行为;如果将两个行为联系起来,则基本可以确定该行为的高风险等级。

    针对大规模的监测系统应用中可能出现一个网络异常行为在多个监测点作为事件报告而形成事件洪流的问题,数据关联性分析模块首次提出并采用了基于统计分析的二次事件分析技术,就能够对不同时间、不同地点、不同事件的大量信息进行统一处理,简洁、准确地报告出正确的网络安全事件。

    大规模网络的数据集中在一起分析,可以发现下列在局部网络无法检测的现象。

    1)一对多的攻击现象

    比如病毒发作时的传染行为,特点为一个源在一段时间内向多个目标发动攻击行为。

    2)多对一的攻击现象

    比如分布式拒绝服务行为,对网络带宽较大的主机而言,这是最有效的拒绝服务攻击方式。

    3)攻击传递现象

    包括病毒的传染,以及黑客常用的手段:先攻击一台主机,再利用它攻击其他计算机,具有很强的隐蔽性。

    对于大规模的蠕虫类、病毒类和分布攻击事件,如果对事件的源、目的信息逐条记录,将产生大量的报警日志信息,这对系统的正常运行将产生不利影响。本系统支持对于事件的归并处理技术,即对于事件可采取按源地址归并、以目的地址归并、以源或目的地址归并的归并策略。这样既可以降低事件的报警频率、避免日志洪流的产生,又可以明确攻击发生的规模情况。

    在极为罕见的情况下,如果发生海量事件生成,系统可以将数据写入存储缓冲区中,在后期网络空闲时系统自动传输;如存储缓冲区满时,系统将采用按事件优先级的淘汰策略,首先淘汰低优先级事件的方式进行处理,以确保事件的优先存储。

7  基于知识库的非法连接请求动态抽样与分析技术

    通过建立统一的数学分析模型,并在超大流量的情况下依据概率分析结果进行Randomdrop是目前可行的方法之一。难点在于在建立一个合理灵活的数学模型的同时又不用占用系统过多的资源。

    在网络环境之中不断记录正常的连接请求,通过不间断的学习过程,规划出一套数学模型(知识库),用以在超大流量攻击到达时迅速检测出异常的流量,并且选择有效性概率较高的连接予以建立,其他概率较低的连接予以丢弃,这样一来,即使发生超大规模的拒绝服务攻击,也能够保障多数合法用户正常的网络访问,而且避免了SYN Cookie发包所引发的网络路由器负担过重。

    另外,基于黑客行为分析,还可以使用如下事件作为概率条件:

  •     ·经常能够连接成功的IP地址或网段提高其通过概率;
  •     ·某一IP地址访问连续端口降低其通过概率;
  •     ·某一IP地址多次请求失败降低其通过概率;
  •     ·某一IP地址曾进行过拒绝服务攻击降低其通过概率。
0
相关文章