1算法设计目标
输入不同的命令是用户使用Linux服务器的基本途径,通过长时间采集不同用户在使用服务器过程中所使用的命令序列,挖掘其中频繁出现的命令序列,可以帮助我们了解用户使用该服务器的基本规律。
此外,如果存在多台服务器,那么我们可以分析挖掘这些服务器中用户输入的命令序列,挖掘其中存在的频繁模式,可以了解用户使用这些服务器的根本目的。如果当这些服务器被同一个黑客攻击,或者这些服务器遭受了同一种类型的攻击,那么我们挖掘出的频繁命令模式中会存在黑客输入的命令序列,据此可以尝试理解黑客的攻击手段,还原攻击场景,为防范奠定基础。
本项目拟采用FP-Growth算法实现用户输入命令序列频繁模式的挖掘,以在不同时间段采集到的用户输入命令序列为基础,通过用户shell+ip+主机名按不同用户的登录(三者都相同才视为同一用户)构建事务,以此为基础实现用户输入命令序列频繁模式的挖掘
2 算法基本原理
FP-Growth算法主要解决挖掘在多个集合中出现次数达到一定阈值的频繁项的集合。FP树是一种输入数据的压缩表示,它通过逐个读入事务,并把事务映射到FP树中的一条路径来构造,由于不同的事务可能会有若干个相同的项,因此它们的路径可能部分重叠。路径相互重叠越多,使用FP树结构获得的压缩效果越好。下表显示了一个数据集,它包含10个事务和5个项。
TID < |