在网络中启用审计之前,可以针对站点的审计要求自定义审计配置文件。另外,还可以在启用审计服务之后重新启动审计服务或重新引导本地系统,以读取已更改的配置文件。但是,推荐的做法是在启动审计服务前尽可能多地自定义审计配置。
如果已实现区域,则可以选择从全局区域审计所有区域。要区分审计输出中的区域,可以设置 zonename 策略选项。或者,可以在全局区域中设置 perzone 策略,并在非全局区域中自定义审计配置文件,以单独审计非全局区域。有关概述,请参见审计和 Solaris Zones。有关规划的信息,请参见如何在区域中规划审计。
/etc/security/audit_control 文件配置系统范围的审计。此文件可确定审计的事件,发出审计警告的时间,以及审计文件的位置。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
(可选的)保存 audit_control 文件的副本。
# cp /etc/security/audit_control /etc/security/audit_control.orig |
修改站点的 audit_control 文件。
每一项都具有以下格式:
keyword:value |
定义行的类型。类型包括 dir、flags、minfree、naflags 和 plugin。dir 行可以重复。
有关关键字的说明,请参见以下示例。有关 plugin 项的示例,请参见如何配置 syslog 审计日志。
指定与行类型相关联的数据。
audit_control 文件中的 flags 行定义了针对系统上所有用户审计的可归属事件的类。这些类用逗号分隔。允许使用空格。在本示例中,将为所有用户审计 lo 类中的事件。
# audit_control file dir:/var/audit flags:lo minfree:20 naflags:lo |
要查看哪些事件位于 lo 类中,请读取 audit_event 文件。另外,还可以使用 bsmrecord 命令,如示例 29–22 中所示。
在本示例中,将审计 na 类中的所有事件,以及所有无归属的 login 事件。
# audit_control file dir:/var/audit flags:lo minfree:20 naflags:lo,na |
audit_control 文件中的 dir 行列出了要用于二进制审计数据的审计文件系统。在本示例中,定义了三个存放二进制审计数据的位置。
# audit_control file # # Primary audit directory - NFS-mounted from audit server dir:/var/audit/egret.1/files # # Secondary audit directory - NFS-mounted from audit server dir:/var/audit/egret.2/files # # Directory of last resort local directory dir:/var/audit flags:lo minfree:20 naflags:lo,na plugin: |
要设置文件系统来保存二进制审计数据,请参见如何创建审计文件的分区。
在本示例中,设置了所有审计文件系统的最低空闲空间级别,以便在文件系统的可用率只有 10% 时发出警告。
# audit_control file # dir:/var/audit/examplehost.1/files dir:/var/audit/examplehost.2/files dir:/var/audit/localhost/files flags:lo minfree:10 naflags:lo,na |
audit_warn 别名可接收警告。要设置别名,请参见如何配置 audit_warn 电子邮件别名。
可以指示审计服务只收集二进制审计数据,也可以指示审计服务收集二进制数据和文本数据。在以下过程中,将收集二进制审计数据和文本审计数据。收集的文本审计数据是二进制数据的子集。
必须在 audit_control 文件的 flags 行或 naflags 行上指定预选审计类。文本数据是预选二进制数据的子集。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
(可选的)保存 audit_control 文件的副本。
# cp /etc/security/audit_control /etc/security/audit_control.save |
添加 plugin 项。
审计服务中的插件实现审计数据的二进制输出和 syslog 输出。未指定二进制插件。必须指定 syslog 插件。有关更多信息,请参见auditd 守护进程。
plugin 项具有以下格式:
plugin:name=value; p_flags=classes |
有关 plugin 值的更多信息,请参见 audit_syslog(5) 手册页。
在 syslog.conf 文件中添加 audit.notice 项。
此项包括日志文件的位置。
# cat /etc/syslog.conf … audit.notice /var/adm/auditlog |
不应将文本日志和二进制审计文件存储在同一位置。auditreduce 命令假设审计分区中的所有文件都是二进制审计文件。
创建日志文件。
# touch /var/adm/auditlog |
# svcadm refresh system/system-log |
定期归档 syslog 日志文件。
审计服务可生成大量输出。要管理日志,请参见 logadm(1M) 手册页。
在以下示例中,syslog 实用程序收集预选审计类的子集。
# audit_control file dir:/var/audit/host.1/files dir:/var/audit/host.2/files dir:/var/audit/localhost/files flags:lo,ss minfree:10 naflags:lo,na plugin:name=audit_syslog.so.1; p_flags=-lo,-na,-ss |
flags 和 naflags 项会指示系统收集所有二进制格式的登录/退出、无归属以及系统状态更改的审计记录。plugin 项会指示 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 |
每个用户的定义都存储在 audit_user 数据库中。这些定义为指定的用户修改 audit_control 文件中的预选类。nsswitch.conf 文件确定是否使用了本地文件或名称服务数据库。要计算用户的最终审计预选掩码,请参见进程审计特征。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
(可选的)保存 audit_user 数据库的副本。
# cp /etc/security/audit_user /etc/security/audit_user.orig |
在 audit_user 数据库中添加新项。
在本地数据库中,每一项都具有以下格式:
username:always-audit:never-audit |
选择要审计的用户的名称。
选择总是应该针对指定用户进行审计的审计类列表。
选择绝对不要针对指定用户进行审计的审计类列表。
可以通过用逗号分隔审计类来指定多个类。
audit_user 项将在用户下一次登录时生效。
在本示例中,audit_control 文件包含系统的预选审计类:
# audit_control file … flags:lo,ss minfree:10 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 = 454 |
在本示例中,只在此系统上审计四个用户的登录和角色活动。audit_control 文件不预选系统的审计类:
# audit_control file … flags: minfree:10 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: minfree:10 naflags:lo |
当创建自己的审计类时,可以只将需要针对您所在站点审计的审计事件存放其中。在一个系统上添加该类时,应将此更改复制到正在审计的所有系统中。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
(可选的)保存 audit_class 文件的副本。
# cp /etc/security/audit_class /etc/security/audit_class.orig |
在 audit_class 文件中添加新项。
每一项都具有以下格式:
0xnumber:name:description |
将 number 标识为十六进制。
定义唯一审计类掩码。
定义审计类的字母名称。
定义审计类的说明性名称。
添加的项在该文件中必须唯一。请勿使用现有审计类掩码。
本示例会创建类来保存一个小型的审计事件组。audit_class 文件的添加项如下所示:
0x01000000:pf:profile command |
此项创建名为 pf 的新审计类。示例 29–10 填充此新审计类。
可能需要更改审计事件的类成员关系来减小现有审计类的大小,或者将事件放置在它自己的类中。在一个系统上重新配置审计事件到类的映射时,应将此更改复制到正在审计的所有系统中。
承担主管理员角色,或成为超级用户。
主管理员角色拥有主管理员配置文件。要创建角色并将角色指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 “使用 Solaris Management Console(任务)”。
(可选的)保存 audit_event 文件的副本。
# cp /etc/security/audit_event /etc/security/audit_event.orig |
通过更改事件的 class-list 来更改特定事件所属的类。
每一项都具有以下格式:
number:name:description:class-list |
审计事件 ID。
审计事件的名称。
通常为触发创建审计记录的系统调用或可执行文件。
审计类的逗号分隔列表。
本示例将现有审计事件映射到在示例 29–9 中创建的新类。在 audit_control 文件中,二进制审计记录捕获 pf 类中事件的成功和失败信息。syslog 审计日志只包含 pf 类中事件的失败信息。
# grep pf | /etc/security/audit_class 0x01000000: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_syslog.so.1; p_flags=-lo,-pf |
本示例创建用来保存监视 setuid 和 setgid 程序调用事件的类。audit_control 项审计 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 ... flags:lo,+st plugin:name=audit_syslog.so.1; p_flags=-lo,+st |