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.  审计(参考)

词汇表

索引

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

本节介绍各种审计错误消息、首选项以及其他工具提供的审计。这些过程可以帮助您记录所需的审计事件和调试审计问题。

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

以下任务列表列出了审计的故障排除过程。

问题
解决方法
参考
为何配置了审计,却没有记录审计记录?
对审计服务进行故障排除。
怎样才能减少收集的审计信息量?
只审计您想要审计的事件。
如何对用户在系统上执行的所有操作进行审计?
针对每个命令审计一个或多个用户。
如何更改正在记录的审计事件,并使更改对现有会话产生影响?
更新用户的预选掩码。
如何找到对特定文件的修改?
审计文件修改,然后使用 auditreduce 命令找出特定文件。
如何减小审计文件的大小?
限制二进制审计文件的大小。
如何使审计文件使用更少的文件系统空间?
使用 ZFS 配额和压缩。
如何从 audit_event 中删除审计事件?
正确更新 audit_event 文件。
如何对 Oracle Solaris 系统的所有登录进行审计?
对从任何系统的登录进行审计。
为什么没有为我的 FTP 传输保留审计记录?
对生成自己日志的实用程序使用适当的审计工具。

如何确定审计正在运行

缺省情况下启用审计。如果您认为审计尚未禁用,但没有将任何审计记录发送到活动插件,请使用以下过程隔离问题。

开始之前

要修改系统文件,您必须是 root 角色。要配置审计,必须为您指定 Audit Configuration(审计配置)权限配置文件。

  1. 确定审计正在运行中。

    使用以下任一方法:

    • 检验当前审计条件。

      以下列表说明,审计未在运行中:

      # auditconfig -getcond
      audit condition = noaudit

      以下列表说明审计正在运行中:

      # auditconfig -getcond
      audit condition = auditing
    • 验证审计服务是否正在运行。

      以下列表说明,审计未在运行中:

      # svcs -x auditd
      svc:/system/auditd:default (Solaris audit daemon)
       State: disabled since Sun Oct 10 10:10:10 2010
      Reason: Disabled by an administrator.
         See: http://sun.com/msg/SMF-8000-05
         See: auditd(1M)
         See: audit(1M)
         See: auditconfig(1M)
         See: audit_flags(5)
         See: audit_binfile(5)
         See: audit_syslog(5)
         See: audit_remote(5)
         See: /var/svc/log/system-auditd:default.log
      Impact: This service is not running.

      以下列表说明,审计服务正在运行中:

      # svcs auditd
      STATE          STIME    FMRI
      online         10:10:10 svc:/system/auditd:default

    如果审计服务没有运行,请启用该服务。有关过程,请参见如何启用审计服务。

  2. 验证是否至少有一个插件处于活动状态。
    # audit -v

    如果没有任何插件处于活动状态,则激活一个插件。

    # auditconfig -setplugin audit_binfile active
  3. 如果创建了定制审计类,请确认已经将事件分配给该类。

    例如,以下标志列表包含 Oracle Solaris 软件不提供的 pf 类:

    # auditconfig -getflags
    active user default audit flags = pf,lo(0x0100000000000000,00x0100000000001000)
    configured user default audit flags = pf,lo(0x0100000000000000,00x0100000000001000)

    有关创建 pf 类的说明,请参见如何添加审计类。

    1. 检验是否在 audit_class 文件中定义了该类。

      审计类必须定义,其掩码必须唯一。

      # grep pf /etc/security/audit_classVerify class exists
      0x0100000000000000:pf:profile
      # grep 0x08000000 /etc/security/audit_classEnsure mask is unique
      0x0100000000000000:pf:profile

      替换不唯一的掩码。如果没有定义该类,请定义它。否则,使用有效值运行 auditconfig -setflags 命令以重置当前标志。

    2. 检验是否已经将事件分配给该类。

      使用以下方法之一:

      # auditconfig -lsevent | egrep " pf|,pf|pf,"
      AUE_PFEXEC      116 pf execve(2) with pfexec enabled
      # auditrecord -c pf
      List of audit events assigned to pf class

      如果未将事件分配给该类,请向其分配适当的事件。

  4. 如果前面的步骤仍未找出问题所在,请检查电子邮件和日志文件。
    1. 读取发送到 audit_warn 别名的电子邮件。

      audit_warn 脚本将警报消息发送到 audit_warn 电子邮件别名。如果缺少正确配置的别名,消息将发送到 root 帐户。

    2. 检查审计服务的日志文件。

      svcs -s auditd 命令的输出列出审计服务生成的审计日志的完整路径。有关示例,请参见步骤 1 中的列表。

    3. 检查系统日志文件。

      audit_warn 脚本将 daemon.alert 消息写入 /var/log/syslog 文件。

      /var/adm/messages 文件可能会包含信息。

  5. 找到并解决问题后,启用或重新启动审计服务。
    # audit -s

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

