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

审计术语和概念

以下术语用于说明审计服务。某些定义包含更完整说明的链接。

表 27–1 Solaris 审计术语

术语 

定义 

Audit class(审计类) 

一组审计事件。审计类提供选择一组要审计的事件的方法。有关更多信息,请参见审计类和预选

Audit directory(审计目录) 

二进制格式的审计文件的仓库。有关审计目录类型的说明,请参见审计文件

Audit event(审计事件) 

被审计的与安全相关的系统操作。为了便于选择,将事件分为各个审计类。有关可以审计的系统操作的介绍,请参见审计事件

Audit policy(审计策略) 

一组可以在您的站点中启用或禁用的审计选项。这些选项包括是否记录某种审计数据,同时还包括是否在写满审计跟踪时暂停可审计的操作。有关更多信息,请参见确定审计策略

Audit record(审计记录) 

存储在审计文件中的审计数据。一条审计记录描述一个审计事件。每条审计记录由多个审计标记组成。有关审计记录的更多信息,请参见审计记录和审计标记

Audit token(审计标记) 

审计记录或审计事件字段。每个审计标记描述审计事件的一个属性,例如用户、程序或其他对象。有关所有审计标记的说明,请参见审计标记格式

Audit trail(审计跟踪) 

一个或多个审计文件的集合,用于存储运行审计服务的所有系统上的审计数据。有关更多信息,请参见审计跟踪

Preselection(预选) 

预选是指在启用审计服务之前选择要监视的审计类。预选的审计类的审计事件将会在审计跟踪中出现。由于不会审计未预选的审计类,因此这些审计类的事件将不会出现在审计跟踪中。后选工具 auditreduce 命令将从审计跟踪中选择记录。有关更多信息,请参见审计类和预选

Public object(公共对象) 

公共对象是一个由 root 用户拥有且任何人都可读取的文件。例如,/etc 目录和 /usr/bin 目录中的文件就是公共对象。不能审计只读事件的公共对象。例如,即使预选了 file_read (fr) 审计类,也不会审计公共对象的读取。您可以通过更改 public 审计策略选项来覆盖缺省值。

审计事件

可以审计与安全相关的系统操作。这些可审计的操作称为审计事件。审计事件在 /etc/security/audit_event 文件中列出。在此文件中,会根据事件编号、符号名称、简短说明以及事件所属的审计类集定义每个审计事件。 有关 audit_event 文件的更多信息,请参见 audit_event(4) 手册页。

例如,以下项定义了 exec() 系统调用的审计事件:


7:AUE_EXEC:exec(2):ps,ex

当您预选审计类 ps 或审计类 ex 进行审计时,将在审计跟踪中记录 exec() 系统调用。

Solaris 审计可处理可归属事件和无归属事件。exec() 系统调用可归属到某个用户,因此可将该调用视为可归属事件。而在内核中断级别发生的事件则为无归属事件。对用户进行验证之前发生的事件也是无归属事件。na 审计类处理无归属审计事件。例如,引导系统便是一个无归属事件。


113:AUE_SYSTEMBOOT:system booted:na

预选某个审计事件所属的类以进行审计时,会在审计跟踪中记录此事件。例如,预选 psna 审计类以进行审计时,除其他事件之外,还会在审计跟踪中记录 exec() 系统调用和系统引导操作。

除 Solaris 审计服务定义的审计事件之外,第三方应用程序也可以生成审计事件。审计事件编号 32768 到 65535 适用于第三方应用程序。

审计类和预选

每个审计事件都属于一个或多个审计类。审计类是用于容纳大量审计事件的一种很方便的容器。预选要审计的类时,可以指定应在审计跟踪中记录该类中的所有事件。可以预选系统中的事件和特定用户启动的事件。运行审计服务之后,可以从预选类中动态添加或删除审计类。

可以使用后选命令 auditreduce 从预选审计记录中选择记录。有关更多信息,请参见检查审计跟踪auditreduce(1M) 手册页。

审计类在 /etc/security/audit_class 文件中定义。每个项都包含类的审计掩码、类的名称,以及类的描述性名称。例如,在 audit_class 文件中 psna 类的定义为:


0x00100000:ps:process start/stop

0x00000400:na:non-attribute

有 32 种可能的审计类。其中包括两个全局类:allno。这些审计类将在 audit_class(4) 手册页中介绍。

可以配置审计事件到类的映射。可以从类中删除事件、向类中添加事件,以及创建新类以包含选定事件。有关过程,请参见如何更改审计事件的类成员关系

审计记录和审计标记

每条审计记录记录一个审计事件的发生。此记录包含操作执行者、受影响的文件、已尝试执行的操作以及操作发生的时间和位置等信息。以下示例给出了一条 login 审计记录:


