跳过导航链接 | |
退出打印视图 | |
![]() |
系统管理指南:安全性服务 Oracle Solaris 10 8/11 Information Library (简体中文) |
在网络上启用审计之前,可以针对您站点的审计要求定制审计配置文件。另外,还可以在启用审计服务之后重新启动审计服务或重新引导本地系统,以读取已更改的配置文件。但是,推荐的做法是在启动审计服务前尽可能多地定制审计配置。
如果已实现区域,则可以选择从全局区域审计所有区域。要在审计输出中区分各区域,可以设置 zonename 策略选项。或者,要分别审计各非全局区域,可以在全局区域中设置 perzone 策略,而在非全局区域中定制审计配置文件。有关概述的信息,请参见审计和 Oracle Solaris 区域。有关规划的信息,请参见如何规划区域中的审计。有关过程的信息,请参见在区域中配置审计服务(任务)。
/etc/security/audit_control 文件用于配置系统范围的审计。此文件可确定要审计的事件,发出审计警告的时间,以及审计文件的位置。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
# cp /etc/security/audit_control /etc/security/audit_control.orig
每一项都具有以下格式:
keyword:value
定义行的类型。类型包括 dir、flags、minfree、naflags 和 plugin。在 Solaris 10 发行版中,不推荐使用 dir 和 minfree 行。
有关关键字的说明,请参见以下示例。
指定与行类型相关联的数据。
注 - 要指定审计目录的位置,请使用 audit_binfile.so 插件的 p_dir 属性。要指定最小空闲空间,请使用 p_minfree 属性。
# audit -v /etc/security/audit_control syntax ok
示例 30-1 为所有用户预选审计类
audit_control 文件中的 flags 行定义了为系统上所有用户审计哪些可归属事件的类。这些类用逗号分隔。允许使用空格。在本示例中,将为所有用户审计 lo 类和 ap 类中的事件。
## audit_control file flags:lo,ap naflags:lo plugin:name=...
要了解哪些事件分配到某个类中,请查看 audit_event 文件。您还可以使用 bsmrecord 命令,如示例 30-27 所示。
示例 30-2 预选无归属事件
在本示例中,将审计 na 类中的所有事件,以及所有无归属的 login 事件。
## audit_control file flags:lo naflags:lo,na plugin:name=...
示例 30-3 指定二进制审计数据的位置
audit_binfile.so 插件的 p_dir 标志用于列出要用于二进制审计数据的审计文件系统。本示例中定义了三个存放二进制审计数据的位置。目录按照从主目录到万不得已时使用的目录的顺序列出。plugin 行不包含换行符。
## audit_control file ## flags:lo naflags:lo,na plugin:name=audit_binfile.so; p_dir=/var/audit/egret.1/files, /var/audit/egret.2/files,/var/audit
要设置文件系统来保存二进制审计数据,请参见如何为审计文件创建分区。
示例 30-4 更改警告的软限制
在本示例中,设置了所有审计文件系统的最低空闲空间级别,以便在文件系统的可用空间只有 10% 时发出警告。
plugin 行不包含换行符。
## audit_control file # flags:lo naflags:lo,na plugin:name=audit_binfile.so; p_dir=/var/audit/examplehost.1/files, /var/audit/examplehost.2/files,/var/audit/localhost/files; p_minfree=10
audit_warn 别名用于接收警告。要设置别名,请参见如何配置 audit_warn 电子邮件别名。
可以指示审计服务,将在审计队列收集到的部分或全部审计数据复制到 syslog。在以下过程中,将保存二进制审计数据和文本审计数据。收集的文本审计数据是二进制数据的子集。
开始之前
必须预选审计类。应在 audit_control 文件的 flags 行或 naflags 行上指定预选的审计类。也可以在 audit_user 文件中为单个用户预选类,并使用 auditconfig 命令动态添加审计类。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
# cp /etc/security/audit_control /etc/security/audit_control.save
## audit_control file flags:lo,ss naflags:lo,na plugin:name=audit_binfile.so;p_dir=/var/audit; p_minfree=20; plugin:name=audit_syslog.so;p_flags=+lo,-ss
plugin:name=name; qsize=max-queued-records;p_*=value
name=name-列出插件的名称。有效值是 audit_binfile.so 和 audit_syslog.so。
p_*= value-指定插件特定的属性。audit_syslog.so 插件接受 p_flags。audit_binfile.so 插件接受 p_dir、p_minfree 和 p_fsize。Solaris 10 10/08 中引入了 p_fsize 属性。
有关插件特定属性的更多信息,请参见 audit_binfile(5) 和 audit_syslog(5) 手册页的 OBJECT ATTRIBUTES 部分。
此项包括日志文件的位置。
# cat /etc/syslog.conf … audit.notice /var/adm/auditlog
请勿将文本日志和二进制审计文件存储在同一位置。用于读取二进制审计文件的 auditreduce 命令假定审计分区中的所有文件都是二进制审计文件。
# touch /var/adm/auditlog
# svcadm refresh system/system-log
审计服务可生成大量输出。要管理日志,请参见 logadm(1M) 手册页。
示例 30-5 指定 syslog 输出的审计类
在以下示例中,syslog 实用程序收集预选审计类的子集。
## audit_user file jdoe:pf
## audit_control file flags:lo,ss naflags:lo,na plugin:name=audit_binfile.so; p_dir=/var/audit/host.1/files, /var/audit/host.2/files,/var/audit/localhost/files; p_minfree=10 plugin:name=audit_syslog.so; p_flags=-lo,-na,-ss,+pf
flags 和 naflags 项指示系统以二进制格式收集所有登录/注销、无归属及系统状态更改审计记录。audit_syslog.so 插件项指示 syslog 实用程序仅收集失败的登录、失败的无归属事件以及失败的系统状态更改。对于 jdoe 用户,二进制审计记录包括可识别配置文件的 shell 的所有使用。syslog 实用程序收集成功的可识别配置文件的命令。在示例 30-10 中创建了 pf 类。
示例 30-6 将 syslog 审计记录放置在远程系统上
可以更改 syslog.conf 文件中的 audit.notice 项,使其指向远程系统。在本示例中,本地系统的名称是 example1。远程系统是 remote1。
example1 # cat /etc/syslog.conf … audit.notice @remote1
在 remote1 系统上,syslog.conf 文件中的 audit.notice 项指向日志文件。
remote1 # cat /etc/syslog.conf … audit.notice /var/adm/auditlog
示例 30-7 在 audit_control 文件中使用插件
在 audit_control 文件中指定非标志信息的优先方法是,使用 plugin 项。在本示例中,选择了审计标志,然后列出插件信息。
## audit_control file flags:lo,ss naflags:lo,na plugin:name=audit_binfile.so;p_minfree=10; p_dir=/var/audit plugin:name=audit_syslog.so; p_flags=+lo
每个用户的定义都存储在 audit_user 数据库中。这些定义为指定的用户修改 audit_control 文件中的预选类。nsswitch.conf 文件确定是否使用本地文件或命名服务数据库。要计算用户的最终审计预选掩码,请参见进程审计特征。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
# cp /etc/security/audit_user /etc/security/audit_user.orig
在本地数据库中,每一项都具有以下格式:
username:always-audit:never-audit
选择要审计的用户的名称。
选择是指应该针对指定用户进行审计的审计类列表。
选择绝对不要针对指定用户进行审计的审计类列表。
可以通过用逗号分隔审计类来指定多个类。
audit_user 项将在用户下一次登录时生效。
示例 30-8 更改对单个用户进行审计的事件
在本示例中,audit_control 文件包含系统的预选审计类:
## audit_control file … flags:lo,ss naflags:lo,na
audit_user 文件显示了一个例外情况。当用户 jdoe 使用配置文件 shell 时,将审计此使用情况:
## audit_user file jdoe:pf
jdoe 的审计预选掩码是 audit_user 设置与 audit_control 设置的组合。auditconfig -getaudit 命令显示 jdoe 的预选掩码:
# auditconfig -getaudit audit id = jdoe(1234567) process preselection mask = ss,pf,lo(0x13000,0x13000) terminal id (maj,min,host) = 242,511,example1(192.168.160.171) audit session id = 2138517656
示例 30-9 只审计用户,而不审计系统
在本示例中,在此系统上只审计四个用户的登录和角色活动。audit_control 文件不为系统预选审计类。
## audit_control file … flags: naflags:
audit_user 文件为四个用户预选两个审计类,如下所示:
## audit_user file jdoe:lo,pf kdoe:lo,pf pdoe:lo,pf sdoe:lo,pf
以下 audit_control 文件可记录无担保的入侵。在与 audit_user 文件合并后,此文件比本示例中第一个 audit_control 文件更能保护系统安全。
## audit_control file … flags: naflags:lo plugin:name=...
创建您自己的审计类时,可以只将需要针对您所在站点审计的审计事件存放到该类中。在一个系统上添加类时,应将此更改复制到正在审计的所有系统中。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
# cp /etc/security/audit_class /etc/security/audit_class.orig
每一项都具有以下格式:
0xnumber:name:description
将 number 标识为十六进制数值。
定义唯一审计类掩码。
定义审计类的字母组成的名称。
定义审计类的描述性名称。
每个项在此文件中必须唯一。请勿使用现有的审计类掩码。
示例 30-10 创建新的审计类
本示例中会创建一个类来保存一个小型审计事件组。audit_class 文件中添加的项如下所示:
0x10000000:pf:profile command
此项创建一个名为 pf 的新审计类。示例 30-11 将填充此审计类。
故障排除
如果定制了 audit_class 文件,请确保对 audit_user 的修改与新的审计类一致。如果 audit_user 中的审计类不是 audit_class 数据库的子集,将会发生错误。
可能需要更改审计事件的类成员身份来减小现有审计类的大小,或者将事件放置在它自己的类中。在一个系统上重新配置审计事件到类的映射时,应将此更改复制到正在审计的所有系统中。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
# cp /etc/security/audit_event /etc/security/audit_event.orig
每一项都具有以下格式:
number:name:description:class-list
审计事件 ID。
审计事件的名称。
通常是触发创建审计记录的系统调用或可执行文件。
审计类的逗号分隔列表。
示例 30-11 将现有审计事件映射到新类
本示例中将现有审计事件映射到示例 30-10 中创建的新类。在 audit_control 文件中,二进制审计记录可捕获 pf 类中事件的成功和失败信息。syslog 审计日志只包含 pf 类中事件的失败信息。
# grep pf | /etc/security/audit_class 0x10000000:pf:profile command # vi /etc/security/audit_event 6180:AUE_prof_cmd:profile command:ua,as,pf # vi audit_control ... flags:lo,pf plugin:name=audit_binfile.so; p_dir=/var/audit; p_minfree=10 plugin:name=audit_syslog.so; p_flags=-lo,-pf
示例 30-12 审计 setuid 程序的使用
本示例将创建一个类,保存用于监视 setuid 和 setgid 程序调用的事件。二进制审计记录可捕获 lo 和 na 类中事件的成功和失败信息,以及 st 类中事件的成功信息。syslog 审计日志仅包含 st 类中事件的成功信息。
# vi /etc/security/audit_class 0x00000800:st:setuid class # vi /etc/security/audit_event 26:AUE_SETGROUPS:setgroups(2):st 27:AUE_SETPGRP:setpgrp(2):st 40:AUE_SETREUID:setreuid(2):st 41:AUE_SETREGID:setregid(2):st 214:AUE_SETEGID:setegid(2):st 215:AUE_SETEUID:seteuid(2):st # vi audit_control ## audit_control file flags:lo,+st naflags:lo,na plugin:name=audit_binfile.so; p_dir=/var/audit; p_minfree=10 plugin:name=audit_syslog.so; p_flags=-lo,+st