auditselect 命令

用途

根据定义的标准选择审计记录来分析。

语法

auditselect { -e " Expression " | -f File} [ -m ] [ Trail ]

描述

auditselect 命令是审计子系统的一部分。 如果该命令在 /etc/security/audit/bincmds 文件中配置为作为处理二进制文件的后端命令,那么它由 auditbin 守护程序调用。

auditselect 命令选择与标识的标准相匹配的审计记录并将这些记录写至标准输出。 通过 auditselect 命令,您可以过滤审计跟踪来获取用于分析的特定记录或选择要长期存储的特定记录。 此命令从 Trail 参数指定的文件或从标准输入取出流或二进制输入。 如果将 $bin 字符串指定为 Trail 参数的值,那么 auditbin 守护程序在它调用 auditselect 命令时替换当前二进制文件的路径名称。 选择标准可作为表达式输入或从 -f 标志指定的文件输入。 如果压缩二进制文件,那么 auditselect 命令在处理前将它们解包。

对于流数据,请在 /etc/security/audit/streamcmds 文件中配置 auditstream 命令和 auditselect 命令或从命令行输入这两个命令。

AIX_AUDITBUFSZ 环境变量允许对 auditselect 审计记录执行缓冲的写入操作。 缓冲的写入操作对于将生成许多审计记录的高性能应用程序很有用。

AIX_AUDITBUFSZ 环境变量接受十进制值和十六进制值,其范围为 8192 个字节到 67 MB。 超出允许值范围的任何其他正数值都将根据最接近的值来舍入为该范围的开始值或者该范围的结束值。 如果未设置此变量值,或者为此变量指定了负值或非数字值,那么会忽略 AIX_AUDITBUFSZ 变量。

标志

描述
-e "表达式" 定义选择标准。 Expression 参数由逻辑运算符结合的一个或多个条件构成。
-f 文件 指定包含选择标准的 File
-M 指定具有记录扩展的输出审计记录。

创建表达式

有效的表达式由逻辑运算符结合的一个或多个条件构成。

逻辑运算符

逻辑运算符允许在一个表达式中使用多个项。 常规优先顺序规则适用于对具有多个逻辑运算符的表达式求值,而圆括号可用于强制求值的顺序。 有效的逻辑运算符包含以下几个:

描述
&& (和) 表达式term1 && term2如果 term1 和 term2 都为 true ,那么为 true (已选中)。
|| (或) 表达式term1 || term2如果 term1 或 term2 为 true ,那么为 true (已选中)。
! (不是) 表达式!term1如果 term1 不为 true ,那么为 true (已选中)。

条款

表达式各个条件具有以下格式:

Field Relational_Operator Value

字段

字段对应每个记录的审计报头中的信息。 字段的有效值包含以下项:

描述
event 审计事件的名称,例如:FILE_Open.
command 生成审计事件的命令的名称。
result 审计事件的状态。 以下项的值:result字段必须为下列其中一项:
  • 确定
  • 失败
  • 失败 PRIV
  • 失败 _ AUTH
  • 失败访问
  • FAIL_DAC 指明因为自主访问控制(DAC)遭到拒绝而导致事件失败。 “访问控制表”是信息存储库的一种形式,它包含有关对共享资源/对象的访问权限(许可)的数据。 ACL 以 DAC 机制加以分类。

FAIL 与所有其他错误代码相匹配。

login 生成审计事件的进程的登录用户的标识。
real 生成审计事件的进程的实际用户的标识。
pid 生成审计事件的进程的标识。
ppid 生成审计事件的进程的父进程的标识。
tid 生成审计事件的内核线程的标识。
time 生成审计事件的时间。
date 生成审计事件的日期。
host 生成记录的机器的主机名。 保留名称 UNKNOWN 可用来匹配任何未在 /etc/security/audit/hosts 文件中列出的机器。

关系运算符

关系运算符用于将审计记录中的字段与指定的值进行比较。 有效的关系运算符包含:

描述
== 等于
!= 不等于
< 小于
> 大于
>= 大于或等于
<= 小于或等于

有效条件

有效条件由一个字段、一个关系运算符和一个值构成。 另外,不是所有的关系运算符和值对每个字段而言都是有效的。 以下是有效的组合:

字段 有效运算符 有效值
event = =, ! = Text string audit event name
result = =, ! = Text string audit status codes
command = =, ! = Text string command name
pid all Decimal integer process ID
ppid all Decimal integer process ID
login all Decimal integer user ID
login = =, ! = Text string user name
real all Decimal integer user ID
real = =, ! = Text string user name
tid all Decimal integer thread ID
time all String in the format specified by the current locale
date all String in the format specified by the current locale
host = =, ! = Text string host name or 16 character cpu ID
priv = =, ! = Privilege name
sl = =, ! = Sensitivity label name
tl = =, ! = Integrity label name
role = =, ! = Role name

安全性

访问控制

此命令应向 root 用户和审计组的成员授予执行 (x) 访问权。 对于 root 用户命令是 setuid,并且有可信计算库属性。

