For the complete documentation index, see llms.txt. This page is also available as Markdown.

20.4.使用审计跟踪

由于审计跟踪以 BSM 二进制格式存储,因此提供了几种内置工具来修改这些跟踪,或将其转换为文本格式。要将审计跟踪文件转换为简单的文本格式,可使用 praudit。若要精简审计跟踪文件以便分析、归档或打印,可使用 auditreduce。该工具支持多种选择参数,包括事件类型、事件类别、用户、事件日期或时间,以及操作的文件路径或对象。

例如,要以纯文本格式输出指定审计日志的所有内容:

# praudit /var/audit/AUDITFILE

其中 AUDITFILE 是要输出的审计日志文件。

审计跟踪由一系列审计记录组成,每条记录由多个令牌(tokens)组成,praudit 会按顺序逐行打印这些令牌。每个令牌具有特定的类型,如 header(审计记录头部)或 path(从名称查找的文件路径)。以下是 execve 事件的示例:

header,133,10,execve(2),0,Mon Sep 25 15:58:03 2006, + 384 msec
exec arg,finger,doug
path,/usr/bin/finger
attribute,555,root,wheel,90,24918,104944
subject,robert,root,wheel,root,wheel,38439,38032,42086,128.232.9.100
return,success,0
trailer,133

该审计记录表示一次成功的 execve 调用,其中命令 finger doug 被执行。exec arg 令牌包含由 shell 提供给内核的处理后的命令行;path 令牌保存由内核查找到的可执行文件路径;attribute 令牌说明了二进制文件并包含文件模式;subject 令牌存储了审计用户 ID、有效用户 ID 和组 ID、真实用户 ID 和组 ID、进程 ID、会话 ID、端口 ID 和登录地址。注意,审计用户 ID 和真实用户 ID 不同,因为用户 robert 在执行命令之前切换到 root 账户,但仍使用原始认证用户进行审计。return 令牌表示成功执行,而 trailer 令牌结束该记录。

还支持 XML 输出格式,可通过包含 -x 选项来选择。

由于审计日志文件可能非常大,可使用 auditreduce 来选择一部分记录。以下示例选择存储在 AUDITFILE 中的所有为用户 trhodes 生成的审计记录:

# auditreduce -u trhodes /var/audit/AUDITFILE | praudit

audit 组的成员有权限读取 /var/audit 中的审计跟踪。默认情况下,audit 组为空,因此只有 root 用户能读取审计跟踪。用户可被添加到 audit 组,以便委派审计复核权限。由于跟踪审计日志内容能显著揭示用户和进程行为,因此建议谨慎地委派审计复核权限。

20.4.1. 使用审计管道实时监控

审计管道是克隆伪设备,让应用程序能连接到实时审计记录流。这对入侵检测和系统监控应用程序的开发者尤为重要。然而,审计管道设备为管理员提供了方便的实时监控方式,避免了审计跟踪文件所有权或日志轮替中断事件流的问题。要跟踪实时的审计事件流,可使用:

默认情况下,审计管道设备节点仅对 root 用户可访问。要使其对 audit 组的成员可访问,可在 /etc/devfs.rules 中添加以下 devfs 规则:

有关配置 devfs 文件系统的更多信息,请参见 devfs.rules(5)

警告

很容易产生审计事件反馈循环,即查看每个审计事件都会导致生成更多审计事件。例如,如果审计了所有的网络 I/O,且在 SSH 会话中运行 praudit,将会以高速率生成持续不断的审计事件流,因为每个输出的事件都会生成一个新的事件。出于这个原因,建议在没有细粒度 I/O 审计的会话中,在审计管道设备上运行 praudit

20.4.2. 审计跟踪文件的轮替和压缩

审计跟踪由内核写入,并由审计守护进程 auditd(8) 管理。管理员不应尝试使用 newsyslog.conf(5) 或其他工具直接轮替审计日志。相反,应使用 audit 来关闭审计、重新配置审计系统并执行日志轮替。以下命令会导致审计守护进程创建新的审计日志,并向内核发送信号以开始使用新的日志。旧日志将被终止并重命名,此时管理员可对其进行操作:

如果 auditd(8) 当前没有运行,执行此命令将失败,并会产生错误消息。

将以下行添加到 /etc/crontab 文件中,将使日志轮替每十二小时执行一次:

保存 /etc/crontab 后,改动将生效。

可使用 audit_control 中的 filesz 项来基于文件大小自动轮替审计跟踪文件,具体说明请参见 audit_control 文件

由于审计跟踪文件可能非常大,因此通常希望在审计守护进程关闭跟踪文件后将其压缩或归档。可使用 audit_warn 脚本来执行多种审计相关事件的定制操作,包括在日志轮替时正常终止审计跟踪。例如,以下内容可添加到 /etc/security/audit_warn 中,以便在关闭时压缩审计跟踪文件:

其他归档活动可能包括将跟踪文件复制到集中式服务器、删除旧跟踪文件或精简审计跟踪以删除不需要的记录。此脚本仅在审计跟踪文件正常终止时运行,若跟踪文件在不正常关闭后仍未终止,则不会执行此脚本。

最后更新于