Page 320 - 《软件学报》2020年第10期
P. 320

3296                                  Journal of Software  软件学报 Vol.31, No.10, October 2020

         night, midnight), and has obtained the abnormal log traffic patterns and their relationships in different time periods. The method can also
         be extended to the system logs of other distributed systems.
         Key words:    abnormal log flow; principal component analysis; hierarchical clustering; longest common subsequence; adaptive K-itemset
                  algorithm

             系统日志是由 Linux 系统 syslog 服务产生的日志,用于记录系统中发生的各类事件信息,在大规模系统中具
         有很重要的意义.中国国家高性能计算环境是由国内众多超算中心和高校的计算集群组成的国家级大型高性
                                                                            [1]
         能计算环境,采用中国科学院计算机网络信息中心自主研发的网格环境中间件 SCE 聚合了大量的通用计算
         资源,为全国众多高校和研究机构的用户提供了优质的计算服务.由于环境的系统中存在种类繁多的应用和服
         务,使得每个节点都会产生大量的系统日志,这使得最终的日志文件变得极为庞大,直接采用人工的方法处理这
         些日志显然是一项不可能的任务.而这些日志中往往包括各种异常现象的信息,为了从大量的日志中提取出这
         些异常的流量信息,我们需要使用一些异常检测方法对其进行分析.
             传统的流量异常检测方法基于签名,这种方法有一个显著的局限性,它们的本质是利用以前出现过的攻击
         来过滤发现异常,即它们无法检测出可能会出现的新异常.此外,即使一个新的攻击被检测到了,对应的签名也
         得到了开发,但是该签名在网络上的部署通常会有延迟.这些限制使得基于机器学习的入侵检测技术越来越受
                                                                   [2]
         到关注.基于机器学习的检测技术主要分为两大类:误用检测和异常检测 .误用检测属于机器学习中的有监督
         算法,这种算法在使用时需要将所有训练样本标记为“正常”和“异常”,然后通过输入这些有标签的数据进行学
         习训练,更新模型参数.当新的流量特征输入时,就可以通过学习到的模型预测对应时刻的流量为“正常”还是
         “异常”.误用检测的主要优点是在检测已知类型的异常时具有很高的精度,但其缺点是无法检测未知的流量异
         常.而异常检测在使用时不需要提前得到数据的标签类型,属于无监督学习算法.其主要思想是:根据已知的大
         量数据进行模型建立,然后自动地从这些数据中找到偏离数据中心的少量数据作为潜在可能的异常.因此,此类
         异常检测技术可以自动地识别任何新的异常,但其缺点是可能出现误判的情况,即将正常的流量标记为异常.高
         性能计算环境中,多节点产生的日志复杂,内容丰富,迭代性强,因此使用无监督学习算法较为合适.
                    [3]
             Vaarandi 提出了一个轻量级的、开源的、与平台无关的基于规则的事件相关的工具,称为 SEC(简单事件
         相关器),并在文献[4,5]中描述了它的应用经验.该工具的主要思想是:通过写配置文件对日志中的不同日志类
         型进行匹配,然后通过匹配的类型出现顺序来进行模式判定.比如匹配出一条端口扫描的日志,随后匹配出一条
         防火墙生成的拒绝日志,则代表有人企图访问一台主机的一种流量异常.因此,不同类型的日志按照一定顺序出
         现,可能代表一种异常的流量模式.其不足之处是:所有配置文件都必须自己完成,对于不同的日志系统都需要
         修改配置文件.
             本文在对日志进行分析时,首先自动地将日志分类,然后通过无监督异常检测方法得到异常日志类型的序
         列,并将这些序列所代表的异常日志流量模式进行聚类,最后分析结果并得出结论.本文的整体流程除了设定少
         量阈值外,得到异常日志流量模式的过程全自动化进行,这样使得系统管理员对系统日志流量的监控变得简单.
             本文第 1 节介绍相关研究内容.第 2 节描述系统日志前期的分类研究和后续讨论中使用的数学符号.第 3
         节对整体方法进行描述.第 4 节设置实验并对实验结果进行分析.最后在第 5 节进行总结和展望.

         1    相关研究
             本节简单讨论一下日志模式分类、日志后验分析以及日志类型序列度量的相关研究.
             (1)  日志模式分类
                    [6]
             Vaarandi 对于日志文件数据展示了一种创新的聚类算法 SLCT,该聚类算法基于 Apriori 频繁项集,需要使
         用者提供支持阈值作为输入.这个支持阈值既要控制这些算法的输出,同时也是其内部实现机理的基础.之后,
         他又在文献[7]中改进了日志的聚类算法,得到名为 LogHound 的算法.这一算法是一种基于广度优先搜索的频
         繁项集挖掘算法,用于从事件日志中挖掘频繁模式.该算法结合了广度优先和深度优先算法的特点,同时考虑了
   315   316   317   318   319   320   321   322   323   324   325