JavaScript is required to for searching.
跳过导航链接
退出打印视图
Oracle Solaris 管理:安全服务     Oracle Solaris 11 Information Library (简体中文)
search filter icon
search icon

文档信息

前言

第 1 部分安全性概述

1.  安全性服务(概述)

第 2 部分系统、文件和设备安全性

2.  管理计算机安全性(概述)

3.  控制对系统的访问(任务)

4.  病毒扫描服务(任务)

5.  控制对设备的访问(任务)

6.  使用基本审计报告工具(任务)

7.  控制对文件的访问(任务)

第 3 部分角色、权限配置文件和特权

8.  使用角色和特权(概述)

9.  使用基于角色的访问控制(任务)

10.  Oracle Solaris 中的安全属性(参考)

第 4 部分加密服务

11.  加密框架(概述)

12.  加密框架(任务)

13.  密钥管理框架

第 5 部分验证服务和安全通信

14.  网络服务验证(任务)

15.  使用 PAM

16.  使用 SASL

17.  使用 安全 Shell(任务)

18.  安全 Shell(参考)

第 6 部分Kerberos 服务

19.  Kerberos 服务介绍

20.  规划 Kerberos 服务

21.  配置 Kerberos 服务(任务)

22.  Kerberos 错误消息和故障排除

23.  管理 Kerberos 主体和策略(任务)

24.  使用 Kerberos 应用程序(任务)

25.  Kerberos 服务(参考)

第 7 部分在 Oracle Solaris 中审计

26.  审计(概述)

27.  规划审计

28.  管理审计(任务)

管理审计(任务列表)

配置审计服务(任务)

配置审计服务(任务列表)

如何显示审计服务缺省值

如何预选审计类

如何配置用户审计特征

如何更改审计策略

如何更改审计队列控制

如何配置 audit_warn 电子邮件别名

如何添加审计类

如何更改审计事件的类成员身份

配置审计日志(任务)

配置审计日志(任务列表)

如何为审计文件创建 ZFS 文件系统

如何为审计迹指定审计空间

如何向远程系统信息库发送审计文件

如何配置 syslog 审计日志

在区域中配置审计服务(任务)

如何配置以相同方式审计所有区域

如何配置每区域审计

启用和禁用审计服务(任务)

如何刷新审计服务

如何禁用审计服务

如何启用审计服务

在本地系统上管理审计记录(任务)

在本地系统上管理审计记录(任务列表)

如何显示审计记录定义

如何合并审计迹中的审计文件

如何从审计迹中选择审计事件

如何查看二进制审计文件的内容

如何清除 not_terminated 审计文件

如何防止审计迹溢出

审计服务的故障排除(任务)

审计服务的故障排除(任务列表)

如何确定审计正在运行

如何减少生成的审计记录数目

如何审计用户执行的所有命令

如何找到对特定文件更改的审计记录

如何更新已登录用户的预选掩码

如何阻止审计特定事件

如何限制二进制审计文件的大小

如何压缩专用文件系统上的审计文件

如何审计从其他操作系统的登录

如何审计 FTP 和 SFTP 文件传输

29.  审计(参考)

词汇表

索引

配置审计服务(任务)

在网络上启用审计之前,可以修改缺省值以满足站点审计要求。最佳做法是在第一批用户登录之前尽可能定制审计配置。

如果已实现区域,则可以选择从全局区域审计所有区域或单独审计非全局区域。有关概述的信息,请参见审计和 Oracle Solaris 区域。有关规划的信息,请参见如何规划区域中的审计。有关过程的信息,请参见在区域中配置审计服务(任务)

配置审计服务(任务列表)

以下任务列表列出了配置审计的过程。所有任务都是可选的。

任务
说明
参考
显示审计缺省值。
配置审计之前,显示缺省策略、队列控制、标志和插件用法。
选择要审计的事件。
预选系统范围的审计类。如果是可归属事件,则针对此事件审计所有用户。
选择要针对特定用户审计的事件。
设置系统范围的审计类的用户特定例外。
指定审计策略。
定义站点所需的其他审计数据。
指定队列控制。
修改缺省缓冲区大小、队列中的审计记录以及两次将审计记录写入缓冲区之间的间隔。
创建 audit_warn 电子邮件别名。
定义需要关注审计服务时接收电子邮件警告的人员。
配置审计日志。
为每个插件配置审计记录的位置。
添加审计类。
通过创建用来保存关键事件的新审计类来减少审计记录数目。
更改事件到类的映射。
通过更改事件到类的映射来减少审计记录数目。

如何显示审计服务缺省值

本过程中的命令显示当前审计配置。本过程中的输出是从未配置的系统获取的。

开始之前