确定了要在您的站点上对哪些事件进行审计后,请参考以下建议创建可管理的审计文件。

开始之前

要预选审计类和设置审计策略,您必须分配有 Audit Configuration(审计配置)权限配置文件。要修改系统文件并将审计标志指定给用户、角色和权限配置文件,您必须是 root 角色。

  1. 使用缺省审计策略。

    具体而言,应避免向审计迹中添加事件和审计标记。以下策略会增长审计迹的大小。

    • arge 策略-向 execv 审计事件添加环境变量。

    • argv 策略-向 execv 审计事件添加命令参数。

    • public 策略-如果正在审计文件事件,每次public object(公共对象)发生可审计事件时,都会将一个事件添加到审计迹中。文件类包括 fa、fc、fd、fm、fr、 fw 和 cl。有关公共文件的定义,请参见审计术语和概念。

    • path 策略-将 path 标记添加到包含可选 path 标志的审计事件。

    • group 策略-将组标记添加到包含可选 newgroups 标记的审计事件。

    • seq 策略-将序列标记添加到每个审计事件。

    • trail 策略-将尾部标记添加到每个审计事件。

    • windata_down 策略-在配置了 Trusted Extensions 的系统上,在有标签窗口中的信息降级时添加事件。

    • windata_up 策略-在配置了 Trusted Extensions 的系统上,在有标签窗口中的信息升级后添加事件。

    • zonename 策略-将区域名称添加到每个审计事件。如果全局区域是配置的唯一区域,将字符串 zone, global 添加到每个审计事件。

    以下审计记录显示了 ls 命令的用法。正在审计 ex 类,且正在使用缺省策略:

    header,129,2,AUE_EXECVE,,mach1,2010-10-14 11:39:22.480 -07:00
    path,/usr/bin/ls
    attribute,100555,root,bin,21,320271,18446744073709551615
    subject,jdoe,root,root,root,root,2404,50036632,82 0 mach1
    return,success,0

    以下是启用所有策略时的相同记录:

    header,1578,2,AUE_EXECVE,,mach1,2010-10-14 11:45:46.658 -07:00
    path,/usr/bin/ls
    attribute,100555,root,bin,21,320271,18446744073709551615
    exec_args,2,ls,/etc/security
    exec_env,49,MANPATH=/usr/share/man,USER=jdoe,GDM_KEYBOARD_LAYOUT=us,EDITOR=gedit,
      LANG=en_US.UTF-8,GDM_LANG=en_US.UTF-8,PS1=#,GDMSESSION=gnome,SESSIONTYPE=1,SHLVL=2,
      HOME=/home/jdoe,LOGNAME=jdoe,G_FILENAME_ENCODING=@locale,UTF-8, PRINTER=example-dbl,
    ...
    path,/lib/ld.so.1
    attribute,100755,root,bin,21,393073,18446744073709551615
    subject,jdoe,root,root,root,root,2424,50036632,82 0 mach1
    group,root,other,bin,sys,adm,uucp,mail,tty,lp,nuucp,daemon
    return,success,0
    zone,global
    sequence,197
    trailer,1578
  2. 使用 audit_syslog 插件将部分审计事件发送到 syslog。

    但不将这些审计事件发送到 audit_binfile 或 audit_remote 插件。只有当不要求保留发送到 syslog 日志的审计事件的二进制记录时,才适合使用此方法。

  3. 设置更少的系统范围审计标志并审计各个用户。

    通过减少系统范围内审计的审计类的数目,来减少对所有用户的审计量。

    使用 roleadd、rolemod、useradd 和 usermod 命令的 audit_flags 关键字审计特定用户和角色的事件。有关示例,请参见示例 28-18 和 usermod(1M) 手册页。

    使用 profiles 命令的 always_audit 和 never_audit 属性审计特定权限配置文件的事件。有关信息,请参见 profiles(1) 手册页。


    注 - 与其他安全属性一样,审计标志会受到搜索顺序的影响。有关更多信息,请参见搜索指定安全属性的顺序。


  4. 创建定制审计类。

    可以在您的站点上创建审计类。仅将需要监视的审计事件分配给这些类。有关过程,请参见如何添加审计类。


    注意

    注意 - 如果修改了现有审计类分配,在升级到 Oracle Solaris OS 的新版本时,可能会保留所做的修改。但是,Oracle Solaris 中的新版本文件可能会包含必须手动并入安装的更改。请认真查看安装日志。有关更多信息,请参见 pkg(5) 手册页中 preserve=renamenew 的说明。


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

