通过管理审计跟踪,可以监视网络中的用户操作。审计可以生成大量数据。以下任务显示如何使用所有这些数据。
要编写可查找所需审计数据的脚本,需要了解审计事件中的标记顺序。bsmrecord 命令显示审计事件的审计事件编号、审计类、选择掩码和记录格式。
-a 选项列出所有审计事件记录格式。-h 选项以可在浏览器中显示的 HTML 格式显示此列表。
% bsmrecord -a -h > audit.events.html |
在浏览器中显示 *html 文件时,请使用浏览器的“查找”工具来查找特定记录。
有关更多信息,请参见 bsmrecord(1M) 手册页。
在本示例中,将显示由 login 程序生成的所有审计记录的格式。登录程序包括 rlogin、telnet、newgrp、Solaris Management Console 的角色登录,以及 Solaris 安全 Shell。
% bsmrecord -p login terminal login program /usr/sbin/login See login(1) /usr/dt/bin/dtlogin See dtlogin event ID 6152 AUE_login class lo (0x00001000) header subject text error message or "successful login" return login: logout program various See login(1) event ID 6153 AUE_logout … newgrp program newgrp See newgrp login event ID 6212 AUE_newgrp_login … rlogin program /usr/sbin/login See login(1) - rlogin event ID 6155 AUE_rlogin … SMC: role login program SMC server See role login event ID 6173 AUE_role_login … /usr/lib/ssh/sshd program /usr/lib/ssh/sshd See login - ssh event ID 6172 AUE_ssh … telnet login program /usr/sbin/login See login(1) - telnet event ID 6154 AUE_telnet … |
在本示例中,将显示 fd 类的所有审计记录的格式。
% bsmrecord -c fd rmdir system call rmdir See rmdir(2) event ID 48 AUE_RMDIR class fd (0x00000020) header path [attribute] subject [use_of_privilege] return unlink system call unlink See unlink(2) event ID 6 AUE_UNLINK … unlinkat system call unlinkat See openat(2) event ID 286 AUE_UNLINKAT … |
通过合并所有审计目录中的所有审计文件,可以分析整个审计跟踪的内容。auditreduce 命令将其输入文件中的所有记录合并到单个输出文件中。然后可以删除输入文件。将输出文件置于名为 /etc/security/auditserver-name/files 的目录中时,auditreduce 命令可以查找此输出文件,而无需指定全路径。
此过程仅适用于二进制审计记录。
承担拥有审计查看配置文件的角色或成为超级用户。
系统管理员角色拥有审计查看配置文件。另外,还可以创建拥有审计查看配置文件的单独用户。要创建角色并将其指定给用户,请参见配置 RBAC(任务列表)。
创建存储合并审计文件的目录。
# mkdir audit-trail-directory |
限制对此目录的访问。
# chmod 700 audit-trail-directory # ls -la audit-trail-directory drwx------ 3 root sys 512 May 12 11:47 . drwxr-xr-x 4 root sys 1024 May 12 12:47 .. |
合并审计跟踪中的审计记录。
转至 audit-trail-directory 目录并将审计记录合并到带有指定后缀的文件中。将合并在本地系统上 audit_control 文件中 dir 行列出的所有目录。
# cd audit-trail-directory # auditreduce -Uppercase-option -O suffix |
auditreduce 命令的大写选项处理审计跟踪中的文件。大写选项包括以下内容:
选择审计跟踪中的所有文件。
只选择完整文件。此选项会忽略带有后缀 not_terminated 的文件。
选择带有特定后缀的文件。后缀可以是机器名,也可以是为摘要文件指定的后缀。
在当前目录中创建一个带有开始时间和结束时间的 14 字符时间标记以及后缀 suffix 的审计文件。
在以下示例中,系统管理员角色 sysadmin 将所有文件从审计跟踪复制到合并文件中。
$ whoami sysadmin $ mkdir /var/audit/audit_summary.dir $ chmod 700 /var/audit/audit_summary.dir $ cd /var/audit/audit_summary.dir $ auditreduce -A -O All $ ls *All 20030827183214.20030827215318.All |
$ cd /var/audit/audit_summary.dir $ auditreduce -C -O Complete $ ls *Complete 20030827183214.20030827214217.Complete |
在以下示例中,只将完整文件从 example1 计算机复制到合并文件中。
$ cd /var/audit/audit_summary.dir $ auditreduce -M example1 -O example1summ $ ls *summ 20030827183214.20030827214217.example1summ |
auditreduce 命令的 -D 选项会在您将审计文件复制到另一位置时将其删除。在以下示例中,会将一个系统中的完整审计文件复制到摘要目录以供以后检查。
$ cd /var/audit/audit_summary.dir $ auditreduce -C -O daily_example1 -D example1 $ ls *example1 20030827183214.20030827214217.daily_example1 |
当此命令成功完成时,将删除 example1 系统中的审计文件,这些审计文件是 *daily_example1 文件的输入。
可以过滤审计记录以便检查。有关过滤选项的完整列表,请参见 auditreduce(1M) 手册页。
承担拥有审计查看配置文件的角色或成为超级用户。
系统管理员角色拥有审计查看配置文件。另外,还可以创建拥有审计查看配置文件的单独用户。要创建角色并将其指定给用户,请参见配置 RBAC(任务列表)。
从审计跟踪或指定的审计文件中选择所需的记录类型。
auditreduce -lowercase-option argument [optional-file] |
小写选项所需的特定参数。例如,-c 选项需要审计类的 argument,例如 ua。
选择特定日期的所有事件。argument 的日期格式为 yyymmdd。其他日期选项 -b 和 -a 选择特定日期之前和之后的事件。
选择属于特定用户的所有事件。argument 是用户名。另一个用户选项 -e 选择属于有效用户 ID 的所有事件。
选择预选审计类中的所有事件。argument 是审计类名。
选择特定审计事件的所有实例。argument 是审计事件。
审计文件的名称。
auditreduce 命令可以在合并输入文件时删除不感兴趣的记录。例如,可以使用 auditreduce 命令仅保留审计文件中一个月以前的登录和退出记录。如果需要检索完整的审计跟踪,可以从备份介质中恢复此跟踪。
# cd /var/audit/audit_summary.dir # auditreduce -O lo.summary -b 20030827 -c lo; compress *lo.summary |
在本示例中,将审计跟踪中的所有无归属审计事件记录收集到一个文件中。
$ whoami sysadmin $ cd /var/audit/audit_summary.dir $ auditreduce -c na -O nasumm $ ls *nasumm 20030827183214.20030827215318.nasumm |
将使用 na 记录的开始和结束日期为合并的 nasumm 审计文件添加时间标记。
可以手动选择审计文件以仅搜索指定的文件组。例如,可以通过进一步处理前面示例中的 *nasumm 文件来查找系统引导事件。要执行此操作,可以指定文件名作为 auditreduce 命令的最后一个参数。
$ auditreduce -m 113 -O systemboot 20030827183214.20030827215318.nasumm 20030827183214.20030827183214.systemboot |
20030827183214.20030827183214.systemboot 文件只包含系统引导审计事件。
在本示例中,将合并包含特定用户名称的审计跟踪中的记录。-e 选项查找有效用户。-u 选项查找审计用户。
$ cd /var/audit/audit_summary.dir $ auditreduce -e tamiko -O tamiko |
可以在此文件中查找特定事件。在以下示例中,将检查 2003 年 9 月 7 日(您的时间)用户登录和退出的时间。只检查那些以用户名作为文件后缀的文件。此日期的简捷形式为 yyyymmdd。
# auditreduce -M tamiko -O tamikolo -d 20030907 -u tamiko -c lo |
在本示例中,从审计跟踪中选择特定日期的登录和退出消息。将消息合并到目标文件。目标文件将写入除常规审计根目录以外的目录中。
# auditreduce -c lo -d 20030827 -O /var/audit/audit_summary.dir/logins # ls /var/audit/audit_summary.dir/*logins /var/audit/audit_summary.dir/20030827183936.20030827232326.logins |
使用 praudit 命令,可以查看二进制审计文件的内容。可以传输 auditreduce 命令的输出,也可以读取特定审计文件。-x 选项可用于进一步处理。
承担拥有审计查看配置文件的角色或成为超级用户。
系统管理员角色拥有审计查看配置文件。另外,还可以创建拥有审计查看配置文件的单独用户。要创建角色并将其指定给用户,请参见配置 RBAC(任务列表)。
使用以下 praudit 命令之一来生成最符合您需要的输出。
以下示例显示同一审计事件的 praudit 输出。审计策略已设置为包括 sequence 和 trailer 标记。
praudit -s 命令以短格式(每行一个标记)显示审计记录。使用 -l 选项在一行放置一条记录。
$ auditreduce -c lo | praudit -s header,101,2,AUE_rlogin,,example1,2003-10-13 11:23:31.050 -07:00 subject,jdoe,jdoe,staff,jdoe,staff,749,749,195 1234 server1 text,successful login return,success,0 sequence,1298 |
praudit -r 命令以原始格式(每行一个标记)显示审计记录。使用 -l 选项在一行放置一条记录。
$ auditreduce -c lo | praudit -r 21,101,2,6155,0x0000,192.168.60.83,1062021202,64408258 36,2026700,2026700,10,2026700,10,749,749,195 1234 192.168.60.17 40,successful login 39,0,0 47,1298 |
praudit -x 命令以 XML 格式(每行一个标记)显示审计记录。使用 -l 选项在一行放置一条记录的 XML 输出。
$ auditreduce -c lo | praudit -x <record version="2" event="login - rlogin" host="example1" time="Wed Aug 27 14:53:22 PDT 2003" msec="64"> <subject audit-uid="jdoe" uid="jdoe" gid="staff" ruid="jdoe" rgid="staff" pid="749" sid="749" tid="195 1234 server1"/> <text>successful login</text> <return errval="success" retval="0"/> <sequence seq-num="1298"/> </record> |
通过 lp 命令的管道,整个审计跟踪的输出将转至打印机。打印机的访问应受到限制。
# auditreduce | praudit | lp -d example.protected.printer |
在本示例中,在终端窗口中检查登录文件摘要。
# cd /var/audit/audit_summary.dir/logins # praudit 20030827183936.20030827232326.logins | more |
在本示例中,审计记录转换为 XML 格式。
# praudit -x 20030827183214.20030827215318.logins > 20030827.logins.xml |
可以在浏览器中显示 *xml 文件。可以使用脚本对文件内容进行操作,以便提取相关信息。
有时,审计守护进程退出,而其审计文件仍处于打开状态。或者,某服务器不可访问,并强制计算机切换到新服务器。在这种情况下,虽然审计文件不再用于审计记录,但此文件还是以字符串 not_terminated 作为结束时间标记。使用 auditreduce -O 命令为此文件提供正确时间标记。
在审计文件系统上,按照创建顺序列出带有 not_terminated 字符串的文件。
# ls -R1t audit-directory*/files/* | grep not_terminated |
列出子目录中的文件。
按照从最新到最旧的顺序列出文件。
将文件列成一列。
清除旧的 not_terminated 文件。
将旧文件的名称指定到 auditreduce -O 命令。
# auditreduce -O system-name old-not-terminated-file |
删除旧的 not_terminated 文件。
# rm system-name old-not-terminated-file |
在以下示例中,查找并重命名 not_terminated 文件,然后删除原文件。
ls -R1t */files/* | grep not_terminated …/egret.1/20030908162220.not_terminated.egret …/egret.1/20030827215359.not_terminated.egret # cd */files/egret.1 # auditreduce -O egret 20030908162220.not_terminated.egret # ls -1t 20030908162220.not_terminated.egret 当前审计文件 20030827230920.20030830000909.egret 输入(旧)审计文件 20030827215359.not_terminated.egret # rm 20030827215359.not_terminated.egret # ls -1t 20030908162220.not_terminated.egret 当前审计文件 20030827230920.20030830000909.egret 已清除的审计文件 |
新文件上的开始时间标记反映 not_terminated 文件中第一个审计事件的时间。结束时间标记反映此文件中最后一个审计事件的时间。
如果安全策略要求保存所有审计数据,则执行以下操作:
设置计划以定期归档审计文件。
通过将文件备份到脱机介质来归档审计文件。另外,还可以将这些文件移动到归档文件系统。
如果正在使用 syslog 实用程序收集文本审计日志,请归档文本日志。有关更多信息,请参见 logadm(1M) 手册页。
保存和存储辅助信息。
归档解释审计记录和审计跟踪所需的信息。
保留已归档审计文件的记录。
正确存储归档介质。
减少通过创建摘要文件存储的审计数据量。
可以使用 auditreduce 命令的选项从审计跟踪中提取摘要文件。摘要文件只包含指定类型的审计事件的记录。要提取摘要文件,请参见示例 29–25 和示例 29–29。