如何准备/构造异常检测功能(网络安全数据)
我的目标是使用群集/异常检测(用于入侵检测)分析网络日志(例如Apache,syslog,Active Directory安全审核等)。 从日志中,我有很多文本字段,例如IP地址,用户名,主机名,目标端口,源端口等等(总共15-20个字段)。我不知道日志中是否存在一些攻击,并且想突出显示最可疑的事件(异常值)。 通常,异常检测将概率/频率较低的点标记为异常。但是,一半的日志记录包含字段的唯一组合。因此,数据集中的一半记录将具有最低的频率。 如果我使用基于聚类的异常检测(例如,找到聚类,然后选择远离所有聚类中心的点),则需要找到不同点之间的距离。由于我有15-20个字段,因此它将是一个多维空间,其中维是用户名,端口,IP地址等。但是,马氏距离只能应用于正态分布的要素。这意味着无法找到数据点之间的距离并构造聚类... 例如,假设我在20条记录的数据集中有用户Alice,Bob,Carol,Dave,Eve和Frank。它们在数据库中可能具有以下发生次数:2,5,2,5,1,5。如果我只是将用户名映射到数字,例如 Alice --> 1 Bob --> 2 Carol --> 3 Dave --> 4 Eve --> 5 Frank --> 6 然后,我的用户名概率分布将如下所示: p(1)= 0.1,p(2)= 0.25,p(3)= 0.1,p(4)= 0.25,p(5)= 0.05,p(6)= 0.25 当然,这不是正态分布,也没有太大意义,因为我可以以任何不同的方式映射用户名... 因此,用户名,操作,端口号,IP地址等字段到数字的简单映射不会带来任何影响。 因此,我想问一下,通常如何处理文本字段/构造特征以使无监督的异常/异常检测成为可能? 编辑:数据结构。 我在数据库表中大约有100列,其中包含来自Active Directory事件的信息。从这100列中,我选择最重要的(从我的角度来看):SubjectUser,TargetUser,SourceIPaddress,SourceHostName,SourcePort,计算机,DestinationIPaddress,DestinationHostName,DestinationPort,操作,状态,FilePath,EventID,WeekDay,DayTime。 事件是Active Directory事件,其中EventID定义了记录的内容(例如,创建Kerberos票证,用户登录,用户注销等)。 数据样本如下所示: + ------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -------------------------------------------------- -+ | ID …