作为站点安全策略的一部分,有些站点会需要 root 帐户和管理角色运行的所有命令的审计记录。一些站点可能会需要所有用户运行的所有命令的审计记录。此外,站点可能还会要求记录命令参数和环境。

开始之前

要预选审计类和设置审计策略,您必须分配有 Audit Configuration(审计配置)权限配置文件。要将审计标志指定给用户、角色和权限配置文件,您必须是 root 角色。

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

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

  2. 审计 lo 和 ex 类。

    ex 类审计对 exec() 和 execve() 函数的所有调用。

    lo 类审计登录、注销和屏幕锁定。以下输出列出了 ex 和 lo 类中的所有事件。

    % auditconfig -lsevent | grep " lo "
    AUE_login                       6152 lo login - local
    AUE_logout                      6153 lo logout
    AUE_telnet                      6154 lo login - telnet
    AUE_rlogin                      6155 lo login - rlogin
    AUE_rshd                        6158 lo rsh access
    AUE_su                          6159 lo su
    AUE_rexecd                      6162 lo rexecd
    AUE_passwd                      6163 lo passwd
    AUE_rexd                        6164 lo rexd
    AUE_ftpd                        6165 lo ftp access
    AUE_ftpd_logout                 6171 lo ftp logout
    AUE_ssh                         6172 lo login - ssh
    AUE_role_login                  6173 lo role login
    AUE_newgrp_login                6212 lo newgrp login
    AUE_admin_authenticate          6213 lo admin login
    AUE_screenlock                  6221 lo screenlock - lock
    AUE_screenunlock                6222 lo screenlock - unlock
    AUE_zlogin                      6227 lo login - zlogin
    AUE_su_logout                   6228 lo su logout
    AUE_role_logout                 6229 lo role logout
    AUE_smbd_session                6244 lo smbd(1m) session setup
    AUE_smbd_logoff                 6245 lo smbd(1m) session logoff
    AUE_ClientConnect               9101 lo client connection to x server
    AUE_ClientDisconnect            9102 lo client disconn. from x server
    % auditconfig -lsevent | egrep " ex |,ex |ex,"
    AUE_EXECVE                        23 ex,ps execve(2)
    • 要审计管理角色的这些类,请修改角色的安全属性。

      在以下示例中,root 是一个角色。站点已创建 sysadm、auditadm 和 netadm 三个角色。针对 ex 和 lo 类中的成功事件和失败事件审计所有角色。

      # rolemod -K audit_flags=lo,ex:no root
      # rolemod -K audit_flags=lo,ex:no sysadm
      # rolemod -K audit_flags=lo,ex:no auditadm
      # rolemod -K audit_flags=lo,ex:no netadm
    • 要审计所有用户的这些类,请设置系统范围的标志。
      # auditconfig -setflags lo,ex

      输出内容类似如下:

      header,129,2,AUE_EXECVE,,mach1,2010-10-14 12:17:12.616 -07:00
      path,/usr/bin/ls
      attribute,100555,root,bin,21,320271,18446744073709551615
      subject,jdoe,root,root,root,root,2486,50036632,82 0 mach1
      return,success,0
  3. 要记录命令参数,请添加 argv 策略。
    # auditconfig -setpolicy +argv

    exec_args 标记用于记录命令参数:

    header,151,2,AUE_EXECVE,,mach1,2010-10-14 12:26:17.373 -07:00
    path,/usr/bin/ls
    attribute,100555,root,bin,21,320271,18446744073709551615
    exec_args,2,ls,/etc/security
    subject,jdoe,root,root,root,root,2494,50036632,82 0 mach1
    return,success,0
  4. 要记录命令的运行环境,请添加 arge 策略。
    # auditconfig -setpolicy +arge

    exec_env 标记用于记录命令环境:

    header,1460,2,AUE_EXECVE,,mach1,2010-10-14 12:29:39.679 -07:00
    path,/usr/bin/ls
    attribute,100555,root,bin,21,320271,18446744073709551615
    exec_args,2,ls,/etc/security
    exec_env,49,MANPATH=/usr/share/man,USER=jdoe,GDM_KEYBOARD_LAYOUT=us,EDITOR=gedit,
    LANG=en_US.UTF-8,GDM_LANG=en_US.UTF-8,PS1=#,GDMSESSION=gnome,SESSIONTYPE=1,SHLVL=2,
    HOME=/home/jdoe,LOGNAME=jdoe,G_FILENAME_ENCODING=@locale,UTF-8,
    PRINTER=example-dbl,...,_=/usr/bin/ls
    subject,jdoe,root,root,root,root,2502,50036632,82 0 mach1
    return,success,0

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

