记录中的名称=值字段无效

记录中的名称=值字段无效

我正在为 Linux Audit 编写一个解析器,我偶然发现了一些似乎不符合标准的奇怪情况。

我的参考是红帽的文档

正确的审计记录应该如下所示:

type=USER_CMD msg=audit(1464013671.517:403): pid=3569 uid=0 auid=1000 ses=7 msg='cwd="/root" cmd=123 terminal=pts/1 res=success'

记录中的名称=值字段无效

我们来看下面的记录:

type=DAEMON_START msg=audit(1464013652.147:626): auditd start, ver=2.4 format=raw kernel=3.16.0-4-586 auid=4294967295 pid=3557 res=success

该文档没有说明auditd start哪些内容不符合名称=值格式。

这是什么?我可以在哪里阅读相关内容?

逗号和空格作为分隔符

此外,文档说

每条记录由多个用空格或逗号分隔的“名称=值”对组成。

这显然是不正确的,因为我们可以看到它们auditd start, ver=2.4是用命令分隔的空间。

为什么会这样呢?标准在哪里真的描述?

记录中的额外空格

我们来看下面的记录:

type=CWD msg=audit(1464013682.961:409):  cwd="/root"

type=CWD msg=audit(1464013682.961:409):和之间有两个空格cwd="/root"。这没有任何意义。事实上,我只在带有type=CWD和 的记录中观察到这种行为cwd="/root"

为什么会这样呢?


注意:我在最近的 Debian 上生成了这些日志。

答案1

所以我解决了问题的一小部分——我发现这auditd start, ver=2.2是有效的。但我没有找到任何文档。我拥有的唯一文档是 Red Hat 手册中的示例:

例 7.5。其他audit.log事件

以下审核事件记录了auditd 守护进程的成功启动。 ver 字段显示已启动的审核守护程序的版本。

type=DAEMON_START msg=audit(1363713609.192:5426): auditd start, ver=2.2 format=raw kernel=2.6.32-358.2.1.el6.x86_64 auid=500 pid=4979 subj=unconfined_u:system_r:auditd_t:s0 res=success

以下审核事件记录 UID 为 500 的用户以 root 用户身份登录的失败尝试。

type=USER_AUTH msg=audit(1364475353.159:24270): user pid=3280 uid=500 auid=500 ses=1 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:authentication acct="root" exe="/bin/su" hostname=? addr=? terminal=pts/0 res=failed'

可悲的是,这些只是例子。我很想阅读该标准的实际文档,因为我在任何地方都找不到它。


更新

我向官方邮件列表提出了这些问题(查看对我的问题的完整答复)。

这是我学到的:

记录中的名称=值字段无效

我不清楚为什么auditd start存在,但这是史蒂夫·格鲁布对我的问题的回答。

诸如auditd start、user 等所有元素都在哪里列出?我找不到任何文档来指定冒号(将类型和 msg=audit(…) 与字段分开)和记录字段之间可能发生的情况。

确实没有,Libauparse 会处理所有这一切,因此您不必这样做。如果您想要进行翻译,您可以将日志输入auparse,然后按照您想要的方式格式化事件。

基本上,答案隐藏在 auparse 库的某个地方。

逗号和空格作为分隔符

为什么有些记录用逗号和空格分隔?例子:

type=DAEMON_START msg=audit(1363713609.192:5426): auditd start, ver=2.2 format=raw kernel=2.6.32-358.2.1.el6.x86_64 auid=500 pid=4979 subj=unconfined_u:system_r:auditd_t:s0 res=success

很久以前,这些记录应该是人类可读的(别笑)和机器可消费的。随着时间的推移,这些已转换为名称=值对。甚至你上面提到的那个也已经修复了。

记录中的额外空格

Steve Grubb 已经修复了这个问题。

补丁:https://www.redhat.com/archives/linux-audit/2016-July/msg00086.html

相关内容