跳过导航链接 | |
退出打印视图 | |
Oracle Solaris 11.1 管理:安全服务 Oracle Solaris 11.1 Information Library (简体中文) |
audit_binfile 和 audit_syslog 这两个审计插件可以创建本地审计日志。以下任务帮助您配置这些日志。
以下任务列表列出了为各种插件配置审计日志的过程。配置 audit_binfile 插件的日志是可选的。管理员必须配置其他插件的日志。
|
以下过程说明如何为审计文件创建 ZFS 池以及相应的文件系统和挂载点。缺省情况下,/var/audit 文件系统为 audit_binfile 插件保存审计文件。
开始之前
您必须是指定有 ZFS File System Management(ZFS 文件系统管理)和 ZFS Storage Management(ZFS 存储管理)权限配置文件的管理员。通过后一个配置文件可以创建存储池。有关更多信息,请参见如何使用指定给您的管理权限。
每个主机至少指定 200 MB 磁盘空间。但是,由于所需审计量决定磁盘空间需求,因此,所需的磁盘空间可能远大于此数字。
注 - 缺省类预选在 /var/audit 中创建文件,对于 lo 类中记录的每个事件实例(如登录、注销或角色承担),这些文件增长约 80 字节。
zpool create 命令创建一个存储池作为 ZFS 文件系统的容器。有关更多信息,请参见《Oracle Solaris 11.1 管理:ZFS 文件系统》中的第 1 章 "Oracle Solaris ZFS 文件系统(介绍)"。
# zpool create audit-pool mirror disk1 disk2
例如,从两个磁盘(c3t1d0 和 c3t2d0)创建 auditp 池并镜像这两个磁盘。
# zpool create auditp mirror c3t1d0 c3t2d0
使用一个命令创建文件系统和挂载点。创建时,文件系统已挂载。例如,下图显示了按主机名存储的审计迹存储。
注 - 如果计划加密文件系统,必须在创建文件系统时对其进行加密。有关示例,请参见示例 28-12。
加密需要进行管理。例如,挂载时需要口令短语。有关更多信息,请参见《Oracle Solaris 11.1 管理:ZFS 文件系统》中的"加密 ZFS 文件系统"。
# zfs create -o mountpoint=/mountpoint audit-pool/mountpoint
例如,为 auditf 文件系统创建 /audit 挂载点。
# zfs create -o mountpoint=/audit auditp/auditf
# zfs create -p auditp/auditf/system
例如,为 sys1 系统创建未加密的 ZFS 文件系统。
# zfs create -p auditp/auditf/sys1
创建其他文件系统的一个原因是阻止审计溢出。可以设置每个文件系统的 ZFS 配额,如步骤 8 中所示。达到每个配额时,audit_warn 电子邮件别名会通知您。要释放空间,可以将关闭的审计文件移动到远程服务器。
# zfs create -p auditp/auditf/sys1.1 # zfs create -p auditp/auditf/sys1.2
为池中的所有文件系统将以下 ZFS 属性设置为 off:
# zfs set devices=off auditp/auditf # zfs set exec=off auditp/auditf # zfs set setuid=off auditp/auditf
通常,压缩是在 ZFS 中的文件系统级别设置的。但是,由于此池中的所有文件系统都包含审计文件,因此会在顶级数据集为池设置压缩。
# zfs set compression=on auditp
另请参见《Oracle Solaris 11.1 管理:ZFS 文件系统》中的"ZFS 压缩、重复数据删除和加密属性之间的交互"。
可以设置父文件系统和/或后代文件系统上的配额。如果设置父审计文件系统上的配额,后代文件系统上的配额将强加其他限制。
在以下示例中,auditp 池中的两个磁盘都达到配额时,audit_warn 脚本将通知审计管理员。
# zfs set quota=510G auditp/auditf
在以下示例中,达到 auditp/auditf/system 文件系统的配额时,audit_warn 脚本将通知审计管理员。
# zfs set quota=170G auditp/auditf/sys1 # zfs set quota=170G auditp/auditf/sys1.1 # zfs set quota=165G auditp/auditf/sys1.2
缺省情况下,审计文件可以增长到池的大小。为了便于管理,限制审计文件的大小。请参见示例 28-14。
示例 28-12 为审计文件创建加密文件系统
为了符合站点安全要求,管理员将在打开加密的情况下创建审计文件系统。然后,管理员设置挂载点。
# zfs create -o encryption=on auditp/auditf Enter passphrase for auditp/auditf': /** Type 8-character minimum passphrase**/ Enter again: /** Confirm passphrase **/ # zfs set -o mountpoint=/audit auditp/auditf
文件系统在没有口令短语的情况下无法访问,这样管理员就将其保存到了安全的位置。
管理员在 auditf 文件系统下创建其他文件系统时,也将加密这些后代文件系统。
示例 28-13 在 /var/audit 目录上设置配额
在本示例中,管理员在缺省审计文件系统上设置配额。达到此配额时,audit_warn 脚本将警告审计管理员。
# zfs set quota=252G rpool/var/audit
在本过程中,使用 audit_binfile 插件的属性将其他磁盘空间指定给审计迹。
开始之前
您必须是指定有 Audit Configuration(审计配置)权限配置文件的管理员。有关更多信息,请参见如何使用指定给您的管理权限。
阅读 audit_binfile(5) 手册页的 OBJECT ATTRIBUTES 部分。
# man audit_binfile ... OBJECT ATTRIBUTES The p_dir attribute specifies where the audit files will be created. The directories are listed in the order in which they are to be used. The p_minfree attribute defines the percentage of free space that the audit system requires before the audit daemon invokes the audit_warn script. The p_fsize attribute defines the maximum size that an audit file can become before it is automatically closed and a new audit file is opened. ... The format of the p_fsize value can be specified as an exact value in bytes or in a human-readable form with a suffix of B, K, M, G, T, P, E, Z (for bytes, kilobytes, megabytes, gigabytes, terabytes, petabytes, exabytes, or zettabytes, respectively). Suffixes of KB, MB, GB, TB, PB, EB, and ZB are also accepted.
缺省文件系统为 /var/audit。
# auditconfig -setplugin audit_binfile p_dir=/audit/sys1.1,/var/audit
上述命令将 /audit/sys1.1 文件系统设置为审计文件的主目录,将缺省 /var/audit 文件系统设置为辅助目录。在此方案中,/var/audit 是最后考虑采用的目录。要成功完成此配置,/audit/sys1.1 文件系统必须存在。
在如何为审计文件创建 ZFS 文件系统中已创建了类似的文件系统。
auditconfig -setplugin 命令设置已配置的值。该值为审计服务的属性,因此刷新或重新启动该服务时会恢复该值。刷新或重新启动审计服务时,已配置的值变为活动状态。有关配置的活动值的信息,请参见 auditconfig(1M) 手册页。
# audit -s
示例 28-14 限制 audit_binfile 插件的文件大小
在以下示例中,二进制审计文件的大小设置为特定大小。大小是以兆字节为单位指定的。
# auditconfig -setplugin audit_binfile p_fsize=4M # auditconfig -getplugin audit_binfile Plugin: audit_binfile Attributes: p_dir=/var/audit;p_fsize=4M;p_minfree=1;
缺省情况下,审计文件大小可以无限制地增长。为了创建较小的审计文件,管理员指定文件大小上限为 4 MB。达到大小限制时,审计服务将创建新文件。管理员刷新审计服务后,文件大小限制开始生效。
# audit -s
示例 28-15 指定对审计插件的多个更改
在以下示例中,具有高吞吐量和大型 ZFS 池的系统上的管理员将更改 audit_binfile 插件的队列大小、二进制文件大小和软限制警告。管理员允许审计文件增长到 4 GB,在 ZFS 池剩余 2% 时收到警告,并将允许的队列大小翻倍。缺省队列大小是内核审计队列的高水位标志 100,如 active audit queue hiwater mark (records) = 100 中所示。
# auditconfig -getplugin audit_binfile Plugin: audit_binfile Attributes: p_dir=/var/audit;p_fsize=2G;p_minfree=1; # auditconfig -setplugin audit_binfile "p_minfree=2;p_fsize=4G" 200 # auditconfig -getplugin audit_binfile Plugin: audit_binfile Attributes: p_dir=/var/audit;p_fsize=4G;p_minfree=2; Queue size: 200
管理员刷新审计服务后,更改的规范开始生效。
# audit -s
示例 28-16 删除审计插件的队列大小
在以下示例中,将删除 audit_binfile 插件的队列大小。
# auditconfig -getplugin audit_binfile Plugin: audit_binfile Attributes: p_dir=/var/audit;p_fsize=4G;p_minfree=2; Queue size: 200 # auditconfig -setplugin audit_binfile "" 0 # auditconfig -getplugin audit_binfile Plugin: audit_binfile Attributes: p_dir=/var/audit;p_fsize=4G;p_minfree=2;
空引号 ("") 将保留当前属性值。最后的 0 将插件的队列大小设置为缺省值。
管理员刷新审计服务后,插件的 qsize 规范中的更改开始生效。
# audit -s
示例 28-17 设置警告的软限制
在本示例中,设置了所有审计文件系统的最低空闲空间级别,以便在文件系统的可用空间只有 2% 时发出警告。
# auditconfig -setplugin audit_binfile p_minfree=2
缺省百分比为 1 (1)。对于大型 ZFS 池,请适当地选择较低的百分比。例如,16 TB 池的 10% 大约是 16 GB,如果设为此值将在仍剩余大量磁盘空间时向审计管理员发出警告。如果值为 2,将在剩余大约 2 GB 磁盘空间时发送 audit_warn 消息。
audit_warn 电子邮件别名用于接收警告。要设置别名,请参见如何配置 audit_warn 电子邮件别名。
对于大型池,管理员还会将文件大小限制为 3 GB。
# auditconfig -setplugin audit_binfile p_fsize=3G
管理员刷新审计服务后,插件的 p_minfree 和 p_fsize 规范开始生效。
# audit -s
在本过程中,使用 audit_remote 插件的属性将审计迹发送到远程审计系统信息库。要在 Oracle Solaris 系统上配置一个远程系统信息库,请参见如何配置审计文件的远程系统信息库。
开始之前
远程系统信息库上必须具有审计服务的接收者。您必须是指定有 Audit Configuration(审计配置)权限配置文件的管理员。有关更多信息,请参见如何使用指定给您的管理权限。
阅读 audit_remote(5) 手册页的 OBJECT ATTRIBUTES 部分。
# man audit_remote ... OBJECT ATTRIBUTES The p_hosts attribute specifies the remote servers. You can also specify the port number and the GSS-API mechanism. The p_retries attribute specifies the number of retries for connecting and sending data. The default is 3. The p_timeout attribute specifies the number of seconds in which a connection times out.
缺省端口是 solaris_audit IANA 指定的端口 16162/tcp。缺省机制是 kerberos_v5。缺省超时为 5 秒。您还可以指定插件的队列大小。
在本示例中,接收系统使用一个不同的端口。
# auditconfig -setplugin audit_remote p_hosts=ars.example.com:16088:kerberos_v5
例如,以下命令指定所有可选属性的值:
# auditconfig -setplugin audit_remote "p_retries=;p_timeout=3" 300
例如,以下命令指定并验证插件的值:
# auditconfig -getplugin audit_remote Plugin: audit_remote (inactive) Attributes: p_hosts=ars.example.com:16088:kerberos_v5;p_retries=5;p_timeout=3; Queue size: 300 # auditconfig -setplugin audit_remote active
审计服务在刷新时将读取审计插件更改。
# audit -s
示例 28-18 调优审计队列缓冲区大小
在本示例中,audit_remote 插件后面的审计队列太满。该被审计系统被配置为对许多类进行审计,并在通过高通信流量的慢速网络传输数据。管理员增大了插件的缓冲区大小,使审计队列可以增长,从而使得在审计记录从队列中移除之前不会超出缓冲区大小限制。
audsys1 # auditconfig -setplugin audit_remote "" 1000 audsys1 # audit -s
在此过程中,您将配置一个远程系统,即审计远程服务器 (Audit Remote Server, ARS),以接收并存储来自一个或多个被审计系统的审计记录。然后,您将激活远程服务器上的审计守护进程。
配置分两部分。首先,您将配置底层安全机制以便安全地传输审计数据,也就是说,您将配置 KDC。其次,您将在被审计系统和 ARS 上配置审计服务。此过程阐明了一个包含一个被审计客户机和一个 ARS 的方案,其中,ARS 和 KDC 位于同一服务器上。对于更复杂的方案,可以按类似方式进行配置。
开始之前
您必须承担 root 角色。您已安装了 Kerberos 软件包,如以流方式将审计记录传输到远程存储前如何执行准备工作中所述。与配置了被审计系统的管理员协作,如如何向远程系统信息库发送审计文件中所述。
您需要在一个系统上配置一个 KDC,让被审计系统和 ARS 都能使用,需要有每个系统的主机主体,另外还要有一个 audit 服务主体。
如果您的站点已配置了一个 KDC,请使用它并继续执行步骤 c。下面的一系列命令解释了一个 KDC 配置策略:
arstore # kdcmgr -a audr/admin -r EXAMPLE.COM create master
此命令使用 audr/admin 管理主体在 EXAMPLE.COM 领域中创建一个主 KDC 并将其启用,然后启动 Kerberos 服务。
有关更多信息,请参见 kdcmgr(1M) 手册页。
# kdcmgr status KDC Status Information -------------------------------------------- svc:/network/security/krb5kdc:default (Kerberos key distribution center) State: online since Wed Feb 29 01:59:27 2012 See: man -M /usr/share/man -s 1M krb5kdc See: /var/svc/log/network-security-krb5kdc:default.log Impact: None. KDC Master Status Information -------------------------------------------- svc:/network/security/kadmin:default (Kerberos administration daemon) State: online since Wed Feb 29 01:59:28 2012 See: man -M /usr/share/man -s 1M kadmind See: /var/svc/log/network-security-kadmin:default.log Impact: None. Transaction Log Information -------------------------------------------- Kerberos update log (/var/krb5/principal.ulog) Update log dump : Log version # : 1 Log state : Stable Entry block size : 2048 Number of entries : 13 First serial # : 1 Last serial # : 13 First time stamp : Wed Feb 29 01:59:27 2012 Last time stamp : Mon Mar 5 19:29:28 2012 Kerberos Related File Information -------------------------------------------- (Displays any missing files)
您可以通过在 KDC 系统上键入 kadmin.local 命令来添加主体。另外,也可以通过使用 kadmin 命令并提供口令来远程添加主体。在本示例中,arstore 系统在运行 KDC。
# kadmin -p audr/admin kadmin: addprinc -randkey audit/arstore.example.com@EXAMPLE.COM kadmin: ktadd audit/arstore.example.com@EXAMPLE.COM
接收者和发送者都必须有密钥。
enigma # kclient .. Enter the Kerberos realm: EXAMPLE.COM .. KDC hostname for the above realm: arstore.example.com .. Will this client need service keys ? [y/n]: y
# auditconfig -setremote group create Bank_A
Bank_A 是一个连接组。因为未定义 hosts 属性,所以此组将接受所有连接,这意味着它是一个通配符组。该 Kerberos 领域中已正确配置了 audit_remote 插件的任何被审计系统都可以访问此 ARS。
# auditconfig -setremote group Bank_A "hosts=enigma.example.com"
连接组 Bank_A 现在只接受来自 enigma 系统的连接。来自任何其他主机的连接将被拒绝。
# auditconfig -setremote group Bank_A "binfile_size=4GB" # auditconfig -getremote Audit Remote Server Attributes: listen_address=;login_grace_time=30;max_startups=10;listen_port=0; Connection group: Bank_A (inactive) Attributes: binfile_dir=/var/audit;binfile_fsize=4GB;binfile_minfree=1; hosts=enigma.example.com;
要指定 ARS,请使用 p_hosts 属性。
enigma # auditconfig -setplugin audit_remote active p_hosts=arstore.example.com enigma # auditconfig -getplugin audit_remote Plugin: audit_remote Attributes: p_retries=3;p_timeout=5;p_hosts=arstore.example.com;
审计服务在刷新时将读取审计插件更改。
# audit -s
现在,被审计系统 enigma 与 ARS 之间的连接由 KDC 进行管理。
示例 28-19 将审计记录以流方式传输到同一 ARS 上的不同文件位置
此示例扩展了上述过程中的示例。管理员通过创建两个连接组,在 ARS 上按主机对审计记录进行了划分。
来自 audsys1 的审计文件将以流方式传输到此 ARS 上的 Bank_A 连接组。
arstore # auditconfig -setremote group create Bank_A arstore # auditconfig -setremote group active Bank_A "hosts=audsys1" "hosts=audsys1;binfile_dir=/var/audit/audsys1;binfile_fsize=4M;"
来自 audsys2 的审计文件将以流方式传输到 Bank_B 连接组。
arstore # auditconfig -setremote group create Bank_B arstore # auditconfig -setremote group active Bank_B \ "hosts=audsys2;binfile_dir=/var/audit/audsys2;binfile_fsize=4M;"
为了更加方便地进行维护,管理员以相同方式设置了其他属性值。
arstore # auditconfig -getremote Audit Remote Server Attributes: listen_address=;login_grace_time=30;max_startups=10;listen_port=0; Connection group: Bank_A Attributes: binfile_dir=/var/audit/audsys1;binfile_fsize=4M;binfile_minfree=1; hosts=audsys1 Connection group: Bank_B Attributes: binfile_dir=/var/audit/audsys2;binfile_fsize=4M;binfile_minfree=1; hosts=audsys2
示例 28-20 将 ARS 置于与 KDC 不同的系统上
在本示例中,管理员将 ARS 置于与 KDC 不同的一个系统上。首先,管理员创建并配置主 KDC。
kserv # kdcmgr -a audr/admin -r EXAMPLE.COM create master kserv # kadmin.local -p audr/admin kadmin: addprinc -randkey audit/arstore.example.com@EXAMPLE.COM kadmin: ktadd -t /tmp/krb5.keytab.audit audit/arstore.example.com@EXAMPLE.COM
在将 /tmp/krb5.keytab.audit 文件安全地传输到 ARS arstore 后,管理员将该文件移动到了正确的位置。
arstore # chown root:root krb5.keytab.audit arstore # chmod 600 krb5.keytab.audit arstore # mv krb5.keytab.audit /etc/krb5/krb5.keytab
除了重写文件,管理员还可以选择在 ARS 上使用 ktutil 命令将 KDC krb5.keytab.audit 文件与 arstore 的 /etc/krb5/krb5.keytab 文件中的现有密钥进行合并。
最后,管理员在被审计系统上生成密钥。
enigma # kclient .. Enter the Kerberos realm: EXAMPLE.COM .. KDC hostname for the above realm: kserv.example.com .. Will this client need service keys ? [y/n]: y
可以指示审计服务,将审计队列中的部分或全部审计记录复制到 syslog 实用程序。如果记录二进制审计数据和文本摘要,二进制数据将提供完整的审计记录,而摘要将筛选数据以供实时查看。
开始之前
要配置 audit_syslog 插件,您必须是指定有 Audit Configuration(审计配置)权限配置文件的管理员。要配置 syslog 实用程序并创建 auditlog 文件,您必须承担 root 角色。
注 - p_flags 审计类必须预选为系统缺省值,或在用户的审计标志或权限配置文件的审计标志中预选。不会为未预选的类收集记录。
# auditconfig -setplugin audit_syslog active p_flags=lo,+as,-ss
# svcs system-log STATE STIME FMRI disabled 13:11:55 svc:/system/system-log:rsyslog online 13:13:27 svc:/system/system-log:default
注 - 如果 rsyslog 服务实例联机,请修改 rsyslog.conf 文件。
审计服务在刷新时将读取审计插件的更改。
# audit -s
审计服务可生成大量输出。要管理日志,请参见 logadm(1M) 手册页。
示例 28-21 指定 syslog 输出的审计类
在以下示例中,syslog 实用程序收集预选的审计类的子集。pf 类是在示例 28-10 中创建的。
# auditconfig -setnaflags lo,na # auditconfig -setflags lo,ss # usermod -K audit_flags=pf:no jdoe # auditconfig -setplugin audit_syslog active p_flags=lo,+na,-ss,+pf
auditconfig 命令的参数指示系统收集所有登录/注销、无归属事件以及系统状态审计记录的更改。audit_syslog 插件项指示 syslog 实用程序收集所有登录、成功的无归属事件以及失败的系统状态更改。
对于 jdoe 用户,该二进制实用程序会收集对 pfexec 命令的成功和失败调用。syslog 实用程序收集对 pfexec 命令的成功调用。
示例 28-22 将 syslog 审计记录放置在远程系统上
可以更改 syslog.conf 文件中的 audit.notice 项,使其指向远程系统。在本示例中,本地系统的名称为 sys1.1。远程系统是 remote1。
sys1.1 # cat /etc/syslog.conf … audit.notice @remote1
在 remote1 系统上,syslog.conf 文件中的 audit.notice 项指向日志文件。
remote1 # cat /etc/syslog.conf … audit.notice /var/adm/auditlog