如果您的目标是记录对有限数目的文件(如 /etc/passwd 和 /etc/default 目录下的文件)的写入情况,请使用 auditreduce 命令找到这些文件。

开始之前

您必须分配有 Audit Configuration(审计配置)权限配置文件才能使用 auditconfig 命令。您必须分配有 Audit Review(审计查看)权限配置文件才能使用 auditreduce 命令。要将审计标志指定给用户和角色,您必须是 root 角色。

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

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

  2. 审计 fw 类。

    将类添加到用户或角色的审计标志时生成的记录少于将类添加到系统范围的审计预选掩码时生成的记录。执行下列步骤之一:

    • 将 fw 类添加到特定角色。
      # rolemod -K audit_flags=fw:no root
      # rolemod -K audit_flags=fw:no sysadm
      # rolemod -K audit_flags=fw:no auditadm
      # rolemod -K audit_flags=fw:no netadm
    • 将 fw 类添加到系统范围的标志。
      # auditconfig -getflags
      active user default audit flags = lo(0x1000,0x1000)
      configured user default audit flags = lo(0x1000,0x1000)
      # auditconfig -setflags lo,fw
      user default audit flags = lo,fw(0x1002,0x1002)
  3. 或者,审计成功的文件写入。

    审计成功事件时生成的记录少于同时审计失败事件和成功事件时生成的记录。执行下列步骤之一:

    • 将 +fw 标志添加到特定角色。
      # rolemod -K audit_flags=+fw:no root
      # rolemod -K audit_flags=+fw:no sysadm
      # rolemod -K audit_flags=+fw:no auditadm
      # rolemod -K audit_flags=+fw:no netadm
    • 将 +fw 标志添加到系统范围的标志。
      # auditconfig -getflags
      active user default audit flags = lo(0x1000,0x1000)
      configured user default audit flags = lo(0x1000,0x1000)
      # auditconfig -setflags lo,+fw
      user default audit flags = lo,+fw(0x1002,0x1000)
    • 如果为成功事件和失败事件审计系统范围的标志,请为特定用户和角色设置例外。
      # auditconfig -getflags
      active user default audit flags = lo,fw(0x1002,0x1002)
      configured user default audit flags = lo,fw(0x1002,0x1002)
      # rolemod -K audit_flags=^-fw:no root
      # rolemod -K audit_flags=^-fw:no sysadm
      # rolemod -K audit_flags=^-fw:no auditadm
      # rolemod -K audit_flags=^-fw:no netadm

      系统范围的标志仍保持不变,但这四个角色的预选掩码发生了更改。

      # auditconfig -getflags
      active user default audit flags = lo,fw(0x1002,0x1000)
      configured user default audit flags = lo,fw(0x1002,0x1000)
  4. 要找到特定文件的审计记录,请使用 auditreduce 命令。
    # auditreduce -o file=/etc/passwd,/etc/default -O filechg

    auditreduce 命令在审计迹中搜索所有 file 参数实例。该命令创建一个后缀为 filechg 的二进制文件,此文件包含了包括相关文件路径名的所有记录。有关 -o file=pathname 选项的语法,请参见 auditreduce(1M) 手册页。

  5. 要读取 filechg 文件,请使用 praudit 命令。
    # praudit *filechg

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

您希望审计已登录用户系统范围的审计预选掩码的更改。

开始之前