您必须分配有 Audit Configuration(审计配置)或 Audit Control(审计控制)权限配置文件。

  1. 成为具有所需安全属性的管理员。

    有关更多信息,请参见如何获取管理权限

  2. 显示可归属事件的预选类。
    # auditconfig -getflags
    active user default audit flags = lo(0x1000,0x1000)
    configured user default audit flags = lo(0x1000,0x1000)

    lologin/logout 审计类的标志。掩码输出的格式为 (success, failure)。

  3. 显示无归属事件的预选类。
    # auditconfig -getnaflags
    active non-attributable audit flags = lo(0x1000,0x1000)
    configured non-attributable audit flags = lo(0x1000,0x1000)

    注 - 要查看哪些事件指定给了某一类以及正在记录哪些事件,请运行 auditrecord -c class 命令。


  4. 显示审计策略。
    $ auditconfig -getpolicy
    configured audit policies = cnt
    active audit policies = cnt

    活动策略是当前策略,但审计服务并不存储该策略值。已配置策略由审计服务存储,因此重新启动审计服务时会恢复该策略。

  5. 显示有关审计插件的信息。
    $ 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 插件处于活动状态。

  6. 显示审计队列控制。
    $ 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 表示系统使用的是缺省值。

  7. 显示为现有用户预选的审计类。

    查找用户,然后显示每个用户的 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(审计配置)权限配置文件。

  1. 成为具有所需安全属性的管理员。

    有关更多信息,请参见如何获取管理权限

  2. 确定当前预选类。
    # auditconfig -getflags
    ...
    # auditconfig -getnaflags
    ,,,

    有关输出的说明,请参见如何显示审计服务缺省值

  3. 预选可归属类。
    # auditconfig -setflags lo,ps,fw
    user default audit flags = ps,lo,fw(0x101002,0x101002)

    此命令审计登录/注销、进程启动/停止以及文件写入类中的成功事件和失败事件。


    注 - auditconfig -setflags 命令不向当前系统缺省值添加类。此命令替换系统缺省值,因此必须指定要预选的所有类。


  4. 预选无归属类。

    na 类包含其他事件之间的 PROM、引导和无归属挂载。

    # auditconfig -setnaflags lo,na
    non-attributable audit flags = lo,na(0x1400,0x1400)

    lona-setnaflags 选项唯一有用的两个参数。


    注 - auditconfig -setnaflags 命令替换系统缺省值,因此必须指定要预选的所有类。


如何配置用户审计特征

通过基于每个用户而非基于每个系统预选类,有时可以降低审计对系统性能的影响。此外,您可能还需要审计与系统稍有不同的特定用户。

为每个用户预选的审计类是由 audit_flags 安全属性指定的。这些用户特定值以及系统的预选类确定用户的审计掩码,如进程审计特征中所述。

开始之前

您必须是 root 角色。

示例 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 值和系统缺省值的组合。289jdoe 登录 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 值和系统缺省值的组合。289jdoe 登录 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(审计配置)权限配置文件。

  1. 成为具有所需安全属性的管理员。

    有关更多信息,请参见如何获取管理权限

  2. 查看当前审计策略。
    $ auditconfig -getpolicy
    ...

    有关输出的说明,请参见如何显示审计服务缺省值

  3. 查看可用的策略选项。
    $ 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

    注 - 只能在全局区域中设置 perzoneahlt 策略选项。有关使用特定策略选项的权衡,请参见了解审计策略


  4. 启用或禁用选定的审计策略选项。
    # auditconfig [ -t ] -setpolicy [prefix]policy[,policy...]
    -t

    可选。创建临时或活动策略。可以设置用于调试或测试的临时策略。

    刷新审计服务或通过 auditconfig -setpolicy 命令修改策略之前,临时策略起作用。

    prefix

    prefix+ 将策略列表添加到当前策略中。prefix- 从当前策略中删除策略列表。没有前缀时,将重置审计策略。通过此选项,您可以保留当前审计策略。

    policy

    选择要启用或禁用的策略。

示例 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(审计配置)权限配置文件。

  1. 成为具有所需安全属性的管理员。

    有关更多信息,请参见如何获取管理权限

  2. 查看审计队列控制的当前值。
    $ auditconfig -getqctrl
    ...

    有关输出的说明,请参见如何显示审计服务缺省值

  3. 修改选定的审计队列控制。

    有关审计队列控制的示例和说明,请参见 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

如何配置 audit_warn 电子邮件别名

/etc/security/audit_warn 脚本将生成邮件,通知管理员可能需要关注的审计事件。您可以定制脚本,可以将邮件发送给 root 以外的帐户。

如果设置了 perzone 策略,非全局区域的管理员必须在非全局区域中配置 audit_warn 电子邮件别名。

开始之前

您必须是 root 角色。

如何添加审计类

创建您自己的审计类时,可以只将需要针对您所在站点审计的审计事件存放到该类中。

在一个系统上添加类时,将此更改复制到正在审计的所有系统中。最佳做法是先创建审计类,然后再启用审计服务。


注意

注意 - 升级到新版本的 Oracle Solaris OS 时,必须手动合并定制的 audit_class 文件和 audit_class.new 文件。此新文件可能会包含重要更改。有关升级时 preserve=renamenew 文件操作的说明,请参见 pkg(5) 手册页。


开始之前

条目必须是唯一的。您必须选择空闲位。用户可以使用的位在 /etc/security/audit_class 文件中有所介绍。

您必须是 root 角色。

  1. 可选保存 audit_class 文件的备份副本。
    # cp /etc/security/audit_class /etc/security/audit_class.orig
  2. audit_class 文件中添加新项。

    每一项都具有以下格式:

    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 角色。

  1. 可选保存 audit_event 文件的备份副本。
    # cp /etc/security/audit_event /etc/security/audit_event.orig
  2. 通过更改事件的 class-list 来更改特定事件所属的类。

    每一项都具有以下格式:

    number:name:description:class-list
    number

    审计事件 ID。

    name

    审计事件的名称。

    description

    通常是触发创建审计记录的系统调用或可执行文件。

    class-list

    审计类的逗号分隔列表。

示例 28-11 将现有审计事件映射到新类

本示例中将现有审计事件映射到在示例 28-10 中创建的新类。缺省情况下,AUE_PFEXEC 审计事件映射到四个类:psexuaas。通过创建新类,管理员可以审计 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)