跳过导航链接 | |
退出打印视图 | |
系统管理指南:安全性服务 Oracle Solaris 10 8/11 Information Library (简体中文) |
为站点设置配置文件之后,需要为审计文件设置磁盘空间。还需要设置审计服务的其他属性,然后启用该服务。本节还包含更改配置设置时刷新审计服务的过程。
安装非全局区域后,可以采用与审计全局区域完全相同的方式来审计此非全局区域。或者,可以在非全局区域中修改审计配置文件,以单独审计非全局区域。要定制审计配置文件,请参见配置审计文件(任务列表)。
以下过程说明如何为审计文件创建分区以及相应的文件系统和目录。根据需要可跳过一些步骤,具体取决于是否已经具有空分区,或者是否已经挂载了空文件系统。
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
每个主机至少分配 200 MB 磁盘空间。但是,由于所需审计量决定磁盘空间需求,因此,所需的磁盘空间可能远大于此数字。请记住要包括一个本地分区用于万不得已时使用的目录。
在安装服务器期间创建最轻松。另外,还可以在尚未挂载到服务器上的磁盘中创建分区。有关如何创建分区的完整说明,请参见《系统管理指南:设备和文件系统》中的第 12 章 "管理磁盘(任务)"。
# newfs /dev/rdsk/cwtxdysz
其中 /dev/rdsk/cwt xdys z 是分区的原始设备名称。
如果要审计本地主机,还要为本地主机创建一个迫不得已时使用的审计目录。
# mkdir /var/audit/server-name.n
其中 server-name.n 是服务器名称后跟一个标识各个分区的数字。该数字是可选的,但是存在多个审计目录时,此数字非常有用。
将类似以下内容的行添加到 /etc/vfstab 文件:
/dev/dsk/cwtxdysz /dev/rdsk/cwtxdysz /var/audit/server-name.n ufs 2 yes
如果使用缺省配置,则会在目录的占用率达到 80% 时生成警告。出现该警告后,便无需再在分区上保留空闲空间。
# tunefs -m 0 /var/audit/server-name.n
# mount /var/audit/server-name.n
# mkdir /var/audit/server-name.n/files
# chmod -R 750 /var/audit/server-name.n/files
通常,会安装磁盘组来存储审计记录。如果一个审计目录要由多个系统使用,则必须通过 NFS 服务来共享此目录。在 /etc/dfs/dfstab 文件中,针对每个目录添加类似以下内容的项:
share -F nfs /var/audit/server-name.n/files
如果该命令是您启动的第一个 share 命令或第一组 share 命令,NFS 守护进程可能不会运行。
% svcs \*nfs\* disabled Nov_02 svc:/network/nfs/rquota:default offline Nov_02 svc:/network/nfs/server:default # svcadm enable network/nfs/server
% svcs \*nfs\* online Nov_02 svc:/network/nfs/client:default online Nov_02 svc:/network/nfs/server:default # svcadm restart network/nfs/server
有关 NFS 服务的更多信息,请参阅《系统管理指南:网络服务》中的"设置 NFS 服务"。有关管理持久性服务的信息,请参见《系统管理指南:基本管理》中的第 18 章 "管理服务(概述)" 和 smf(5) 手册页。
示例 30-13 创建迫不得已时使用的审计目录
运行审计服务的所有系统都应具有一个本地文件系统,当没有其他任何文件系统可用时可以使用该本地文件系统。在本示例中,将在系统上添加一个名为 egret 的文件系统。由于此文件系统只在本地使用,因此无需执行任何关于文件服务器的步骤。
# newfs /dev/rdsk/c0t2d0 # mkdir /var/audit/egret # grep egret /etc/vfstab /dev/dsk/c0t2d0s1 /dev/rdsk/c0t2d0s1 /var/audit/egret ufs 2 yes - # tunefs -m 0 /var/audit/egret # mount /var/audit/egret # mkdir /var/audit/egret/files # chmod -R 750 /var/audit/egret/files
示例 30-14 创建新的审计分区
在本示例中,将在网络中其他系统使用的两个新磁盘上创建一个新的文件系统。
# newfs /dev/rdsk/c0t2d0 # newfs /dev/rdsk/c0t2d1 # mkdir /var/audit/egret.1 # mkdir /var/audit/egret.2 # grep egret /etc/vfstab /dev/dsk/c0t2d0s1 /dev/rdsk/c0t2d0s1 /var/audit/egret.1 ufs 2 yes - /dev/dsk/c0t2d1s1 /dev/rdsk/c0t2d1s1 /var/audit/egret.2 ufs 2 yes - # tunefs -m 0 /var/audit/egret.1 # tunefs -m 0 /var/audit/egret.2 # mount /var/audit/egret.1 # mount /var/audit/egret.2 # mkdir /var/audit/egret.1/files # mkdir /var/audit/egret.2/files # chmod -R 750 /var/audit/egret.1/files /var/audit/egret.2/files # grep egret /etc/dfs/dfstab share -F nfs /var/audit/egret.1/files share -F nfs /var/audit/egret.2/files # svcadm enable network/nfs/server
示例 30-15 创建 ZFS 审计分区
在本示例中,管理员在创建 ZFS 审计分区之后运行 script 命令。以下是命令输出:
# zpool create auditf mirror c0t4d0 c0t5d0 # zfs create -o mountpoint=/audit auditf/audit # zfs create auditf/audit/noddy # zfs create auditf/audit/noddy/files # zfs create auditf/audit/blinken # zfs create auditf/audit/blinken/files # zfs set devices=off auditf/audit # zfs set exec=off auditf/audit # zfs set setuid=off auditf/audit # zfs set sharenfs=on auditf/audit # share - /audit/blinken/files rw "" - /audit/noddy rw "" - /audit/blinken rw "" - /audit/noddy/files rw "" - /audit rw "" # ^D script done on Fri Apr 10 10:10:20 2009
然后,管理员查看从远程系统 remotesys 的挂载。
# dfshares remotesys RESOURCE SERVER ACCESS TRANSPORT remotesys:/audit/blinken/files remotesys - - remotesys:/audit/noddy remotesys - - remotesys:/audit/blinken remotesys - - remotesys:/audit/noddy/files remotesys - - remotesys:/audit remotesys - -
最后,管理员在 /var/audit 上挂载 /audit 文件系统。
# mount remotesys:/audit /var/audit # ls /var/audit blinken noddy
audit_warn 脚本会针对名为 audit_warn 的电子邮件别名生成邮件。要将此邮件发送到有效的电子邮件地址,可以执行步骤 2 中介绍的方法之一:
Primary Administrator(主管理员)角色拥有 Primary Administrator(主管理员)配置文件。要创建该角色并将其指定给用户,请参见《系统管理指南:基本管理》中的第 2 章 "使用 Solaris Management Console(任务)"。
选择以下方法之一:
方法 1-在 audit_warn 脚本中使用其他电子邮件帐户替换 audit_warn 电子邮件别名。
在脚本的以下行中更改该电子邮件别名:
ADDRESS=audit_warn # standard alias for audit alerts
方法 2 - 将 audit_warn 电子邮件重定向到其他电子邮件帐户。
在这种情况下,需要将 audit_warn 电子邮件别名添加到适当的电子邮件别名文件。可以将别名添加到本地 /etc/mail/aliases 文件或 mail_aliases 数据库的名称空间中。如果 root 电子邮件帐户被设为 audit_warn 电子邮件别名的成员,则新项可能类似于:
audit_warn: root
审计策略确定本地主机审计记录的特征。启用审计后,/etc/security/audit_startup 文件的内容将确定审计策略。
可以使用 auditconfig 命令来检查和更改当前的审计策略选项。另外,还可以通过在 audit_startup 脚本中修改 auditconfig 命令的策略选项来进行永久的审计策略更改。
要创建拥有 Audit Control(审计控制)配置文件的角色并将该角色指定给用户,请参见配置 RBAC(任务列表)。
在启用审计之前,audit_startup 文件的内容将确定审计策略:
#! /bin/sh ... /usr/bin/echo "Starting BSM services." /usr/sbin/auditconfig -setpolicy +cnt Counts rather than drops records /usr/sbin/auditconfig -conf Configures event-class mappings /usr/sbin/auditconfig -aconf Configures nonattributable events
$ auditconfig -lspolicy
注 - 只能在全局区域中设置 perzone 和 ahlt 策略选项。
# auditconfig -setpolicy prefixpolicy
prefix 值为 + 会启用策略选项。prefix 值为 - 会禁用策略选项。
选择要启用或禁用的策略。
下次引导之后,或者使用 auditconfig -setpolicy 命令修改策略后,该策略才会生效。
有关各个策略选项的说明,请参见确定审计策略。
示例 30-16 设置 cnt 和 ahlt 审计策略选项
在本示例中,禁用了 cnt 策略,启用了 ahlt 策略。在这些设置下,当审计分区已满而发生异步事件时,会中止系统的使用。发生同步事件时,会挂起创建线程的进程。这些设置适用于安全性比可用性更重要的情况。
以下 audit_startup 项会在重新引导后禁用 cnt 策略选项,同时启用 ahlt 策略选项:
# cat /etc/security/audit_startup #!/bin/sh /usr/bin/echo "Starting BSM services." /usr/sbin/deallocate -Is /usr/sbin/auditconfig -conf /usr/sbin/auditconfig -aconf /usr/sbin/auditconfig -setpolicy -cnt /usr/sbin/auditconfig -setpolicy +ahlt
示例 30-17 临时设置 seq 审计策略
在本示例中,auditd 守护进程正在运行,并已设置 ahlt 审计策略。seq 审计策略被添加到当前策略。seq 策略会在每条审计记录中添加一个 sequence 标记。审计记录损坏或丢失时,此功能可用于调试审计服务。
+ 前缀将 seq 选项添加到审计策略,而不是使用 seq 替换当前审计策略。直到下次调用此命令或下次引导时,auditconfig 命令才会使此策略生效。
$ auditconfig -setpolicy +seq $ auditconfig -getpolicy audit policies = ahlt,seq
示例 30-18 设置 perzone 审计策略
在本示例中,将在全局区域的 audit_startup 脚本中设置 perzone 审计策略。区域引导时,非全局区域将根据其区域中的审计配置设置收集审计记录。
$ cat /etc/security/audit_startup #!/bin/sh /usr/bin/echo "Starting BSM services." /usr/sbin/deallocate -Is /usr/sbin/auditconfig -conf /usr/sbin/auditconfig -aconf /usr/sbin/auditconfig -setpolicy +perzone /usr/sbin/auditconfig -setpolicy +cnt
示例 30-19 更改审计策略
在本示例中,审计守护进程正在运行,并已设置审计策略。auditconfig 命令可在会话持续期间更改 ahlt 和 cnt 策略。在此设置下,当审计文件系统已满时,会删除审计记录,但会对审计记录进行计数。有关设置 ahlt 策略的限制,请参见步骤 3。
$ auditconfig -setpolicy +cnt $ auditconfig -setpolicy -ahlt $ auditconfig -getpolicy audit policies = cnt,seq
将更改添加到 audit_startup 文件中后,策略将永久有效:
$ cat /etc/security/audit_startup #!/bin/sh /usr/bin/echo "Starting BSM services." /usr/sbin/deallocate -Is /usr/sbin/auditconfig -conf /usr/sbin/auditconfig -aconf /usr/sbin/auditconfig -setpolicy +cnt
不要求必须在该文件中指定 -ahlt 选项,因为缺省情况下会禁用 ahlt 策略选项。当可用性比审计记录提供的安全性更重要时,适合使用此设置。
此过程启用所有区域的审计服务。要在非全局区域中启用审计守护进程,请参见示例 30-20。
安全地配置审计后,系统将处于单用户模式下,直到启用了审计。也可以在多用户模式下启用审计。
开始之前
应在完成以下任务后,以超级用户身份执行此过程:
定制审计文件-配置审计文件(任务列表)
设置审计分区-如何为审计文件创建分区
设置审计警告消息-如何配置 audit_warn 电子邮件别名
设置审计策略-如何配置审计策略
注 - 要使审计正常进行,主机名转换必须能够正确进行。命名服务中的 hosts 数据库必须配置正确,且工作正常。
有关主机数据库的配置,请参见 nsswitch.conf(4) 和 netconfig(4) 手册页。有关其他信息,请参见《系统管理指南:名称和目录服务(DNS、NIS 和 LDAP)》或《System Administration Guide: Naming and Directory Services (NIS+)》。
转到 /etc/security 目录,然后执行该目录下的 bsmconv 脚本。
# cd /etc/security # ./bsmconv This script is used to enable the Basic Security Module (BSM). Shall we continue with the conversion now? [y/n] y bsmconv: INFO: checking startup file. bsmconv: INFO: turning on audit module. bsmconv: INFO: initializing device allocation. The Basic Security Module is ready. If there were any errors, please fix them now. Configure BSM by editing files located in /etc/security. Reboot this system now to come up with BSM enabled.
有关该脚本的结果,请参见 bsmconv(1M) 手册页。
# reboot
启动文件 /etc/security/audit_startup 可使 auditd 守护进程在系统进入多用户模式时自动运行。
该脚本的另一个结果是启用设备分配。要配置设备分配,请参见管理设备分配(任务列表)。
示例 30-20 在非全局区域中启用审计
以下示例中,在全局区域中启用审计并引导非全局区域后,全局区域管理员启用了 perzone 策略。非全局区域的区域管理员配置了该区域的审计文件,随后在此区域中启动审计守护进程。
zone1# svcadm enable svc:/system/auditd
如果在某一点不再需要审计服务,可使用此过程将系统返回到启用审计之前的系统状态。如果正在审计非全局区域,则其审计服务也将被禁用。
% su Password: <Type root password> # init S
有关更多信息,请参见 init(1M) 手册页。
转至 /etc/security 目录,执行 bsmunconv 脚本。
# cd /etc/security # ./bsmunconv
该脚本的另一个结果是禁用设备分配。
有关 bsmunconv 脚本完整结果的信息,请参见 bsmconv(1M) 手册页。
# init 6
示例 30-21 禁用审计并保持设备分配
在本示例中,审计服务将停止收集记录,但是设备分配继续工作。将删除 audit_control 文件中 flags、naflags 和 plugin 项的所有值,同时也将删除 audit_user 文件中所有用户项。
## audit_control file flags: naflags: ## audit_user file
auditd 守护进程运行,但是不保留任何审计记录。
示例 30-22 按区域禁用审计
在本示例中,在禁用了审计服务的 zone1 上,审计服务停止运行。设备分配继续工作。在全局区域中运行该命令时,如果没有设置 perzone 审计策略,将禁用所有区域(而不仅仅是全局区域)的审计。
zone1 # audit -t
此过程用于在运行 auditd 守护进程后更改了审计配置文件时重新启动该守护进程。
要创建拥有 Audit Control(审计控制)权限配置文件的角色并将该角色指定给用户,请参见配置 RBAC(任务列表)。
$ /usr/sbin/auditconfig -aconf
您也可以重新引导。
审计守护进程在内部存储 audit_control 文件中的信息。要使用新信息,请重新引导系统或指示审计守护进程读取修改后的文件。
$ /usr/sbin/audit -s
注 - 系统基于与每个进程相关联的审计预选掩码生成审计记录。执行 audit -s 不会更改现有进程中的掩码。要更改现有进程的预选掩码,必须重新启动此进程。您也可以重新引导。
audit -s 命令使审计守护进程从 audit_control 文件中重新读取 directory 和 minfree 值。此命令会更改后续登录所产生进程的预选掩码的生成。
将修改的事件到类的映射读入系统中,并确保正确审计了使用此计算机的每个用户。
$ auditconfig -conf $ auditconfig -setumask auid classes
用户 ID。
预选的审计类。
有关示例,请参见如何修改用户的预选掩码。
示例 30-23 重新启动审计守护进程
在本示例中,系统降级为单用户模式,随后回升到多用户模式。当系统进入多用户模式时,会将修改的审计配置文件读入系统。
# init S # init 6