跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 管理:安全服务 Oracle Solaris 11 Information Library (简体中文) |
以下术语用于说明审计服务。有些定义包含指向更完整说明的链接。
有关更多信息,请参见审计类和预选以及 audit_flags(5)、audit_class(4) 和 audit_event(4) 手册页。
有关更多信息,请参见审计日志和 audit.log(4) 手册页。
可审计的与安全相关的系统操作。为了便于选择,将事件分为多个审计类。
有关更多信息,请参见审计事件和 audit_event(4) 手册页。
作为参数提供给命令或关键字的审计类。标志的前缀可以是加号或减号,+ 表示对类的成功事件进行审计,而 - 表示对类的失败事件进行审计。在加号前面加上插入记号 ^ 表示将不审计成功事件 (^+),而在减号前面加上该插入记号表示将不审计失败事件 (^-)。
有关更多信息,请参见 audit_flags(5) 手册页和审计类语法。
用于将队列中的审计记录传输到指定位置的模块。audit_binfile 插件可创建二进制审计文件。而这些二进制文件组成了审计迹,存储在审计文件系统中。audit_remote 插件可将二进制审计记录发送到远程系统信息库。audit_syslog 插件可将选定的审计记录汇总到 syslog 日志中。
有关更多信息,请参见审计插件模块以及模块手册页 audit_binfile(5)、audit_remote(5) 和 audit_syslog(5)。
一组可以在您的站点中启用或禁用的审计选项。这些选项包括是否记录某种审计数据,还包括是否在写满审计队列时暂停可审计的操作。
有关更多信息,请参见了解审计策略和 auditconfig(1M) 手册页。
审计队列中收集的审计数据。一条审计记录描述一个审计事件。每条审计记录由多个审计标记组成。
有关更多信息,请参见审计记录和审计标记和 audit.log(4) 手册页。
审计记录或审计事件字段。每个审计标记描述审计事件的一个属性,例如用户、程序或其他对象。
有关更多信息,请参见审计标记格式和 audit.log(4) 手册页。
一个或多个审计文件的集合,用于存储使用缺省插件 audit_binfile 的所有已审计系统上的审计数据。
有关更多信息,请参见审计迹。
有关要在审计迹中检查哪些审计事件的选择。缺省活动插件 audit_binfile 可创建审计迹。后选工具 auditreduce 命令将从审计迹中选择记录。
有关更多信息,请参见 auditreduce(1M) 和 praudit(1M) 手册页。
有关要监视哪些审计类的选择。将在审计队列中收集预选的审计类的审计事件。由于不会审计未预选的审计类,因此这些审计类的事件将不会出现在队列中。
有关更多信息,请参见审计类和预选以及 audit_flags(5) 和 auditconfig(1M) 手册页。
由 root 用户拥有且任何人都可读取的文件。例如,/etc 目录和 /usr/bin 目录中的文件就是公共对象。不会审计只读事件的公共对象。例如,即使预选了 file_read (fr) 审计类,也不会审计公共对象的读取。您可以通过更改 public 审计策略选项来覆盖缺省值。
审计事件代表某系统上可审计的操作。审计事件在 /etc/security/audit_event 文件中列出。每个审计事件均连接到一个系统调用或用户命令,并指定给一个或多个审计类。有关 audit_event 文件的格式的说明,请参见 audit_event(4) 手册页。
例如,AUE_EXECVE 审计事件将审计 execve() 系统调用。命令 auditrecord -e execve 显示以下条目:
execve system call execve See execve(2) event ID 23 AUE_EXECVE class ps,ex (0x0000000040100000) header path [attribute] omitted on error [exec_arguments] output if argv policy is set [exec_environment] output if arge policy is set subject [use_of_privilege] return
如果预选审计类 ps 或 ex,则每个 execve() 系统调用都将记录在审计队列中。
审计过程处理可归属和无归属事件。审计策略将事件分为同步事件和异步事件,如下所示:
可归属事件-可归属到某个用户的事件。execve() 系统调用可归属到某个用户,因此将该调用视为可归属事件。所有的可归属事件都是同步事件。
无归属事件-在内核中断级别发生的事件,或在验证用户之前发生的事件。na 审计类处理无归属审计事件。例如,引导系统便是一个无归属事件。多数无归属事件都是异步事件。但是,具有关联进程的无归属事件(如登录失败)是同步事件。
同步事件-与系统中的进程关联的事件。同步事件占系统事件的大多数。
异步事件-与任何进程无关联的事件,因此既不会阻止进程,随后也不会唤醒进程。例如,初始系统引导和 PROM 进入和退出事件都是异步事件。
除了审计服务定义的审计事件,第三方应用程序也可以生成审计事件。审计事件编号 32768 到 65535 适用于第三方应用程序。供应商需要联系其 Oracle Solaris 代表,以保留事件编号并获取对审计界面的访问权限。
每个审计事件属于一个或多个审计类。审计类是用于容纳大量审计事件的方便容器。预选要审计的类时,该类中的所有事件都将记录在审计队列中。例如,预选 ps 审计类时,将记录 execve()、fork() 以及其他系统调用。
可以预选系统中的事件和特定用户启动的事件。
系统范围的预选-通过在 auditconfig 命令中使用 -setflags 和 -setnaflags 选项指定系统范围内的审计缺省值。
注 - 如果已设置 perzone 策略,则可以在每个区域中指定缺省审计类。对于 perzone 审计,缺省值为区域范围,而非系统范围。
特定于用户的预选-通过为用户配置审计标志,指定各个用户的审计值与系统范围的审计缺省值之间的差异。useradd、roleadd、usermod 以及 rolemod 命令将 audit_flags 安全属性放置在 user_attr 数据库中。profiles 命令将权限配置文件的审计标志放置在 prof_attr 数据库中。
审计预选掩码确定要针对用户审计的事件类。有关用户预选掩码的说明,请参见进程审计特征。要了解使用哪些已配置审计标志,请参见搜索指定安全属性的顺序。
审计类在 /etc/security/audit_class 文件中定义。每个项都包含类的审计掩码、类的名称,以及类的描述性名称。例如,lo 和 ps 类定义在 audit_class 文件中显示为:
0x0000000000001000:lo:login or logout 0x0000000000100000:ps:process start/stop
审计类包括以下两个全局类:all 和 no。audit_class(4) 手册页中介绍了这些审计类。有关类的列表,请阅读 /etc/security/audit_class 文件。
可以配置审计事件到类的映射。可以从类中删除事件、向类中添加事件,还可以创建新类以包含选定事件。有关过程,请参见如何更改审计事件的类成员身份。要查看映射到类的事件,请使用 auditrecord -c class 命令。
每条审计记录记录一个发生的审计事件。该记录包含操作执行者、受影响的文件、尝试执行的操作以及操作发生的时间和位置等信息。下面是一条 login 审计记录的示例:
header,69,2,login - local,,example_system,2010-10-10 10:10:10.020 -07:00 subject,jdoe,jdoe,staff,jdoe,staff,1210,4076076536,69 2 example_system return,success,0
为每个审计事件保存的信息类型由一组审计标记进行定义。每次为事件创建审计记录时,记录中都会包含为该事件定义的部分或全部标记。事件的性质决定了要记录的标记。在前面的示例中,每行都以审计标记的名称开头。标记名称后跟审计标记的内容。header、subject 和 return 审计标记一起组成了 login - local 审计记录。要显示组成审计记录的标记,请使用 auditrecord -e event 命令。
有关每个审计标记结构的详细说明和 praudit 输出示例,请参见审计标记格式。有关审计标记的二进制流的说明,请参见 audit.log(4) 手册页。
可以指定哪些审计插件模块处理您的预选已经放入审计队列中的记录。至少有一个插件必须处于活动状态。缺省情况下,audit_binfile 插件处于活动状态。可使用 auditconfig -setplugin plugin-name 命令配置插件。
审计服务提供以下插件:
audit_binfile 插件-处理将审计队列发送到二进制审计文件的过程。有关更多信息,请参见 audit.log(4) 手册页。
audit_remote 插件-处理将二进制审计记录从审计队列安全发送到已配置的远程服务器的过程。audit_remote 插件使用 libgss() 库验证服务器。出于保密性和完整性的考虑,传输过程受到保护。
audit_syslog 插件-处理将选定记录从审计队列发送到 syslog 日志的过程。
要配置插件,请参见 auditconfig(1M) 手册页。有关插件配置的示例,请参见配置审计日志(任务)中的任务。
有关插件的信息,请参见 audit_binfile(5)、audit_remote(5) 和 audit_syslog(5) 手册页。
审计记录是在审计日志中收集的。对于审计记录,审计服务提供三种输出模式。
称为审计文件的日志以二进制格式存储审计记录。系统或站点的审计文件集提供完整的审计记录。完整的审计记录称为审计迹。这些日志由 audit_binfile 插件创建,可通过 praudit 和 auditreduce 后选命令查看。
audit_remote 插件可将审计记录流化处理到远程系统信息库。该系统信息库负责维护审计迹并提供后选工具。
syslog 实用程序收集并存储审计记录的文本摘要。syslog 记录不是完整的记录。以下示例显示了 login 审计记录的 syslog 项:
Oct 10 10:10:20 example_system auditd: [ID 6472 audit.notice] \ login - login ok session 4076172534 by root as root:other
站点可以配置审计以收集所有格式的审计记录。可以在您的站点上配置系统,使其在本地使用二进制模式,将二进制文件发送到远程系统信息库,使用 syslog 模式,或使用以上这些模式的任意组合。下表对二进制审计记录和 syslog 审计记录进行了比较。
表 26-1 二进制审计记录、远程审计记录以及 syslog 审计记录的比较
|
二进制记录提供最高的安全性和最大的覆盖范围。二进制输出满足安全证书的要求,例如通用准则 审计要求。
audit_binfile 插件可将记录写入对其进行保护以防止偷窥的文件系统中。在单个系统上,将收集所有二进制记录并按顺序显示它们。当某个审计迹内的系统分布于不同的时区时,可以参考二进制日志中的 UTC 时间戳进行精确比较。使用 praudit -x 命令可在浏览器中查看 XML 格式的记录。还可以使用脚本来解析 XML 输出。
audit_remote 插件可将记录写入远程系统信息库。该系统信息库负责存储和后选。
相反,syslog 记录可能会提供更大的便利性和灵活性。例如,您可以从各种源收集 syslog 数据。此外,当您监视 syslog.conf 文件中的 audit.notice 事件时,syslog 实用程序会记录一条带有当前时间戳的审计记录摘要。您可以使用为来自各种源(包括工作站、服务器、防火墙和路由器)的 syslog 消息开发的同一管理和分析工具。可以实时查看记录,并将其存储在远程系统中。
通过使用 syslog.conf 远程存储审计记录,可以保护日志数据免遭攻击者改动或删除。另一方面,远程存储审计记录时,这些记录容易遭受拒绝服务、伪装源地址等网络攻击。此外,UDP 会丢包或无序发送包。syslog 项限制为 1024 个字符,因此可能会截断日志中的某些审计记录。在单个系统上,不会收集所有的审计记录。记录可能不会按顺序显示。由于每条审计记录都使用本地系统的日期和时间进行标记,因此不能根据时间戳为多个系统构造审计迹。
有关插件和审计日志的更多信息,请参阅以下内容:
audit_binfile 插件处于活动状态时,审计文件系统 以二进制格式保留审计文件。典型的安装使用 /var/audit 文件系统,也可以使用其他文件系统。所有审计文件系统的内容组成了审计迹。审计记录按以下顺序存储在这些文件系统中:
主审计文件系统-/var/audit 文件系统,即用于系统审计文件的缺省文件系统
辅助审计文件系统-按管理员意愿在其中放置系统审计文件的文件系统
这些文件系统作为 audit_binfile 插件的 p_dir 属性参数来指定。对于某个文件系统,列表中位于此文件系统前面的文件系统已满时才会使用此文件系统。有关包含文件系统项列表的示例,请参见如何为审计文件创建 ZFS 文件系统。
将审计文件放置在缺省审计根目录下可帮助审计审阅者审阅审计迹。auditreduce 命令使用审计根目录来查找审计迹中的所有文件。缺省审计根目录为 /var/audit。可以在 auditreduce 命令中使用 -M 选项以指定特定计算机中的审计文件,而使用 -S 选项可以指定其他审计文件系统。有关更多信息,请参见 auditreduce(1M) 手册页。
审计服务提供用于合并和过滤审计迹文件的命令。auditreduce 命令可以合并审计迹中的审计文件。此命令还可以过滤文件以查找特定事件。praudit 命令读取二进制文件。praudit 命令的选项提供适合借助脚本和浏览器显示的输出。
合并多个系统中的审计日志时,这些系统上的日期和时间必须准确。同样,将审计日志发送到远程系统时,记录系统和系统信息库系统必须具有准确的时钟。网络时间协议 (Network Time Protocol, NTP) 可以使各个系统时钟保持准确和相互协调。有关更多信息,请参见《Oracle Solaris 管理:网络服务》中的第 3 章 "与时间有关的服务"和 xntpd(1M) 手册页。
audit_remote 插件处于活动状态时,远程系统信息库将管理审计记录。