跳过导航链接 | |
退出打印视图 | |
系统管理指南:安全性服务 Oracle Solaris 10 8/11 Information Library (简体中文) |
每个审计标记都有一个标记类型标识符,后跟标记的特定数据。每种标记类型都有自己的格式。下表显示了每个标记的标记名称以及简短说明。为了与先前的 Solaris 发行版兼容,将维护过时的标记。
表 31-4 用于 Oracle Solaris 审计的审计标记
|
审计记录始终以 header 标记开始。header 标记指示审计记录在审计迹中的开始位置。对于可归属事件,subject 和 process 标记引用导致事件发生的进程的值。对于无归属事件,process 标记引用系统。
acl 标记记录有关访问控制列表 (Access Control List, ACL) 的信息。
acl 标记包含四个固定字段:
标记 ID,将此标记标识为 acl 标记
指定 ACL 类型的字段
ACL 值字段
列出与此 ACL 关联的权限的字段
praudit -x 命令显示 acl 标记的字段:
<acl type="1" value="root" mode="6"/>
arbitrary 标记可封装审计迹的数据。此标记包含四个固定字段和一个数据组。固定字段如下所述:
标记的其余部分由指定类型的 count 组成。praudit 命令以如下方式显示 arbitrary 标记:
arbitrary,decimal,int,1 42
表 31-5 arbitrary 标记的显示格式字段值
|
下表显示了项大小字段的可能值。
表 31-6 arbitrary 标记的项大小字段值
|
arg 标记包含有关系统调用参数的信息:系统调用的参数号、参数值以及可选说明。该标记允许在审计记录中使用 32 位整数的系统调用参数。
arg 标记有五个字段:
标记 ID,将此标记标识为 arg 标记
参数 ID,说明标记引用的系统调用参数
参数值
描述性文本字符串长度
文本字符串
praudit -x 命令显示 arg 标记的字段:
<argument arg-num="2" value="0x0" desc="new file uid"/>
attribute 标记包含文件 vnode 中的信息。
attribute 标记有七个字段:
一个标记 ID,用于将此标记标识为 attribute 标记
文件访问模式和类型
所有者用户 ID
所有者组 ID
文件系统 ID
节点 ID
文件可能表示的设备 ID
有关文件系统 ID 和设备 ID 的更多信息,请参见 statvfs(2) 手册页。
attribute 标记通常与 path 标记同时出现。attribute 标记是在搜索路径期间生成的。如果出现路径搜索错误,则没有可用的 vnode 来获取必需的文件信息。因此,attribute 标记不包括在审计记录中。praudit -x 命令显示 attribute 标记的字段:
<attribute mode="100644" uid="adm" gid="adm" fsid="136" nodeid="2040" device="0"/>
cmd 标记记录与命令关联的参数列表和环境变量的列表。
cmd 标记包含以下字段:
一个标记 ID,用于将此标记标识为 cmd 标记
命令参数的计数
参数列表
下一个字段的长度
参数内容
环境变量计数
环境变量列表
下一个字段的长度
环境变量内容
praudit -x 命令显示 cmd 标记的字段:下面是一个截断的 cmd 标记。由于显示的原因进行了换行。
<cmd><arge>WINDOWID=6823679</arge> <arge>COLORTERM=gnome-terminal</arge> <arge>...LANG=C</arge>...<arge>HOST=machine1</arge> <arge>LPDEST=printer1</arge>...</cmd>
exec_args 标记记录 exec() 系统调用的参数。exec_args 标记有两个固定字段:
标记 ID 字段,将此标记标识为 exec_args 标记
计数字段,表示传递给 exec() 系统调用的参数数量
该标记的其余部分由 count 字符串组成。praudit -x 命令显示 exec_args 标记的字段:
<exec_args><arg>/usr/bin/sh</arg><arg>/usr/bin/hostname</arg></exec_args>
注 - 仅当 argv 审计策略选项处于活动状态时,才输出 exec_args 标记。
exec_env 标记记录 exec() 系统调用的当前环境变量。exec_env 标记有两个固定字段:
标记 ID 字段,将此标记标识为 exec_env 标记
计数字段,表示传递给 exec() 系统调用的参数数量
该标记的其余部分由 count 字符串组成。praudit -x 命令显示 exec_env 标记的字段。由于显示的原因进行了换行。
<exec_env><env>_=/usr/bin/hostname</env> <env>DTXSERVERLOCATION=local</env><env>SESSIONTYPE=altDt</env> <env>LANG=C</env><env>SDT_NO_TOOLTALK=1</env><env>SDT_ALT_HELLO=/bin/true</env> <env>PATH=/usr/bin:/usr/openwin/bin:/usr/ucb</env> <env>OPENWINHOME=/usr/openwin</env><env>LOGNAME=jdoe</env><env>USER=jdoe</env> <env>DISPLAY=:0</env><env>SHELL=/bin/csh</env><env>START_SPECKEYSD=no</env> <env>SDT_ALT_SESSION=/usr/dt/config/Xsession2.jds</env><env>HOME=/home/jdoe</env> <env>SDT_NO_DTDBCACHE=1</env><env>PWD=/home/jdoe</env><env>TZ=US/Pacific</env> </exec_env>
注 - 仅当 arge 审计策略选项处于活动状态时,才输出 exec_env 标记。
exit 标记记录程序的退出状态。exit 标记包含以下字段:
标记 ID,将此标记标识为 exit 标记
传递给 exit() 系统调用的程序退出状态
描述退出状态或提供系统错误号的返回值
praudit 命令按如下方式显示 exit 标记:
exit,Error 0,0
file 标记是 auditd 守护进程生成的特殊标记。停用旧文件时,此标记可标记新审计文件的开始以及旧审计文件的结束。初始 file 标记识别审计迹中的上一个文件。最终 file 标记识别审计迹中的下一个文件。auditd 守护进程可生成包含此标记的特殊审计记录,以便将连续的审计文件“链接”到一个审计迹中。
praudit -x 命令显示 file 标记的字段。该标记识别审计迹中的下一个文件。由于显示的原因进行了换行。
<file iso8601="2009-04-08 14:18:26.200 -07:00"> /var/audit/machine1/files/20090408211826.not_terminated.machine1</file>
该标记已由 groups 标记取代。请参见groups 标记。
groups 标记已由 group 标记取代。groups 标记记录进程凭证中的组项。
groups 标记有两个固定字段:
标记 ID 字段,将此标记标识为 groups 标记
一个计数,用于表示该审计记录中包含的组数
该标记的其余部分由 count 组项组成。
praudit -x 命令显示 groups 标记的字段:
<group><gid>staff</gid><gid>other</gid></group>
header 标记的特殊之处在于,它标记审计记录的开始。header 标记与 trailer 标记组合使用,将记录中的所有其他标记括在一起。
header 标记有八个字段:
一个标记 ID 字段,用于将此标记标识为 header 标记
字节计数,表示审计记录的总长度(包括 header 和 trailer 标记)
版本号,标识审计记录结构的版本
审计事件 ID,标识记录所表示的审计事件
ID 修饰符,标识审计事件的特殊特征
0x4000 PAD_NOTATTR nonattributable event 0x8000 PAD_FAILURE failed audit event
地址类型,IPv4 或 IPv6
计算机 IP 地址
记录的创建时间和日期
在 64 位系统上,header 标记使用 64 位 位时间戳而不是 32 位 位时间戳显示。
praudit 命令按如下方式显示 header 标记:
header,69,2,su,,machine1,2009-04-08 13:11:58.209 -07:00
praudit -x 命令在审计记录开始显示 header 标记的字段。由于显示的原因进行了换行。
<record version="2" event="su" host="machine1" iso8601="2009-04-08 13:11:58.209 -07:00">
ip_addr 标记包含一个 Internet 协议地址。自 Solaris 8 发行版开始,Internet 地址可以用 IPv4 格式或 IPv6 格式显示。IPv4 地址使用 4 个字节。IPv6 地址使用 1 个字节来表示地址类型,使用 16 个字节来表示地址。
in_addr 标记有三个字段:
一个标记 ID,用于将此标记标识为 in_addr 标记
IP 地址类型,IPv4 或 IPv6
IP 地址
praudit -x 命令显示 ip_addr 标记的内容:
<ip_address>machine1</ip_address>
ip 标记包含 Internet 协议首码的副本。ip 标记有两个字段:
一个标记 ID,用于将此标记标识为 ip 标记
IP 数据包头副本,即全部 20 个字节
praudit 命令按如下方式显示 ip 标记:
ip address,0.0.0.0
IP 数据包头结构在 /usr/include/netinet/ip.h 文件中定义。
ipc 标记包含调用方用于标识特殊 IPC 对象的 System V IPC 消息句柄、信号句柄或共享内存句柄。
ipc 标记有三个字段:
一个标记 ID,用于将此标记标识为 ipc 标记
一个类型字段,用于指定 IPC 对象的类型
标识 IPC 对象的句柄
注 - IPC 对象标识符不符合 Oracle Solaris 审计标记的上下文无关性质。没有可唯一标识 IPC 对象的全局名称。IPC 对象由其句柄标识。这些句柄仅当 IPC 对象处于活动状态时才有效。但是,IPC 对象的标识应该不存在问题。很少用到 System V IPC 机制,并且这些机制全部共享相同的审计类。
下表显示了 IPC 对象类型字段的可能值。这些值在 /usr/include/bsm/audit.h 文件中定义。
表 31-7 IPC 对象类型字段的值
|
praudit -x 命令显示 ipc 标记的字段:
<IPC ipc-type="shm" ipc-id="15"/>
ipc_perm 标记包含 System V IPC 访问权限的副本。该标记将被添加到由 IPC 共享内存事件、IPC 信号事件和 IPC 消息事件生成的审计记录中。
ipc_perm 标记有八个字段:
一个标记 ID,用于将此标记标识为 ipc_perm 标记
IPC 所有者的用户 ID
IPC 所有者的组 ID
IPC 创建者的用户 ID
IPC 创建者的组 ID
IPC 访问模式
IPC 序列号
IPC 密钥值
praudit -x 命令显示 ipc_perm 标记的字段:由于显示的原因进行了换行。
<IPC_perm uid="jdoe" gid="staff" creator-uid="jdoe" creator-gid="staff" mode="100600" seq="0" key="0x0"/>
从与 IPC 对象关联的 ipc_perm 结构取得这些值。
iport 标记包含 TCP 或 UDP 端口地址。
iport 标记有两个字段:
一个标记 ID,用于将此标记标识为 iport 标记
TCP 或 UDP 端口地址
praudit 命令按如下方式显示 iport 标记:
ip port,0xf6d6
opaque 标记包含作为字节序列的未格式化数据。opaque 标记有三个字段:
一个标记 ID,用于将此标记标识为 opaque 标记
数据的字节计数
字节数据数组
praudit 命令按如下方式显示 opaque 标记:
opaque,12,0x4f5041515545204441544100
path 标记包含对象的访问路径信息。
path 标记包含以下字段:
一个标记 ID,用于将此标记标识为 path 标记
路径长度
基于系统实际根目录的对象的绝对路径
praudit 命令按如下方式显示 path 标记(不包含第二个字段):
path,/etc/security/audit_user
praudit -x 命令显示 path 标记的内容:
<path>/etc/security/prof_attr</path>
下图显示了 path 标记的格式。
图 31-4 path 标记格式
path_attr 标记包含对象的访问路径信息。访问路径指定了 path 标记对象下的属性文件对象的顺序。系统调用存取属性文件,如 openat()。有关属性文件对象的更多信息,请参见 fsattr(5) 手册页。
path_attr 标记包含以下字段:
一个标记 ID,用于将此标记标识为 path_attr 标记
计数字段,表示属性文件路径的段数
count 空字符结尾字符串
praudit 命令显示 path_attr 标记如下:
path_attr,1,attr_file_name
privilege 标记记录进程中的特权使用情况。不对基本集中的特权记录 privilege 标记。如果已通过管理操作从基本集中删除了特权,则会记录该特权的使用。有关特权的更多信息,请参见特权(概述)
privilege 标记包含以下字段:
一个标记 ID,用于将此标记标识为 privilege 标记
后一字段的长度
特权集名称
后一字段的长度
特权列表
praudit -x 命令显示 privilege 标记的字段。由于显示的原因进行了换行。
<privilege set-type="Effective">file_chown,file_dac_read, file_dac_write,net_privaddr,proc_exec,proc_fork,proc_setid</privilege>
process 标记包含有关与进程关联的用户(如信号接收者)的信息。
process 标记有九个字段:
一个标记 ID,用于将此标记标识为 process 标记
审计 ID
有效用户 ID
有效组 ID
实际用户 ID
实际组 ID
进程 ID
审计会话 ID
终端 ID,由设备 ID 和计算机地址组成
审计 ID、用户 ID、组 ID、进程 ID 以及会话 ID 均为长字段,而不是短字段。
注 - process 标记的会话 ID、实际用户 ID 或实际组 ID 字段可能不可用。在此情况下,应将此值设置为 -1。
包含终端 ID 的任何标记都具有多个变体。praudit 命令可隐藏这些变体。因此,对于包含终端 ID 的任何标记,均采用相同的方式处理终端 ID。终端 ID 为 IP 地址和端口号,或是设备 ID。设备 ID(如连接到调制解调器的串行端口)可以为零。可使用多种格式指定终端 ID。
以设备编号表示的终端 ID 按如下方式指定:
32 位应用程序-4 个字节表示设备编号,4 个字节未使用
64 位应用程序-8 个字节表示设备编号,4 个字节未使用
在 Solaris 8 之前的发行版中,以端口号表示的终端 ID 按如下方式指定:
32 位应用程序-4 个字节表示端口号,4 个字节表示 IP 地址
64 位应用程序-8 个字节表示端口号,4 个字节表示 IP 地址
自 Solaris 8 发行版开始,以端口号表示的终端 ID 按如下方式指定:
使用 IPv4 的 32 位-4 个字节表示端口号,4 个字节表示 IP 类型,4 个字节表示 IP 地址
使用 IPv6 的 32 位-4 个字节表示端口号,4 个字节表示 IP 类型,16 个字节表示 IP 地址
使用 IPv4 的 64 位-8 个字节表示端口号,4 个字节表示 IP 类型,4 个字节表示 IP 地址
使用 IPv6 的 64 位-8 个字节表示端口号,4 个字节表示 IP 类型,16 个字节表示 IP 地址
praudit -x 命令可显示 process 标记的字段。由于显示的原因进行了换行。
<process audit-uid="-2" uid="root" gid="root" ruid="root" rgid="root" pid="9" sid="0" tid="0 0 0.0.0.0"/>
下图显示了 process 标记的格式。
图 31-5 process 标记格式
return 标记包含系统调用的返回状态 (u_error) 以及进程返回值 (u_rval1)。
return 标记有三个字段:
一个标记 ID,用于将此标记标识为 return 标记
系统调用错误状态
系统调用返回值
return 标记始终作为系统调用的内核生成审计记录的一部分返回。在应用程序审计中,此标记指示退出状态以及其他返回值。
praudit 命令按如下方式显示系统调用的 return 标记:
return,failure: Operation now in progress,-1
praudit -x 命令显示 return 标记的字段:
<return errval="failure: Operation now in progress" retval="-1/">
sequence 标记包含一个序列号。每次向审计迹添加一条审计记录,序列号就增加一个数字。该标记用于调试。
sequence 标记有两个字段:
一个标记 ID,用于将此标记标识为 sequence 标记
32 位无符号长字段,包含序列号
praudit 命令显示 sequence 标记的字段:
sequence,1292
praudit -x 命令显示 sequence 标记的内容:
<sequence seq-num="1292"/>
注 - 仅当 seq 审计策略选项处于活动状态时,才输出 sequence 标记。
socket 标记包含描述 Internet 套接字的信息。在某些情况下,该标记有四个字段:
一个标记 ID,用于将此标记标识为 socket 标记
套接字类型字段,指示引用的套接字类型(TCP、UDP 或 UNIX)
本地端口
本地 IP 地址
praudit 命令按如下方式显示该 socket 标记实例:
socket,0x0002,0x83b1,localhost
在大多数情况下,该标记有八个字段:
一个标记 ID,用于将此标记标识为 socket 标记
套接字域
套接字类型字段,指示引用的套接字类型(TCP、UDP 或 UNIX)
本地端口
地址类型,IPv4 或 IPv6
本地 IP 地址
远程端口
远程 IP 地址
自 Solaris 8 发行版开始,Internet 地址可以用 IPv4 格式或 IPv6 格式显示。IPv4 地址使用 4 个字节。IPv6 地址使用 1 个字节来表示地址类型,使用 16 个字节来表示地址。
praudit 命令按如下方式显示 socket 标记:
socket,0x0002,0x0002,0x83cf,example1,0x2383,server1.Subdomain.Domain.COM
praudit -x 命令显示 socket 标记的字段。由于显示的原因进行了换行。
<socket sock_domain="0x0002" sock_type="0x0002" lport="0x83cf" laddr="example1" fport="0x2383" faddr="server1.Subdomain.Domain.COM"/>
subject 标记描述执行或尝试执行某项操作的用户。格式与 process 标记的格式相同。
subject 标记有九个字段:
一个标记 ID,用于将此标记标识为 subject 标记
审计 ID
有效用户 ID
有效组 ID
实际用户 ID
实际组 ID
进程 ID
审计会话 ID
一个终端 ID,由设备 ID 和计算机 IP 地址组成
审计 ID、用户 ID、组 ID、进程 ID 以及会话 ID 均为长字段,而不是短字段。
注 - subject 标记的会话 ID、实际用户 ID 或实际组 ID 字段可能不可用。在此情况下,应将此值设置为 -1。
包含终端 ID 的任何标记都具有多个变体。praudit 命令可隐藏这些变体。因此,对于包含终端 ID 的任何标记,均采用相同的方式处理终端 ID。终端 ID 为 IP 地址和端口号,或是设备 ID。设备 ID(如连接到调制解调器的串行端口)可以为零。可使用多种格式指定终端 ID。
以设备编号表示的终端 ID 按如下方式指定:
32 位应用程序-4 个字节表示设备编号,4 个字节未使用
64 位应用程序-8 个字节表示设备编号,4 个字节未使用
在 Solaris 8 之前的发行版中,以端口号表示的终端 ID 按如下方式指定:
32 位应用程序-4 个字节表示端口号,4 个字节表示 IP 地址
64 位应用程序-8 个字节表示端口号,4 个字节表示 IP 地址
自 Solaris 8 发行版开始,以端口号表示的终端 ID 按如下方式指定:
使用 IPv4 的 32 位-4 个字节表示端口号,4 个字节表示 IP 类型,4 个字节表示 IP 地址
使用 IPv6 的 32 位-4 个字节表示端口号,4 个字节表示 IP 类型,16 个字节表示 IP 地址
使用 IPv4 的 64 位-8 个字节表示端口号,4 个字节表示 IP 类型,4 个字节表示 IP 地址
使用 IPv6 的 64 位-8 个字节表示端口号,4 个字节表示 IP 类型,16 个字节表示 IP 地址
subject 标记始终作为系统调用的内核生成审计记录的一部分返回。praudit 命令按如下方式显示 subject 标记:
subject,jdoe,root,root,root,root,1631,1421584480,8243 65558 machine1
praudit -x 命令显示 subject 标记的字段。由于显示的原因进行了换行。
<subject audit-uid="jdoe" uid="root" gid="root" ruid="root" rgid="root" pid="1631" sid="1421584480" tid="8243 65558 machine1"/>
下图显示了 subject 标记的格式。
图 31-6 subject 标记格式
text 标记包含一个文本字符串。
text 标记有三个字段:
一个标记 ID,用于将此标记标识为 text 标记
文本字符串长度
文本字符串本身
praudit -x 命令显示 text 标记的内容:
<text>booting kernel</text>
header 和 trailer 这两个标记的特殊之处在于,它们将审计记录的各个结束点区分开来,并将所有其他标记括在一起。header 标记指示审计记录的开头。trailer 标记指示审计记录的结尾。trailer 标记是可选标记。仅当已设置 trail 审计策略选项时,才能将 trailer 标记添加为每条记录的最后一个标记。
在 trailer 打开的情况下生成审计记录时,auditreduce 命令可以验证 trailer 是否正确指回记录 header。trailer 标记支持向后查找审计迹。
trailer 标记有三个字段:
一个标记 ID,用于将此标记标识为 trailer 标记
一个填充编号,帮助标记记录的结尾
审计记录中的字符总数(包括 header 和 trailer 标记)
trailer,136
uauth 标记记录命令或操作中的授权使用情况。
uauth 标记包含以下字段:
一个标记 ID,用于将此标记标识为 uauth 标记
后一字段中的文本长度
授权列表
praudit 命令按如下方式显示 uauth 标记:
use of authorization,solaris.admin.printer.delete
upriv 标记记录命令或操作中的特权使用情况。
praudit -x 命令显示 upriv 标记的字段:
<use_of_privilege result="successful use of priv">proc_setid</use_of_privilege>
zonename 标记记录发生审计事件的区域。字符串 "global" 指示审计事件发生在全局区域。
zonename 标记包含以下字段:
一个标记 ID,用于将此标记标识为 zonename 标记
后一字段中的文本长度
区域名称
praudit -x 命令显示 zonename 标记的内容:
<zone name="graphzone"/>