Auditd 多行日志格式

Auditd 多行日志格式

似乎对于 auditd 拾取的任何给定“事件”,都会有大约四行日志添加到 auditd 日志中。

是否有任何可预测的模式可用于将日志文件行分组为单个事件?具体来说,我正在寻找表示事件开始和结束的内容。

例如,似乎“type=SYSCALL”表示事件的开始。但是我发现的 auditd 文档显示,存在大量(我告诉你,是大量)不同的记录类型,而对我来说,这意味着“SYSCALL”可能并不总是事件的指示。

更具体地说,我之所以问这个问题,是因为我正在使用 Sumologic 分析我的日志,他们有一种基于正则表达式的方法将多行日志数据分组为单个事件。我也会问他们这个问题,但由于这更多的是关于 auditd 而不是 Sumologic 的问题,所以我认为向这个社区提问会很有用。

答案1

我建议您使用 ausearch 实用程序对日志进行预处理,然后再将其发送到分析功能。首先,它会插入一个事件分隔符(四个 -),并且可以选择解释数据以使其更具可读性(将十六进制字符串再次转换为文本,将 uid 解释为用户名,您可以使用它的检查点功能仅在连续调用时获取新事件(请参阅手册页)。您也可以使用它来选择感兴趣的事件。

我想指出的是,Linux auditd 事件非常复杂,在决定需要分析什么时应谨慎行事。理想情况下,您应该将原始日志(在 ausearch -i 之后)存储在数据存储中,该数据存储还可以将它们规范化为事件,以传递给一个或多个分析功能(以防一种产品无法回答您的所有问题)。

答案2

是否有任何可预测的模式可用于将日志文件行分组为单个事件?具体来说,我正在寻找表示事件开始和结束的内容。

是,事件 ID。规范状态

审计事件是具有相同主机(节点)、时间戳和序列号的所有记录。主机(节点)上的每个事件都有唯一的时间戳和序列号。事件由多条记录组成,这些记录包含有关审计事件不同方面的信息。每条记录都用一种类型表示,该类型指示将遵循哪些字段。

“记录”==日志行。在以下示例中,该msg字段给出一个毫秒时间戳,后跟事件 ID(msg=audit(1605786316.840:248065)):

node=master type=SYSCALL msg=audit(1605786316.840:248065): arch=c000003e syscall=90 success=yes exit=0 ...
node=master type=CWD msg=audit(1605786316.840:248065): cwd="/home/sam"
node=master type=PATH msg=audit(1605786316.840:248065): item=0 inode=16075850 dev=fe:01 mode=0100644 o...
node=master type=PROCTITLE msg=audit(1605786316.840:248065): proctitle="/tmp/test"

现在,我无法找到答案的一个悬而未决的问题是,来自同一事件的记录是否保证连续。如果它们不连续,那将是非常令人惊讶的,而且我从未真正观察到过这种情况,但据我所知,文档中没有明确说明这一点。事实上,据我所知,文本日志格式似乎有点不明确,所以使用 ausearch/auparse 或二进制 libaudit C 接口(粗俗乏味......)会更安全。

相关内容