RBAC 环境和

此命令实现并可以执行特权操作。 只有特权用户才能执行此类特权操作。 要复审与该命令相关的特权和权限列表,请参阅 /etc/security/privcmds 数据库。

示例

配置

  1. 要选择与 USER_SU 或 USER_Login 审计事件相匹配的收集的二进制数据记录,请输入以下内容来将 auditselect 命令添加至 /etc/security/audit/bincmds 文件:
    /usr/sbin/auditselect -e "event== USER_SU || event== \
    USER_Login" $bin >> /audit/trail.login
    当启用审计时,用户会话的每次启动的记录从当前二进制文件读取,并写至 /audit/trail.login 文件。
  2. 要选择流收集的与不成功的用户登录相匹配的数据记录,请输入以下内容来将 auditselect 命令添加至 /etc/security/audit/streamcmds 文件中的 auditstream 节:
    /usr/sbin/auditstream -c authentication | \
    /usr/sbin/auditselect -e "event == \
    USER_Login && result == FAIL" | \
    /usr/sbin/auditpr -t 2 -v >> /dev/lpr2
    要产生硬拷贝的审计跟踪,那么失败的认证事件的记录写至 /dev/lpr2 行式打印机。

选择认证或登录事件

  1. 要在审计跟踪文件中搜索涉及认证错误的所有事件:
    /usr/sbin/auditselect -e "result == FAIL_AUTH"
    /audit/oldtrail | /usr/sbin/auditpr -t -helt -v
    因为认证被拒绝而导致失败的事件的记录打印出来。 报头标题将只打印一次,后跟事件、登录标识和时间字段,然后是审计跟踪。
  2. 要选择在以下情况下生成的审计记录:smith在 1987 年 5 月的第一周的主要工作时间内登录,请输入:
    /usr/sbin/auditselect  -f /aaa/bbb \
    /audit/trail1987 | /usr/sbin/auditpr
    /aaa/bbb文件必须包含以下行:
     command == login && login == smith && 
     time >= 08:00:00 && time <= 17:00:00 && 
     date >= 05/01/87 && date <= 05/05/87

字符串比较

  1. 要将审计事件的名称与以下项进行比较:USER_Login字符串,输入下列其中一项:
    "event == USER_Login"
     
    "event != USER_Login"
  2. 要查明 passwd 命令是否生成了审计事件,请使用:
    "command == passwd"
    要查明审计事件是否不是由 passwd 命令生成的,请使用:
    "command != passwd"
  3. 要比较审计状态,请执行以下操作:OK结果字符串,请输入:
    "result == OK"
  4. 将生成审计事件的进程的登录标识或实际用户标识与特定用户标识 (用户标识) 进行比较014或用户名carol) ,输入下列其中一项:
    "login == 014"
    "login != carol"
    "login == 014 || login != carol"
    "real == carol"
  5. 用于将生成审计事件的流程的标识或流程的父代与流程标识进行比较2006,请输入下列其中一项:
    "pid == 2006"
    "pid != 2006"
    "ppid ==  2006" 
    注: 虽然可以将登录和实际用户标识和进程标识与不等式运算符 ( < => =<> ) 进行比较,但通常不需要执行此操作。
  6. 将生成审计事件的时间与生成审计事件的时间进行比较08:03:00时间字符串,请输入下列其中一项:
    "time == 08:03:00"
    "time != 08:03:00"
    "time <  08:03:00"
    "time <= 08:03:00"
    "time >  08:03:00"
    "time >= 08:03:00"
    选择符合所指示的比较的审计记录08:03:00时间字符串。 时间字符串的格式必须与当前语言环境指定的格式一致。
  7. 将生成审计事件的日期与生成审计事件的日期进行比较05/05/89日期字符串,请输入下列其中一项:
    "date == 05/03/89"
    "date != 05/03/89"
    "date <  05/03/89"
    "date <= 05/03/89"
    "date >  05/03/89"
    "date >= 05/03/89" 
    选择符合所指示的比较的审计记录05/05/89日期字符串。 日期字符串的格式必须与当前语言环境指定的格式一致。
注: auditselect 命令不支持恢复方式的 -r 标志。

审计记录的缓冲写入选项

  1. 要对以 bin 方式启动的审计子系统的缓冲区大小为 520000 字节的审计记录使用缓冲的写入选项,请输入以下命令:
    export AIX_AUDITBUFSZ=520000
    /usr/sbin/auditselect -e "event== USER_SU || event==USER_Login" $bin >> /audit/trail.login 

文件

描述
/usr/sbin/auditselect 指定 auditselect 命令的路径。
/etc/rc 包含系统初始化命令。
/etc/security/audit/config 包含审计系统配置信息。
/etc/security/audit/events 包含系统的审计事件。
/etc/security/audit/objects 包含被审计对象(文件)的审计事件。
/etc/security/audit/bincmds 包含 auditbin 后端命令。
/etc/security/audit/streamcmds 包含审计流命令。
/etc/security/audit/hosts 包含“CPU 标识到主机名”的映射。