以下术语用于说明审计服务。某些定义包含更完整说明的链接。
表 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 |
预选某个审计事件所属的类以进行审计时,会在审计跟踪中记录此事件。例如,预选 ps 和 na 审计类以进行审计时,除其他事件之外,还会在审计跟踪中记录 exec() 系统调用和系统引导操作。
除 Solaris 审计服务定义的审计事件之外,第三方应用程序也可以生成审计事件。审计事件编号 32768 到 65535 适用于第三方应用程序。
每个审计事件都属于一个或多个审计类。审计类是用于容纳大量审计事件的一种很方便的容器。预选要审计的类时,可以指定应在审计跟踪中记录该类中的所有事件。可以预选系统中的事件和特定用户启动的事件。运行审计服务之后,可以从预选类中动态添加或删除审计类。
系统范围预选-在 audit_control 文件的 flags、naflags 以及 plugin 行中指定系统范围内的缺省值以进行审计。audit_control 文件在audit_control 文件中介绍。另请参见 audit_control(4) 手册页。
用户特定预选-在 audit_user 数据库中针对个别用户指定除系统范围内的审计缺省值之外的其他值。
审计预选掩码确定要针对用户审计的事件类。用户的审计预选掩码是系统范围内的缺省值和针对用户指定的审计类的组合。有关更多详细信息,请参见进程审计特征。
audit_user 数据库可以从本地管理,也可以通过名称服务来管理。Solaris Management Console 可提供图形用户界面 (graphical user interface, GUI) 来管理此数据库。有关详细信息,请参见 audit_user(4) 手册页。
动态预选-将审计类指定为 auditconfig 命令的参数,以便从进程或会话中添加或删除这些审计类。有关更多信息,请参见 auditconfig(1M) 手册页。
可以使用后选命令 auditreduce 从预选审计记录中选择记录。有关更多信息,请参见检查审计跟踪和 auditreduce(1M) 手册页。
审计类在 /etc/security/audit_class 文件中定义。每个项都包含类的审计掩码、类的名称,以及类的描述性名称。例如,在 audit_class 文件中 ps 和 na 类的定义为:
0x00100000:ps:process start/stop 0x00000400:na:non-attribute |
有 32 种可能的审计类。其中包括两个全局类:all 和 no。这些审计类将在 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 命令的选项提供适合借助脚本和浏览器显示的输出。