跳过导航链接 | |
退出打印视图 | |
![]() |
Oracle Solaris 管理:安全服务 Oracle Solaris 11 Information Library (简体中文) |
在网络上启用审计之前,可以修改缺省值以满足站点审计要求。最佳做法是在第一批用户登录之前尽可能定制审计配置。
如果已实现区域,则可以选择从全局区域审计所有区域或单独审计非全局区域。有关概述的信息,请参见审计和 Oracle Solaris 区域。有关规划的信息,请参见如何规划区域中的审计。有关过程的信息,请参见在区域中配置审计服务(任务)。
以下任务列表列出了配置审计的过程。所有任务都是可选的。
|
本过程中的命令显示当前审计配置。本过程中的输出是从未配置的系统获取的。
开始之前
您必须分配有 Audit Configuration(审计配置)或 Audit Control(审计控制)权限配置文件。
有关更多信息,请参见如何获取管理权限。
# auditconfig -getflags active user default audit flags = lo(0x1000,0x1000) configured user default audit flags = lo(0x1000,0x1000)
lo 是 login/logout 审计类的标志。掩码输出的格式为 (success, failure)。
# auditconfig -getnaflags active non-attributable audit flags = lo(0x1000,0x1000) configured non-attributable audit flags = lo(0x1000,0x1000)
注 - 要查看哪些事件指定给了某一类以及正在记录哪些事件,请运行 auditrecord -c class 命令。
$ auditconfig -getpolicy configured audit policies = cnt active audit policies = cnt
活动策略是当前策略,但审计服务并不存储该策略值。已配置策略由审计服务存储,因此重新启动审计服务时会恢复该策略。
$ auditconfig -getplugin Plugin: audit_binfile (active) Attributes: p_dir=/var/audit;p_fsize=0;p_minfree=1; Plugin: audit_syslog (inactive) Attributes: p_flags=; Plugin: audit_remote (inactive) Attributes: p_hosts=;p_retries=3;p_timeout=5;
缺省情况下 audit_binfile 插件处于活动状态。
$ auditconfig -getqctrl no configured audit queue hiwater mark no configured audit queue lowater mark no configured audit queue buffer size no configured audit queue delay active audit queue hiwater mark (records) = 100 active audit queue lowater mark (records) = 10 active audit queue buffer size (bytes) = 8192 active audit queue delay (ticks) = 20
活动队列控制是内核当前使用的队列控制。字符串 no configured 表示系统使用的是缺省值。
查找用户,然后显示每个用户的 audit_flags 属性值。
# who adoe pts/1 Oct 10 10:20 (:0.0) adoe pts/2 Oct 10 10:20 (:0.0) jdoe pts/5 Oct 12 12:20 (:0.0) jdoe pts/6 Oct 12 12:20 (:0.0) ... # userattr audit_flags adoe # userattr audit_flags jdoe
缺省情况下,仅针对系统范围的设置审计用户。
有关 userattr 命令的说明,请参见 userattr(1) 手册页。有关 audit_flags 关键字的说明,请参见 user_attr(4) 手册页。
预选包含要监视事件的审计类。不记录预选类之外的事件。
开始之前
您必须分配有 Audit Configuration(审计配置)权限配置文件。
有关更多信息,请参见如何获取管理权限。
# auditconfig -getflags ...
# auditconfig -getnaflags ,,,
有关输出的说明,请参见如何显示审计服务缺省值。
# auditconfig -setflags lo,ps,fw user default audit flags = ps,lo,fw(0x101002,0x101002)
此命令审计登录/注销、进程启动/停止以及文件写入类中的成功事件和失败事件。
注 - auditconfig -setflags 命令不向当前系统缺省值添加类。此命令替换系统缺省值,因此必须指定要预选的所有类。
na 类包含其他事件之间的 PROM、引导和无归属挂载。
# auditconfig -setnaflags lo,na non-attributable audit flags = lo,na(0x1400,0x1400)
lo 和 na 是 -setnaflags 选项唯一有用的两个参数。
注 - auditconfig -setnaflags 命令替换系统缺省值,因此必须指定要预选的所有类。
通过基于每个用户而非基于每个系统预选类,有时可以降低审计对系统性能的影响。此外,您可能还需要审计与系统稍有不同的特定用户。
为每个用户预选的审计类是由 audit_flags 安全属性指定的。这些用户特定值以及系统的预选类确定用户的审计掩码,如进程审计特征中所述。
开始之前
您必须是 root 角色。
# usermod -K audit_flags=fw:no jdoe
audit_flags 关键字的格式为 always-audit:never-audit。
列出针对此用户审计的审计类。对系统范围类的修改带有插入记号 (^) 前缀。添加到系统范围类的类不带插入记号前缀。
列出从不针对用户审计的审计类,即使在系统范围内审计这些审计事件也是如此。对系统范围类的修改带有插入记号 (^) 前缀。
要指定多个审计类,请使用逗号分隔类。有关更多信息,请参见 audit_flags(5) 手册页。
# profiles -p "System Administrator" profiles:System Administrator> set name="Audited System Administrator" profiles:Audited System Administrator> set always_audit=fw,as profiles:Audited System Administrator> end profiles:Audited System Administrator> exit
将 Audited System Administrator(审计的系统管理员)权限配置文件指定给用户或角色时,按搜索指定安全属性的顺序中所述的搜索顺序针对这些标志审计该用户或角色。
示例 28-1 更改对单个用户进行审计的事件
在本示例中,所有用户的审计预选掩码如下:
# auditconfig -getflags active user default audit flags = ss,lo(0x11000,0x11000) configured user default audit flags = ss,lo(0x11000,0x11000)
除管理员以外没有任何用户登录。
为了降低 AUE_PFEXEC 审计事件对系统资源的影响,管理员将不在系统级别审计此事件。相反,管理员将为用户 jdoe 预选 pf 类。pf 类是在示例 28-10 中创建的。
# usermod -K audit_flags=pf:no jdoe
userattr 命令显示添加内容。
# userattr audit_flags jdoe pf:no
用户 jdoe 登录时,jdoe 的审计预选掩码为 audit_flags 值和系统缺省值的组合。289 是 jdoe 登录 shell 的 PID。
# auditconfig -getpinfo 289 audit id = jdoe(1234) process preselection mask = ss,pf,lo(0x0100000000000000,0x0100000008011000) terminal id (maj,min,host) = 242,511,example1(192.168.160.171) audit session id = 103203403
示例 28-2 修改单个用户的审计预选例外
在本示例中,所有用户的审计预选掩码如下:
# auditconfig -getflags active user default audit flags = ss,lo(0x11000,0x11000) configured user default audit flags = ss,lo(0x11000,0x11000)
除管理员以外没有任何用户登录。
管理员决定不为 jdoe 用户收集失败的 ss 事件。
# usermod -K audit_flags=^-ss:no jdoe
userattr 命令显示例外。
# userattr audit_flags jdoe ^-ss:no
用户 jdoe 登录时,jdoe 的审计预选掩码为 audit_flags 值和系统缺省值的组合。289 是 jdoe 登录 shell 的 PID。
# auditconfig -getpinfo 289 audit id = jdoe(1234) process preselection mask = +ss,lo(0x11000,0x1000) terminal id (maj,min,host) = 242,511,example1(192.168.160.171) audit session id = 103203403
示例 28-3 审计选定用户,非系统范围的审计
在本示例中,审计四个选定用户在系统上的登录和角色活动。没有为系统预选审计类。
首先,管理员删除所有系统范围的标志。
# auditconfig -setflags no user default audit flags = no(0x0,0x0)
然后,管理员为这四个用户预选两个审计类。pf 类是在示例 28-10 中创建的。
# usermod -K audit_flags=lo,pf:no jdoe # usermod -K audit_flags=lo,pf:no kdoe # usermod -K audit_flags=lo,pf:no pdoe # usermod -K audit_flags=lo,pf:no zdoe
然后,管理员为 root 角色预选 pf 类。
# userattr audit_flags root # rolemod -K audit_flags=lo,pf:no root # userattr audit_flags root lo,pf:no
为了继续记录未经授权的入侵,管理员将不更改无归属登录的审计。
# auditconfig -getnaflags active non-attributable audit flags = lo(0x1000,0x1000) configured non-attributable audit flags = lo(0x1000,0x1000)
示例 28-4 删除用户的审计标志
在以下示例中,管理员删除所有用户特定的审计标志。继续审计当前已登录用户的现有进程。
管理员运行 usermod 命令,但不为 audit_flags 关键字设置任何值。
# usermod -K audit_flags= jdoe # usermod -K audit_flags= kdoe # usermod -K audit_flags= ldoe
然后,管理员验证删除。
# userattr audit_flags jdoe # userattr audit_flags kdoe # userattr audit_flags ldoe
示例 28-5 为用户组创建权限配置文件
管理员需要站点的所有管理权限配置文件才能显式审计 pf 类。对于要指定的每个权限配置文件,管理员都会在包含审计标志的 LDAP 中创建特定于站点的版本。
首先,管理员克隆现有权限配置文件,然后更改名称并添加审计标志。
# profiles -p "Network Wifi Management" -S ldap profiles: Network Wifi Management> set name="Wifi Management" profiles: Wifi Management> set desc="Audited wifi management" profiles: Wifi Management> set audit_always=pf profiles: Wifi Management> exit
针对要使用的每个权限配置文件重复此过程之后,管理员将列出 Wifi Management(Wifi 管理)配置文件中的信息。
# profiles -p "Wifi Management" -S ldap info name=Wifi Management desc=Audited wifi management auths=solaris.network.wifi.config help=RtNetWifiMngmnt.html always_audit=pf
审计策略确定本地系统审计记录的特征。您可能会更改审计策略以记录审计命令的相关详细信息、为每个记录添加区域名称,或满足其他站点安全要求。
开始之前
您必须分配有 Audit Configuration(审计配置)权限配置文件。
有关更多信息,请参见如何获取管理权限。
$ auditconfig -getpolicy ...
有关输出的说明,请参见如何显示审计服务缺省值。
$ auditconfig -lspolicy policy string description: ahlt halt machine if it can not record an async event all all policies for the zone arge include exec environment args in audit recs argv include exec command line args in audit recs cnt when no more space, drop recs and keep a cnt group include supplementary groups in audit recs none no policies path allow multiple paths per event perzone use a separate queue and auditd per zone public audit public files seq include a sequence number in audit recs trail include trailer token in audit recs windata_down include downgraded window information in audit recs windata_up include upgraded window information in audit recs zonename include zonename token in audit recs
# auditconfig [ -t ] -setpolicy [prefix]policy[,policy...]
可选。创建临时或活动策略。可以设置用于调试或测试的临时策略。
刷新审计服务或通过 auditconfig -setpolicy 命令修改策略之前,临时策略起作用。
prefix 值 + 将策略列表添加到当前策略中。prefix 值 - 从当前策略中删除策略列表。没有前缀时,将重置审计策略。通过此选项,您可以保留当前审计策略。
选择要启用或禁用的策略。
示例 28-6 设置 ahlt 审计策略选项
在本示例中,禁用了 cnt 策略,启用了 ahlt 策略。在此配置下,当审计队列已满而发生异步事件时,会停止系统的使用。发生同步事件时,会挂起创建线程的进程。安全性比可用性重要时,此配置适用。有关更多信息,请参见同步事件和异步事件的审计策略。
# auditconfig -setpolicy -cnt # auditconfig -setpolicy +ahlt
ahlt 策略前的加号 (+) 将策略添加到当前策略设置。没有加号时,ahlt 策略将替换当前策略设置。
示例 28-7 设置临时审计策略
在本示例中,启用了审计服务,且配置了 ahlt 审计策略。管理员将 trail 审计策略添加到活动策略中 (+trail),但未将审计服务配置为永久使用 trail 审计策略 (-t)。trail 策略用于帮助恢复损坏的审计迹。
$ auditconfig -setpolicy ahlt $ auditconfig -getpolicy configured audit policies = ahlt active audit policies = ahlt $ auditconfig -t -setpolicy +trail configured audit policies = ahlt active audit policies = ahlt,trail
调试完成后,管理员将禁用 trail 策略。
$ auditconfig -setpolicy -trail $ auditconfig -getpolicy configured audit policies = ahlt active audit policies = ahlt
通过运行 audit -s 命令刷新审计服务也可以删除此临时策略,以及审计服务中的任何其他临时值。有关其他临时值的示例,请参见如何更改审计队列控制。
示例 28-8 设置 perzone 审计策略
在本示例中,将 perzone 审计策略添加到全局区域中的现有策略。由于 perzone 策略设置是作为永久属性存储的,因此 perzone 策略在会话过程中重新启动审计服务后才生效。
$ auditconfig -getpolicy configured audit policies = cnt active audit policies = cnt $ auditconfig -setpolicy +perzone $ auditconfig -getpolicy configured audit policies = perzone,cnt active audit policies = perzone,cnt
审计服务提供审计队列参数的缺省值。可以使用 auditconfig 命令检查、更改和临时更改这些值。
开始之前
您必须分配有 Audit Configuration(审计配置)权限配置文件。
有关更多信息,请参见如何获取管理权限。
$ auditconfig -getqctrl ...
有关输出的说明,请参见如何显示审计服务缺省值。
有关审计队列控制的示例和说明,请参见 auditconfig(1M) 手册页。
要修改部分或全部审计队列控制,请使用 -setqctrl 选项。
# auditconfig [ -t ] -setqctrl hiwater lowater bufsz interval
例如,将 interval 值设置为 10,但不设置其他控制。
# auditconfig -setqctrl 0 0 0 10
要修改特定审计队列控制,请指定其选项。-setqdelay 选项等同于 -setqctrl 0 0 0 interval,如 # auditconfig -setqdelay 10 中所示。
# auditconfig [ -t ] -setqhiwater value # auditconfig [ -t ] -setqlowater value # auditconfig [ -t ] -setqbufsz value # auditconfig [ -t ] -setqdelay value
示例 28-9 将审计队列控制重置为缺省值
管理员设置所有审计队列控制,然后将系统信息库中的 lowater 值更改回缺省值。
# auditconfig -setqctrl 200 5 10216 10 # auditconfig -setqctrl 200 0 10216 10 configured audit queue hiwater mark (records) = 200 no configured audit queue lowater mark configured audit queue buffer size (bytes) = 10216 configured audit queue delay (ticks) = 10 active audit queue hiwater mark (records) = 200 active audit queue lowater mark (records) = 5 active audit queue buffer size (bytes) = 10216 active audit queue delay (ticks) = 10
随后,管理员将当前会话的 lowater 值设置为缺省值。
# auditconfig -setqlowater 10 # auditconfig -getqlowater configured audit queue lowater mark (records) = 10 active audit queue lowater mark (records) = 10
/etc/security/audit_warn 脚本将生成邮件,通知管理员可能需要关注的审计事件。您可以定制脚本,可以将邮件发送给 root 以外的帐户。
如果设置了 perzone 策略,非全局区域的管理员必须在非全局区域中配置 audit_warn 电子邮件别名。
开始之前
您必须是 root 角色。
选择以下选项之一:
方法 1-在 audit_warn 脚本中使用其他电子邮件帐户替换 audit_warn 电子邮件别名。
将脚本的 ADDRESS 行中的 audit_warn 电子邮件别名更改为其他地址:
#ADDRESS=audit_warn # standard alias for audit alerts ADDRESS=audadmin # role alias for audit alerts
![]() | 注意 - 升级到新版本的 Oracle Solaris OS 时,必须手动合并定制的 audit_warn 文件和 audit_warn.new 文件。此新文件可能会包含重要更改。有关升级时 preserve=renamenew 文件操作的说明,请参见 pkg(5) 手册页。 |
方法 2- 将 audit_warn 电子邮件重定向到其他电子邮件帐户。
在这种情况下,需要将 audit_warn 电子邮件别名添加到适当的电子邮件别名文件。可以将别名添加到本地 /etc/mail/aliases 文件或 mail_aliases 数据库的名称空间中。如果将 root 和 audadmin 电子邮件帐户添加为 audit_warn 电子邮件别名的成员,/etc/mail/aliases 条目将类似于以下内容:
audit_warn: root,audadmin
然后,运行 newaliases 命令为 aliases 文件重新生成随机访问数据库。
# newaliases /etc/mail/aliases: 14 aliases, longest 10 bytes, 156 bytes total
创建您自己的审计类时,可以只将需要针对您所在站点审计的审计事件存放到该类中。
在一个系统上添加类时,将此更改复制到正在审计的所有系统中。最佳做法是先创建审计类,然后再启用审计服务。
![]() | 注意 - 升级到新版本的 Oracle Solaris OS 时,必须手动合并定制的 audit_class 文件和 audit_class.new 文件。此新文件可能会包含重要更改。有关升级时 preserve=renamenew 文件操作的说明,请参见 pkg(5) 手册页。 |
开始之前
条目必须是唯一的。您必须选择空闲位。用户可以使用的位在 /etc/security/audit_class 文件中有所介绍。
您必须是 root 角色。
# cp /etc/security/audit_class /etc/security/audit_class.orig
每一项都具有以下格式:
0x64bitnumber:flag:description
有关字段的说明,请参见 audit_class(4) 手册页。有关现有类的列表,请阅读 /etc/security/audit_class 文件。
示例 28-10 创建新的审计类
本示例创建一个类来保存角色中执行的管理命令。audit_class 文件中添加的项如下所示:
0x0100000000000000:pf:profile command
该条目创建新的 pf 审计类。示例 28-11 将填充新审计类。
故障排除
如果定制了 audit_class 文件,请确保系统审计预选掩码的所有用户例外与新的审计类一致。audit_flags 值不是 audit_class 文件的子集时发生错误。
可能需要更改审计事件的类成员身份来减小现有审计类的大小,或者将事件放置在它自己的类中。
![]() | 注意 - 切勿注释掉 audit_event 中的事件。该文件供 praudit 命令用来读取二进制审计文件。归档审计文件可能包含该文件中列出的事件。 |
在一个系统上重新配置审计事件到类的映射时,将此更改复制到正在审计的所有系统中。最佳做法是用户登录之前更改事件到类映射。
![]() | 注意 - 升级到新版本的 Oracle Solaris OS 时,必须手动合并定制的 audit_event 文件和 audit_event.new 文件。此新文件可能会包含重要更改。有关升级时 preserve=renamenew 文件操作的说明,请参见 pkg(5) 手册页。 |
开始之前
您必须是 root 角色。
# cp /etc/security/audit_event /etc/security/audit_event.orig
每一项都具有以下格式:
number:name:description:class-list
审计事件 ID。
审计事件的名称。
通常是触发创建审计记录的系统调用或可执行文件。
审计类的逗号分隔列表。
示例 28-11 将现有审计事件映射到新类
本示例中将现有审计事件映射到在示例 28-10 中创建的新类。缺省情况下,AUE_PFEXEC 审计事件映射到四个类:ps、ex、ua 和 as。通过创建新类,管理员可以审计 AUE_PFEXEC 事件而无需审计其他四类中的事件。
# grep pf /etc/security/audit_class 0x0100000000000000:pf:profile command # vi /etc/security/audit_event 116:AUE_PFEXEC:execve(2) with pfexec enabled:pf # auditconfig -setflags lo,pf user default audit flags = pf,lo(0x0100000000001000,0x0100000000001000)