论文部分内容阅读
网络应用和系统规模的不断增大,网络环境日益复杂,这对异常检测提出了更高的要求。常用的基于网络流量的异常检测、基于恶意代码的异常检测和基于社交网络安全事件的异常检测均有它们的局限性。因此对网络和系统安全的异常检测问题选择合适的分析数据源是一个十分重要的问题。利用蕴含丰富信息量的日志数据能够对网络行为和系统状态进行分析,检测其中的异常并及时挽回不必要的损失,具有重要的意义。日志异常检测技术具有较好的灵活性、适应性,同时也由于日志数据本身的异构性、多源性、大数据量等特点,是目前异常检测领域研究的热点和难点问题。本文以完善现有日志异常检测与诊断方法为牵引,以提高基于日志序列的检测效果为目标,打破了常规的把日志当成一般文本对象来研究,通过深入研究适合于该任务的机器学习和深度学习方法,形成了一个相对完善的把日志当成序列对象来研究的理论体系,针对日志异常检测和诊断处理流程各模块中存在的主要问题,提出了相应的解决方案,形成了较为系统的研究成果。论文以日志序列拓展了异常检测领域的研究对象,丰富了日志挖掘领域的应用领域,完善了日志序列异常检测方法的体系架构。对发展通用日志序列异常检测模型具有重要的科学意义,对于网络和系统的异常诊断有重要的实用价值。本文采用“研究现状、发现问题、分析问题、建立模型、实验验证、解决问题”的研究思路,主要做了以下几方面的工作:第一,针对现有对日志模板抽取的研究过分依赖日志格式,没有研究多源日志的模板抽取,并且大都是离线式抽取、算法占用内存较高、不能满足实时需要的问题,提出了一种基于在线层次聚类的日志模板抽取(Online Hierarchical Clustering for Log Templates Extraction,LogOHC)方法,该方法首先对原始日志进行预处理,利用分布式的词向量表示方法对日志进行在线向量化,然后以增量方式在聚类树上添加叶子节点,形成新的聚类树,并对新的聚类树进行优化,最后生成模板。实验分析表明,LogOHC比已有在线模板提取方法具有更高的F1值,并适合于多源数据集,且单步执行时间较短,能够满足在线实时处理的要求。第二,针对传统日志异常检测模型大多不考虑日志的序列关系且方法仅适合于特定类型日志,而现有少量对日志序列的研究又对其特征表现能力不足、对较短日志序列的检测精度不够的问题,提出一种基于注意力机制的通用日志序列异常检测模型。该模型通过把日志模板序列建模为自然语言序列,以基于神经网络训练的词嵌入作为模型输入,很好地表现了目标词在当前日志序列中的语义规则,实现降维的目的,又加速了整个模型的运算效率;堆叠LSTM(Long Short-Term Memory)层有效提取日志序列的隐含模式;自注意力层通过计算一个序列中日志之间的相似度来表示其依赖关系,能更好地学习到一个序列的内部结构。异常检测模型通过把正常日志序列模式输入模型进行训练,能检测出未知的执行工作流序列异常。实验结果表明,该检测模型用于日志序列异常检测的总体准确率优于已有方法,且具有较低的时间开销。第三,针对一些新型攻击产生的日志序列中存在长时依赖关系,而现有的基于循环神经网络的日志序列异常检测模型对较短序列有很好的检测能力,但对长序列的检测能力不足的问题,提出一种基于时间卷积网络的通用日志序列异常检测模型。该模型用带参数的ReLU替换ReLU、用自适应平均池化层替换全连接层改进了时间卷积网络结构,很好地解决了原始时间卷积网络中的激活函数容易引起神经元“坏死”导致的无法学习到日志序列中更多有效特征,以及全连接层的参数量较多导致的容易引起过拟合的问题。实验结果表明,虽然收敛速度减慢,但准确率得到了提高。该检测模型的总体准确率优于已有方法。第四,针对用有监督方法解决日志异常检测问题需要有领域知识的人标注大量的数据,而现有研究对无监督的日志序列异常检测精度不够、异常检测策略考虑因素单一的问题,提出了一种基于生成对抗网络的日志序列异常检测方法,利用生成对抗网络的生成器能生成逼近训练数据分布的样本的能力,通过构建基于LSTM模型的生成器和判别器,使模型能对序列任务很好地建模。把正常的日志序列输入模型进行训练,对抗训练过程使得模型有很强的生成正常日志序列的能力。在测试阶段,以生成器的重构误差和判别器的判别误差二者的线性加权作为判定日志序列异常的标准。实验结果表明,该检测模型比基于PCA和自编码器的方法有更好的效果,并且模型稳定性好,对序列长度不敏感,可以很好地应对不同的异常检测任务。第五,针对异常检测模型虽然能检测异常位置,但是因为不能看到事件的发生过程导致诊断效果并不理想,且现有异常诊断对多工作流下产生的交错日志不能很好构建工作流图的问题,提出了一种带转移概率的控制流图挖掘方法。通过对日志构建控制流图,把原始日志信息转化为结构化的事件,该方法以日志模板序列作为输入,生成的控制流图中的节点代表不同的日志模板,有向边代表日志模板的执行序列,反映日志模板之间的依赖关系。日志的时间戳信息作为划分事件的一个重要参考。从实验分析可以看出,提出的控制流图挖掘方法有助于诊断发生异常的原因。