header,81,2,login - local,,2003-10-13 11:23:31.050 -07:00

subject,root,root,other,root,other,378,378,0 0 example_system

text,successful login

return,success,0

为每个审计事件保存的信息类型由一组审计标记进行定义。每次为事件创建审计记录时,记录中都会包含为事件定义的部分或全部标记。事件的性质确定要记录的标记。在前面的示例中,每行都以审计标记的名称开头。名称后跟审计标记的内容。login 审计记录共由四种审计标记组成。

有关每个审计标记结构的详细说明和 praudit 输出示例,请参见审计标记格式。有关审计标记的二进制流的说明,请参见 audit.log(4) 手册页。

审计文件

审计记录收集在审计日志中。Solaris 审计为审计日志提供两种输出模式。称为审计文件的日志以二进制格式存储审计记录。系统或站点的审计文件组提供完整的审计记录。完整的审计记录称为审计跟踪

syslog 实用程序收集并存储审计记录的文本版本的摘要。syslog 记录不是完整的记录。以下示例给出了 login 审计记录的 syslog 项:


Oct 13  11:24:11 example_system auditd: [ID 6472 audit.notice] \

        login - login ok session 378 by root as root:other

一个站点可以使用两种格式存储审计记录。可以配置站点中的系统,使其可以使用二进制模式,或者可以同时使用这两种模式。下表对二进制审计记录和 syslog 审计记录进行了比较。

表 27–2 二进制审计记录和 syslog 审计记录的比较

功能 

二进制记录 

syslog 记录

协议 

写入文件系统 

将 UDP 用于远程日志 

数据类型 

二进制 

文本 

记录长度 

无限制 

每条审计记录最多 1024 个字符 

位置 

存储在本地磁盘上以及使用 NFS 挂载的目录中 

存储在 syslog.conf 文件中指定的位置

配置方式 

编辑 audit_control 文件,并保护 NFS 挂载审计目录

编辑 audit_control 文件,编辑 syslog.conf 文件

读取方式 

通常,以批处理模式读取 

XML 格式的浏览器输出 

实时读取,或者通过为 syslog 创建的脚本进行搜索

纯文本输出 

完整性 

保证完整,并且以正确的顺序显示 

不能保证完整 

时间标记 

格林威治标准时间 (Greenwich Mean Time, GMT) 

被审计的系统时间 

二进制记录提供最高的安全性和最大的范围。二进制输出满足安全证书的要求,例如公共标准受控制访问保护配置 (Controlled Access Protection Profile, CAPP)。这些记录将写入被保护不受窥探的文件系统中。在单独的系统上,将收集所有二进制记录并按顺序显示它们。当某个审计跟踪内的各系统跨时间区域分布时,便可使用二进制日志中的 GMT 时间标记进行精确比较。使用 praudit -x 命令可在浏览器中查看 XML 格式的记录。还可以使用脚本来解析 XML 输出。

相反,syslog 记录可以提供更大的便利性和灵活性。例如,您可以从各种源收集 syslog 数据。此外,当您监视 syslog.conf 文件中的 audit.notice 事件时,syslog 实用程序会记录一条带有当前时间标记的审计记录摘要。您可以使用为来自各种源(包括工作站、服务器、防火墙,以及路由器)的 syslog 消息开发的管理和分析工具。可以实时查看记录,并将其存储在远程系统中。

通过使用 syslog.conf 远程存储审计记录,可以保护日志数据免遭攻击者改动或删除。另一方面,远程存储审计记录时,这些记录容易遭受拒绝服务、伪装源地址等网络攻击。此外,UDP 会丢包或无序发送包。syslog 项的限制为 1024 个字符,所以可能截断日志中的某些审计记录。在单独的系统上,并非收集所有的审计记录。可能不会按顺序显示记录。由于每条审计记录都使用本地系统的日期和时间进行标记,因此不能根据时间标记为多个系统构造审计跟踪。

有关审计日志的更多信息,请参阅以下内容:

审计存储

审计目录以二进制格式保留审计文件。典型安装使用许多审计目录。所有审计目录的内容组成了审计跟踪。审计记录按以下顺序存储在审计目录中:

这些目录在 audit_control 文件中指定。列表中早于此目录的目录已满时才会使用该目录。有关带有目录项列表的 audit_control 注释文件的信息,请参见示例 29–3

检查审计跟踪

审计服务提供用于合并和减少审计跟踪文件的命令。auditreduce 命令可以合并审计跟踪中的审计文件。此命令还可以过滤文件以查找特定事件。praudit 命令读取二进制文件。praudit 命令的选项提供适合借助脚本和浏览器显示的输出。