系统管理指南:安全性服务

审计命令

本节提供有关以下命令的信息:

auditd 守护进程

以下列表概述了 auditd 守护进程的功能。

当系统进入多用户模式时,auditd 守护进程便会自动启动。也可以从命令行启动此守护进程。当 auditd 守护进程启动时,它会计算审计文件所需的空闲空间量。

auditd 守护进程使用 audit_control 文件中的审计目录列表作为创建审计文件的可能位置。此守护进程维护指向此目录列表的指针,该指针开始于第一个目录。每次在 auditd 守护进程需要创建审计文件时,都会将文件放入列表内的第一个可用目录中。列表开始于 auditd 守护进程的当前指针处。您可以运行 audit -s 命令将指针复位到列表的开始处。audit -n 命令指示此守护进程切换到新的审计文件。新的文件在当前文件所在的目录中创建。

audit 命令

audit 命令可控制 auditd 守护进程的操作。audit 命令可以执行以下任务:

有关可用选项的介绍,请参见 audit(1M) 手册页。

bsmrecord 命令

bsmrecord 命令可显示在 /etc/security/audit_event 文件中定义的审计事件的格式。输出包括事件的审计 ID、审计类、审计标志以及按顺序列出的记录的审计标记。如果不使用任何选项,则 bsmrecord 输出将在终端窗口中显示。如果使用 -h 选项,则输出将适合于在浏览器中进行查看。有关 bsmrecord 命令的使用示例,请参见如何显示审计记录格式。另请参见 bsmrecord(1M) 手册页。

auditreduce 命令

auditreduce 命令可汇总以二进制格式存储的审计记录。此命令可以合并来自一个或多个输入审计文件的审计记录,还可以用于执行后选审计记录。这些记录仍保持二进制格式。要合并整个审计跟踪,请在审计服务器上运行此命令。审计服务器是指挂载了用于安装的所有审计文件系统的系统。有关更多信息,请参见 auditreduce(1M) 手册页。

使用 auditreduce 命令,可以从一个位置跟踪多个系统上的所有已审计的操作。此命令可以将所有审计文件的逻辑组合作为一个审计跟踪单元进行读取。您必须对站点上要进行审计的所有系统进行相同的配置,并为审计文件创建服务器和本地目录。auditreduce 命令会忽略记录的生成方式或记录的存储位置。如果不使用选项,则 auditreduce 命令将合并审计根目录内所有子目录中的所有审计文件的审计记录。通常,/etc/security/audit 为审计根目录。auditreduce 命令将已合并的结果发送到标准输出。 您也可以将这些结果放入按时间顺序排列的单个输出文件中。 此文件包含二进制数据。

auditreduce 命令还可以选择特定的记录类型进行分析。 auditreduce 命令的合并功能和选择功能在逻辑上是相互独立的。在系统合并输入文件并将其写入磁盘之前,auditreduce 命令将在系统读取记录时从这些文件中捕获数据。

通过为 auditreduce 命令指定选项,还可以执行以下操作:

如果不使用参数,则 auditreduce 命令将检查 /etc/security/audit 目录(缺省审计根目录)中的子目录,它还会检查 start-time.end-time.hostname 文件所在的 files 目录。auditreduce 命令对于审计数据位于不同目录的情况非常有用。图 30–1 显示了不同主机上不同目录中的审计数据。图 30–2 显示了不同审计服务器上不同目录中的审计数据。

图 30–1 按主机排序的审计跟踪存储

图表显示了顶层目录名为主机名的缺省审计根目录。

图 30–2 按服务器排序的审计跟踪存储

图表显示了顶层目录名为服务器名的缺省审计根目录。

如果用于 /etc/security/audit 目录的分区非常小,则可能无法在缺省目录中存储审计数据。可以使用 -R 选项将 auditreduce 命令传递到其他目录:


# auditreduce -R /var/audit-alt 

还可以使用 -S 选项指定特定的子目录:


# auditreduce -S /var/audit-alt/host1 

有关其他选项和更多示例,请参见 auditreduce(1M) 手册页。

praudit 命令

praudit 命令可使 auditreduce 命令的二进制输出具有可读性。praudit 命令可从标准输入中读取二进制格式的审计记录,并以可显示的格式显示这些记录。输入既可以从 auditreduce 命令进行管道输出,也可以从单个审计文件进行管道输出。输入还可以使用 cat 命令生成以串联数个文件,或者针对当前审计文件使用 tail 命令生成。

praudit 命令可以生成四种输出格式。第五个选项,即 -l(长),可在每个输出行中列显一条审计记录。缺省设置为在每个输出行中放置一个审计标记。-d 选项可更改标记字段之间以及标记之间使用的分隔符。缺省分隔符为逗号。

praudit 命令的缺省输出格式中,可以轻松地将每条记录标识为一系列审计标记。每个标记都在单独的行中显示。每条记录都以 header 标记开始。例如,您可以使用 awk 命令进一步处理输出。

以下是 header 标记的 praudit -l 命令的输出:


header,173,2,settppriv(2),,example1,2003-10-13 13:46:02.174 -07:00

以下是同一 header 标记的 praudit -r 命令的输出:


121,173,2,289,0x0000,192.168.86.166,1066077962,174352445

示例 30–1 使用脚本处理 praudit 输出

您可能需要将 praudit 命令的输出作为多行文本处理。例如,您可能需要选择 auditreduce 命令无法选择的记录。您可以使用简单的 shell 脚本来处理 praudit 命令的输出。下面的简单示例脚本在每行中放置一条审计记录,搜索用户指定的字符串,然后将审计文件返回到其原始格式。


#!/bin/sh

#

## This script takes an argument of a user-specified string.

#  The sed command prefixes the header tokens with Control-A

#  The first tr command puts the audit tokens for one record 

#  onto one line while preserving the line breaks as Control-A

#

praudit | sed -e '1,2d' -e '$s/^file.*$//' -e 's/^header/^aheader/' \\

| tr '\\012\\001' '\\002\\012' \\

| grep "$1" \\ 查找用户指定的字符串

| tr '\\002' '\\012' 恢复原始的新换行符

请注意,脚本中的 ^aCtrl-A,而不是 ^a 这两个字符。前缀将 header 标记与可能显示为文本的字符串 header 区分开来。


auditconfig 命令

auditconfig 命令可提供命令行界面来检索并设置审计配置参数。auditconfig 命令可以执行以下任务:

有关命令选项的介绍,请参见 auditconfig(1M) 手册页。