您必须分配有 Audit Configuration(审计配置)权限配置文件。要停止用户会话,您必须分配有 Process Management(进程管理)权限配置文件。

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

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

  2. 更新已登录用户的预选掩码。

    您有两种选择。可以停止现有会话,或使用 auditconfig 命令更新预选掩码。

    • 终止用户的现有会话。

      用户可以注销后重新登录。或者,角色分配有 Process Management(进程管理)权限配置文件时,您可以手动停止(中止)活动会话。新的会话将继承新的预选掩码。但是,终止用户可能不现实。

    • 动态更改每个已登录用户的预选掩码。

      角色包含 Audit Configuration(审计配置)权限配置文件时,假设您已将系统范围的审计预选掩码从 lo 更改为 lo,ex。

      # auditconfig -setflags lo,ex
      1. 列出登录的一般用户及其进程 ID。
        # who -a
        jdoe  - vt/2         Jan 25 07:56  4:10   1597   (:0)
        jdoe  + pts/1        Jan 25 10:10   .     1706   (:0.0)
        ...
        jdoe  + pts/2        Jan 25 11:36  3:41   1706   (:0.0)
      2. 为便于以后进行比较,显示每个用户的预选掩码。
        # auditconfig -getpinfo 1706
        audit id = jdoe(1234)
        process preselection mask = lo(0x1000,0x1000)
        terminal id (maj,min,host) = 9426,65559,mach1(192.168.123.234)
        audit session id = 103203403
      3. 修改用户的预选掩码。
        # auditconfig -setumask jdoe lo,ex /* for this user */
        # auditconfig -setsmask 103203403 lo,ex /* for this session */
        # auditconfig -setpmask 1706 lo,ex /* for this process */
      4. 验证用户的预选掩码是否已更改。

        例如,检查更改掩码之前存在的进程。

        # auditconfig -getpinfo 1706
        audit id = jdoe(1234)
        process preselection mask = ex,lo(0x40001000,0x40001000) 
        terminal id (maj,min,host) = 9426,65559,mach1(192.168.123.234)
        audit session id = 103203403

如何阻止审计特定事件

出于维护目的,有时某个站点需要阻止对事件进行审计。

开始之前

您必须是 root 角色。

  1. 将相关事件的类更改为 no 类。

    例如,事件 26 和 27 属于 pm 类。

    ## audit_event file
    ...
    25:AUE_VFORK:vfork(2):ps
    26:AUE_SETGROUPS:setgroups(2):pm
    27:AUE_SETPGRP:setpgrp(2):pm
    28:AUE_SWAPON:swapon(2):no
    ...

    将这些事件更改为 no 类。

    ## audit_event file
    ...
    25:AUE_VFORK:vfork(2):ps
    26:AUE_SETGROUPS:setgroups(2):no
    27:AUE_SETPGRP:setpgrp(2):no
    28:AUE_SWAPON:swapon(2):no
    ...

    如果当前正在审计 pm 类,现有会话仍将审计事件 26 和 27。要停止审计这些事件,必须遵循如何更新已登录用户的预选掩码中的说明更新用户的预选掩码。


    注意

    注意 - 切勿注释掉 audit_event 中的事件。该文件供 praudit 命令用来读取二进制审计文件。归档审计文件可能包含该文件中列出的事件。


  2. 刷新内核事件。
    # auditconfig -conf
    Configured 283 kernel events.

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

系统对二进制审计文件的增大没有限制。但为了归档和搜索方便,您可能需要限制其大小。还可以基于原始文件创建较小的二进制文件。

开始之前

您必须分配有 Audit Configuration(审计配置)权限配置文件才能设置 p_fsize 属性。您必须分配有 Audit Review(审计查看)权限配置文件才能使用 auditreduce 命令。

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

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

  2. 使用 p_fsize 属性限制各个二进制审计文件的大小。

    有关 p_fsize 属性的说明,请参见 audit_binfile(5) 手册页的 OBJECT ATTRIBUTES 部分。

    有关示例,请参见示例 28-14。

  3. 使用 auditreduce 命令选择记录,并将这些记录写入更小的文件供进一步分析。

    auditreduce -lowercase 选项用于查找特定记录。

    auditreduce -Uppercase 选项用于将您的选择写入文件。有关更多信息,请参见 auditreduce(1M) 手册页。

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

审计文件可以增大。您可以设置文件大小的上限,如示例 28-14 中所示。在本过程中,使用压缩来减小大小。

开始之前

