褚腾飞1,王建章2,许德森2,李东垣2,赵鹏2,王国相1,钱明1
(1. 北京邮电大学, 北京 100876; 2. 中华通信系统有限责任公司,北京 100070)
摘要:随着互联网的迅猛发展,单位内部用户的监管和网上行为责任追溯审计方法成为必需。文中根据局域网的特点,针对局域网网络行为审计问题,对相关技术进行了一定的研究和分析,提出了一种有效的基于TCP重组和快速多字符匹配的局域网行为审计方法,应用该方法可以更为高效地实现局域网中网络行为的审计,实际测试表明该方法具有更高的效率和可操作性。
关键词:局域网;行为审计;TCP重组;字符匹配
中图分类号:TP306+.3;TP309.2文献标识码:ADOI: 10.19358/j.issn.1674-7720.2017.05.023
引用格式:褚腾飞,王建章,许德森,等.一种面向局域网的网络行为审计方法的研究[J].微型机与应用,2017,36(5):76-79.
0引言
随着互联网的迅猛发展,许多单位内部局域网都和互联网相连,互联网给人们工作、生活带来了极大的方便,同时也造成新的安全隐患。解决网络安全主要采取的技术手段一般有防火墙、入侵检测系统(IDS)[1]、加密应用等,它们对防止系统入侵[2]都有一定的效果,但在监控和处理网络内部用户访问外部网络、预防用户泄漏重要资料等方面却不尽如人意。审计[3]能够提供系统事件的记录,可更迅速和系统地识别问题,是网络事故处理的重要依据。近年来,上网行为审计系统已成为网络安全领域的研究重点之一,国内外相继提出了一些安全审计系统的模型[4],如通过修改Linux内核实现的基于主机的安全审计系统[5],以及利用防火墙日志实现的安全审计系统[6]等,其审计的重点也逐步从传统的本主机和系统调用过渡到网络的访问行为和网络中的各种数据,但相关研究尚处在探索阶段。
1局域网审计系统架构
根据局域网的特点,一般情况下,局域网内的主机通过交换机再经由网关和路由器连接外部互联网。所以,本系统采用旁路的方式利用交换机镜像技术[7]将局域网内的数据映射到被审计主机的端口,同时采用JPCAP技术[8]设置审计主机网卡为混杂模式来获取通过网卡的所有数据。本系统通过对网络数据的采集、分析、识别[9],实时动态监测通信内容、网络行为和网络流量,发现和捕获各种敏感信息、违规行为,实时报警响应,全面记录网络系统中的各种会话和事件,实现对网络信息的智能关联分析[10]、评估及安全事件的准确定位。系统部署环境如图1。
1.1系统体系
局域网审计系统由三层构成,分别为数据采集层、数据分析处理层以及应用展示层,该架构使得技术和业务有了良好的结合,IT基础结构复杂性低,整体软件开发、支持和维护成本较低,应用程序移植性良好,网络访问、管理简便。系统架构如图2。
数据采集层主要功能是基于JPCAP技术捕获流经审计主机网卡的数据,并根据被审计主机的规则配置过滤掉无用的数据包,为数据分析处理层提供可靠的数据源。
数据分析处理层的主要功能包括:TCP重组、协议解析、内容审计。由于局域网的特性,网卡获取到的TCP数据包有可能会出现重复包、序号错乱和丢包等情况,所以线程进行内容还原操作之前,还需要对TCP数据包进行重组,保证截获到的数据的有效性。TCP重组模块将重组成功的TCP链接放入缓存队列中,协议解析模块将缓存队列中的TCP链接取出并根据其端口号判断所属协议,根据相应的协议对数据包进行解析和内容还原。本系统主要针对邮件收发协议SMTP和POP以及HTTP协议进行解析。内容审计模块对协议解析后得到的文本内容进行分析,根据数据库中的敏感词汇进行查找和匹配并生成相应的告警信息。
应用展示层基于B/S结构,采用SSH框架实现了Web端的行为审计系统平台,该平台功能包括审计系统的各种配置、审计结果的展示、审计人员管理等。
2关键算法
2.1TCP重组算法
TCP重组模块在整个系统中处于承上启下的位置,也是系统最重要的一环。捕获网络中的数据包有很多开源的工具包,例如Linux系统下的Libcap、Windows系统下的Winpcap[11]以及Java中间件JPCAP。但是,单单捕获数据包并不能保证数据的正确性。因为同一数据流中的数据包可能经过不同的网络路径到达目的地,造成数据包的不同时延、丢失、乱序等现象出现。因此,将从网络中间链路捕获来的数据包整合成有序的、不丢失的有序数据流的技术成为了很多安全系统研究的关键技术。
基于以上考虑,本文基于哈希表和TCP链接序列号的TCP数据重组算法[12],根据TCP链接的特点提出了一个高效的TCP算法,使得哈希映射的冲突尽可能的低,同时利用哈希表实现简单的特点,提高了TCP重组的效率。其基本思想是:对于一个捕获的数据包,需要根据一个哈希函数将其映射到哈希表中,同时根据哈希表中TCP链接数据流的接收序列号来判断该数据包是否合法。利用哈希表查找的高效性保证高速大流量TCP数据流重组,利用数据包的序列号保证数据包接收的正确性。TCP重组算法流程图如图3所示。
TCP会话重组算法的基本流程如下:
(1)利用JPCAP抓取TCP数据包,提取其四元组信息并记录其序列号、确认号和标识位。对于任何一个TCP链接,都存在唯一的四元组:<源IP地址,目的IP地址,源端口,目的端口>。
将四元组的信息传入哈希函数中会得到该TCP链接的一个哈希值,根据该哈希值可以定位到哈希表中该链接。
(2)在新的数据包到达时,如果这个包SYN为1,ACK为0,说明这是一个请求同步包,所以创建一个新的TCP链接放入HASH表中。同时初始化该链接中发送流的信息:状态为SYN_SENT,下一个包的序列号为当前包的SEQ+1。
(3)如果数据包的SYN为1,ACK为1,根据该包的四元组的哈希值去哈希表中查找,如果找到,表示服务器同意建立链接,如果该数据包的ACK_NUM等于客户端的下一个包的序列号,那么初始化该链接中服务器端的信息:状态为SYN_RCVD,设置服务器端的期望接收序列号为数据包的ACK_NUM。
(4)如果数据包ACK为1,来自客户端,且客户端的状态为SYN_SENT,服务器端状态为SYN_RCVD,且它的序列号与服务器端期待接收的序列号相等,则连接建立成功,更新客户端和服务器端状态为ESTABLISHED。
(5)如果数据包长度不为0或者标志位FIN为1,说明这是普通的数据包或者释放连接的包。如果当前包的序列号等于接收数据流中期待接收的序列号,则把当前包加入到接收流中,如果这个包FIN为1,则要设置发送流的状态为FIN_SENT,如果ACK同时也为1,通过接收流状态为FIN_SENT,则更新其状态为CONFIRMED,更新接收流的期待接收序列号为:数据包的长度+1;如果这个包FIN为0,则更新接收流的期待接收序列号为:数据包的长度。更新后遍历接收流中的乱序包缓冲区,判断是否有包符合接收流期待的序列号,如果有重复该步骤。
(6)如果包ACK为1,且接收流状态为FIN_SENT,则更新其状态为CONFIRMED,如果接收流和发送流都为CONFIRMED,则TCP链接完成接收。
(7)如果包RST为1,在哈希表中移除该链接。
2.2快速多字符串匹配算法
协议解析完成后,需要对解析后的文本内容进行敏感词汇匹配,检索是否存在敏感信息,从而保证局域网的安全。目前关于敏感词匹配算法的研究已经比较成熟,其中使用范围最为广泛的是单模式和多模式匹配算法。单字符查找算法中,最著名的两个是KMP算法和BM算法[13]。这两个算法在最坏情况下均具有线性的查找时间。但是如果模式字符串不止一个而是多个模式字符串组成的集合,那么BM算法就不太适合。WM算法是一种典型的多模式匹配算法,它是在BM算法基础上改进而来的高效匹配算法,WM算法具有很多优点,它使用多个字符组成的字符块来进行匹配,不像其他算法的单个字符比较。前缀表的恰当运用,使其显著降低了匹配过程中所消耗的时间,因此能够取得良好的实际效果,使其在多模式匹配领域得到了很快的发展。
本系统实现了一种基于改进Trie树的有限自动机(DFA)多模式匹配算法,DFA的基本功能是可以通过event和当前的state得到下一个state,即event+state=nextstate。在敏感词匹配系统中,为了能够应付较高的并发,应该尽量减少计算,而在DFA中基本没有什么计算,有的只是状态转移。本系统采用改进Trie树比矩阵更为简单地实现DFA算法。改进的Trie树由首字哈希表和子节点构成,每个敏感词都能构成一棵Trie树,构造Trie树的过程中把字符参与构词的位置信息定义成不同的状态,这样就构成一个有限的自动机。如果一个字符不是某个敏感词的尾字,称为中间态,用0表示,反之如果是尾字则用1表示,称为结尾态。
根据以上描述,改进的Trie树结构逻辑图如图4所示。
子节点是所有以当前字符为前缀的字符集合,子节点的数据结构采用哈希结构。敏感词的首字形成的节点存放在首字哈希表中,子节点采用哈希结构,状态用来判断是否到达词尾,改进的Trie树逻辑结构如图5所示。
在进行敏感词汇匹配之前,需要把敏感词库加载到内存中构造Trie树,构造Trie树的算法如下:
(1)读取字条首字,判断Trie树中是否有该字符,如果有跳转步骤(2);如果没有将其作为一棵Trie树的头节点插入首字符哈希表中,并设置状态为中间态。
(2)读取下一个字符,判断Trie树中是否存在该字符,如果有重复步骤(2);如果没有则插入该字符,如果该字符为该词的最后一个字符,设置状态为结尾态,反之为中间态。
(3)重复步骤(2),直至最后一个字符。
(4)重复步骤(1),直至所有敏感词插入完毕,Trie树构造完成。
Trie树构造完成之后就可以对文本进行快速多字符匹配了。匹配算法如下:
(1)依次读取待匹配的字符,在Trie树中首字符哈希表中查找是否有匹配的字符,如果没有,跳转(1),反之跳转(2);
(2)判断当前字符状态,如果为中间态,读取待匹配文本的下一个字符,在当前的子节点中查找是否存在该字符,如果不存在跳转(1),反之跳转(2)。如果当前字符为结尾态,则匹配成功,跳转步骤(1)直至待匹配文本匹配完成。
2.3审计系统模型测试结果分析
本系统是基于TCP重组算法和快速多字符匹配算法的安全审计系统,针对这两种算法对系统进行了测试。通过搭建一个小的局域网环境,浏览一定数量的网页,记录实际的TCP链接个数以及重组成功的TCP链接个数,测试结果如图6。
从图6中可以看出,随着TCP链接个数的增多,基于该TCP重组算法的重组成功率会下降,这主要是因为在数据包数据比较多、网络比较复杂的情况下,由丢包或者数据包乱序导致了重组失败。
为了测试快速多字符串匹配算法的效率,选择5 MB的字符串与AC算法和WM算法进行比较,测试环境为Win7,内存4 GB。测试结果如图7。
由图可知,快速多字符串匹配算法可以在一定程度上提高匹配的效率,并且随着模式串数据的增加,本文的算法匹配速度就越有优势。
3结束语
本文介绍了网络行为审计的相关背景和研究现状,分析了相关的技术,并以此为基础提出了基于TCP重组和敏感词匹配的局域网审计系统,该系统可以有效地检测用户的网络访问行为,及时发现非法访问并发出报警,保证内部网络的安全,更好地维护网络安全并提高网络信息的使用效率。另外,本文提出的TCP重组算法可以有效地实现TCP重组;快速多字符串匹配算法也比传统的多字符匹配算法的效率高,实现简单。
本文方法在前人的研究基础上取得了一定的进步,但是仍旧存在着很大的不足,比如,在大并发量的情况下本系统还是会出现重组失败以及匹配失败的情况,所以如何使系统承受大的网络吞吐量以及如何提高重组算法的成功率和敏感词匹配算法的效率是需要继续研究的课题。
参考文献
[1] 周远大.面向用户行为的内网安全管理系统研究与实现[D].北京:北京邮电大学,2014.
[2] KUMAR G D, RAO C V G, SINGH M K, et al. Using jpcap API to monitor, analyze, and report network traffic for DDoS attacks[C]. 14th International Conference on Computational Science and Its Applications,2014:35-39.
[3] 王斌.上网行为审计系统的研究与实现[D].北京:北京交通大学,2011.
[4] 黄媛.基于局域网的安全审计组件的设计与实现[D].西安:西安电子科技大学,2014.
[5] 王波.LINUX内核级安全审计系统的设计与实现[J].电脑知识与技术,2008,2(14):57-58.
[6] Xia Qing.Log based network security audit system research and design[J].Advanced Materials Research, 2010, 129-131:1426-1431.
[7] 于进玉.面向无线局域网的舆情监控框架设计与实现[D].北京:北京邮电大学,2015.
[8] SHEN Z, WANG H.Network data packet capture and protocol analysis on jpcap based[C].International Conference on Information Management, 2009:329-332.
[9] 张运明.协议行为审计关键技术研究与实现[D].长沙:国防科学技术大学, 2010.
[10] 赵灿明,李祝红.基于数据挖掘及数据分析的局域网用户网络访问行为审计系统[J].通讯世界,2015(1):41-43.
[11] 付强,左仁辉.基于winpcap实现网络监听技术[J].电脑知识与技术, 2008, 2(13):624-627.
[12] 梁勇.网络TCP数据流重组技术研究[J].信息通信,2012(6):35-36.
[13] WANG X, GE B Z, WANG W.A BM algorithm oriented on network security audit system[C].International Conference on E-business & Information System Security,2010:1-4.