您必须分配有 ZFS File System Management(ZFS 文件系统管理)和 ZFS Storage Management(ZFS 存储管理)权限配置文件。通过后一个配置文件可以创建存储池。

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

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

  2. 将 ZFS 文件系统专用于审计文件。

    有关过程,请参见如何为审计文件创建 ZFS 文件系统。

  3. 使用以下选项之一压缩 ZFS 存储池。

    使用这两个选项均可压缩审计文件系统。刷新审计服务后,将显示压缩率。

    要设置压缩,请使用 zfs set compression=on dataset 命令。在以下示例中,ZFS 池 auditp/auditf 为数据集。

    • 使用缺省压缩算法。
      # zfs set compression=on auditp/auditf
      # audit -s
      # zfs get compressratio auditp/auditf
      NAME           PROPERTY       VALUE  SOURCE
      auditp/auditf  compressratio  4.54x  -
    • 使用更高压缩算法。
      # zfs set compression=gzip-9 auditp/auditf
      # zfs get compression auditp/auditf
      NAME           PROPERTY     VALUE     SOURCE
      auditp/auditf  compression  gzip-9    local
      # audit -s
      # zfs get compressratio auditp/auditf
      NAME           PROPERTY       VALUE  SOURCE
      auditp/auditf  compressratio  16.89x  -

      gzip-9 压缩算法导致文件占用的空间比缺省压缩算法 lzjb 少三分之一。有关更多信息,请参见《Oracle Solaris 管理:ZFS 文件系统》中的第 6  章 "管理 Oracle Solaris ZFS 文件系统"。

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

Oracle Solaris OS 可以审计所有登录,无论登录源为何。

开始之前

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

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

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

  2. 审计可归属事件和无归属事件的 lo 类。

    该类审计登录、注销和屏幕锁定。缺省情况下审计这些类。

    # auditconfig -getflags
    active user default audit flags = lo(0x1000,0x1000)
    configured user default audit flags = lo(0x1000,0x1000)
    # auditconfig -getnaflags
    active non-attributable audit flags = lo(0x1000,0x1000)
    configured non-attributable audit flags = lo(0x1000,0x1000)
  3. 如果值已更改,添加 lo 标志。
    # auditconfig -getflags
    active user default audit flags = as,st(0x20800,0x20800)
    configured user default audit flags = as,st(0x20800,0x20800)
    # auditconfig -setflags lo,as,st
    user default audit flags = as,lo,st(0x21800,0x21800)
    # auditconfig -getnaflags
    active non-attributable audit flags = na(0x400,0x400)
    configured non-attributable audit flags = na(0x400,0x400)
    # auditconfig -setnaflags lo,na
    non-attributable audit flags = lo,na(0x1400,0x1400)

    注 - 要审计 ssh 登录,您的系统必须正在 Oracle Solaris 中运行 ssh 守护进程。在 Oracle Solaris 系统上,将针对该审计服务修改此守护进程。有关更多信息,请参见安全 Shell 和 OpenSSH 项目。


如何审计 FTP 和 SFTP 文件传输

FTP 服务创建其文件传输的日志。通过预选 ft 审计类可以审计 ssh 协议下运行的 SFTP 服务。可以审计到这两种服务的登录。

开始之前

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

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

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

  2. 要记录 FTP 服务的命令和文件传输,请参见 proftpd(8) 手册页。

    有关可用的记录选项,请阅读“记录功能”部分。特别是,log commands 和 log transfers 选项可以提供有用的日志。

  3. 要记录 sftp 访问和文件传输,请审计 ft 类。

    ft 类包含以下 SFTP 事务:

    % auditrecord -c ft
    file transfer: chmod ...
    file transfer: chown ...
    file transfer: download ...
    file transfer: mkdir ...
    file transfer: upload ...
    file transfer: remove ...
    file transfer: rename ...
    file transfer: rmdir ...
    file transfer: session start ...
    file transfer: session end ...
    file transfer: symlink ...
    file transfer: utimes
  4. 要记录对 FTP 服务器的访问,请审计 lo 类。

    如以下输出所示,登录和注销 ftpd 守护进程都会生成审计记录。

    % auditrecord -c lo | more
    ...
    in.ftpd
      program     /usr/sbin/in.ftpd    See ftp access
      event ID    6165                 AUE_ftpd
      class       lo                   (0x0000000000001000)
          subject
          [text]                       error message
          return
    
    in.ftpd
      program     /usr/sbin/in.ftpd    See ftp logout
      event ID    6171                 AUE_ftpd_logout
      class       lo                   (0x0000000000001000)
          subject
          return
    ...