Red Hat Training

A Red Hat training course is available for Red Hat Enterprise Linux

5.6. 理解审核日志文件

默认情况下,在 /var/log/audit/audit.log 文件中的审核系统储存日志项;如果启用日志旋转,就可以旋转储存在同一目录中的 audit.log 文件。
以下的审核规则记录了每次读取或者修改 /etc/ssh/sshd_config 文件的尝试:
-w /etc/ssh/sshd_config -p warx -k sshd_config
如果 auditd 守护程序在运行,就需在审核日志文件中运行以下命令创造新事件:
~]# cat /etc/ssh/sshd_config
audit.log 文件中的事件如下所示:
type=SYSCALL msg=audit(1364481363.243:24287): arch=c000003e syscall=2 success=no exit=-13 a0=7fffd19c5592 a1=0 a2=7fffd19c4b50 a3=a items=1 ppid=2686 pid=3538 auid=500 uid=500 gid=500 euid=500 suid=500 fsuid=500 egid=500 sgid=500 fsgid=500 tty=pts0 ses=1 comm="cat" exe="/bin/cat" subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 key="sshd_config"
type=CWD msg=audit(1364481363.243:24287):  cwd="/home/shadowman"
type=PATH msg=audit(1364481363.243:24287): item=0 name="/etc/ssh/sshd_config" inode=409248 dev=fd:00 mode=0100600 ouid=0 ogid=0 rdev=00:00 obj=system_u:object_r:etc_t:s0
以上事件由三个记录组成(每个以 type= 密码作为开始),共享相同的时间戳和编号。每个记录包含好几对 name=value ,由空格或者逗号分开。以下是关于以上事件的详细分析:

第一个记录

type=SYSCALL
type 输入栏包含这类记录。在这个例子中, SYSCALL 数值详细说明连接到 Kernel 的系统调用触发了这个记录。
为了列出所有可能的类型值和它们的解释,请参考〈第 B.2 节 “审核记录类型”〉。
msg=audit(1364481363.243:24287):
msg 输入栏记录:
  • audit(time_stamp:ID) 表格中记录的时间戳和特殊 ID。如果多种记录生成为相同审核事件的一部分,那么它们可以共享相同的时间戳和 ID。
  • Kernel 或者用户空间应用提供不同的事件特定 name=value 组。
arch=c000003e
arch 输入栏包括关于系统CPU架构的信息。值 c000003e 是使用 16 进制表示法编码。当使用 ausearch 命令搜寻审核记录时, 使用 -i 或者 --interpret 选项自动转化为 16 进制值可供人读取的对等语。 c000003e 值被解释为 x86_64
syscall=2
syscall 输入栏记录了传输给 Kernel 的输入栏类型。值 2 可以与在 /usr/include/asm/unistd_64.h 文件中可供人读取的对等语相匹配。 在这种情况下,2open 系统调用。 请注意 ausyscall 实用程序允许您把系统调用数字转换成可供人读取的对等语。 使用 ausyscall --dump 命令来展示所有的系统调用和它们的号码。如想要获取更多信息,请参考 ausyscall(8) 手册页。
success=no
success 输入栏记录了系统调用是否被成功地记录在特定事件中。在这种情况下,调用不会成功。
exit=-13
exit 输入栏包含详细说明由系统调用所返回的退出代码的值。在不同的系统调用中,值各不相同。您可以用以下命令把值解释为可供人读取的对等语:ausearch --interpret --exit -13(假设您的审核日志中包含的事件没有退出代码 -13)。
a0=7fffd19c5592, a1=0, a2=7fffd19c5592, a3=a
a0a3 输入栏记录了前四个参数,在这个事件中使用 16 进制编码系统调用。这些参数取决于使用的系统调用;它们可以通过 ausearch 实用程序来解释。
items=1
items 输入栏包含事件中路径记录的数量。
ppid=2686
items 输入栏记录了父进程 ID(PPID)。在这个情况下,2686bash 进程的 PPID。
pid=3538
pid 输入栏记录了进程 ID(PID)。在这个情况下,3538cat 进程的 PID。
auid=500
auid 输入栏记录了审核用户 ID,这个是 loginuid。这个ID是用户在登录时使用的并且即使当用户身份改变时,也可以通过每个进程获取该ID。(例如,通过切换用户账户,使用 su - john命令)。
uid=500
uid 输入栏记录了开始分析进程的用户 ID。使用以下指令:ausearch -i --uid UID,用户 ID 就可以被解释为用户名字。在这个情况下, 500shadowman 的用户 ID。
gid=500
gid 输入栏记录了开始分析进程用户的 ID组。
euid=500
euid 输入栏记录了开始分析进程用户的有效用户 ID。
suid=500
suid 输入栏记录了开始分析进程的用户的设置用户 ID。
fsuid=500
fsuid 输入栏记录了开始分析进程用户的文件系统用户 ID。
egid=500
egid 输入栏记录了开始分析进程用户的有效群组 ID。
sgid=500
sgid 输入栏记录了开始分析进程用户的设置群组 ID。
fsgid=500
fsgid 输入栏记录了开始分析进程的用户的文件系统群组 ID。
tty=pts0
tty 输入栏记录了调用分析进程的终端。
ses=1
ses 输入栏记录了调用分析进程会话的会话 ID。
comm="cat"
comm 输入栏记录了命令行的名字,它被用于调用分析进程。在这种情况下 cat 命令被用来触发审核事件。
exe="/bin/cat"
exe 输入栏记录了被用来调用分析进程的可执行的路径。
subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
subj 输入栏记录了 SELinux 语境,运用此语境可以在执行时间中标注分析进程。
key="sshd_config"
key 输入栏记录了所有管理者定义的字符串,它与在审核日志中生成该事件的规则有关。

第二记录

type=CWD
在第二记录中,type 输入栏数值是 CWD — 当前工作目录。这种类型用于记录在被执行的第一记录中详细说明的触发系统调用的进程。
这个记录的目的是为了记录当前进程的位置以防在相关的 PATH 记录中捕捉到相对路径。运用这个方法可以重塑绝对路径。
msg=audit(1364481363.243:24287)
msg 输入栏持有与第一记录中的数值相同的时间戳和 ID 值。
cwd="/home/shadowman"
cwd 输入栏含有进入目录的路径,在目录中触发系统调用。

第三记录

type=PATH
在第三记录中, type 输入栏值是 PATH。每个审核事件包含一个 PATH 对于每条路径种类的记录作为一个参数,传输给系统调用。在审核事件中,只有一条路径(/etc/ssh/sshd_config)被用来作为参数。
msg=audit(1364481363.243:24287):
msg 输入栏持有与第一和第二记录中的值相同的时间戳和 ID 值。
item=0
item 输入栏表明在所有项目中,哪个项目在 SYSCALL 类型记录中,参考了当前记录。这个是数字是以零为基准;值 0 意味着它是第一项。
name="/etc/ssh/sshd_config"
name 输入栏记录了文件或者目录的所有路径,作为参数被传输给系统调用。在这种情况下,它是 /etc/ssh/sshd_config 文件。
inode=409248
inode 输入栏包含索引结点数字,与记录在事件中的文件和目录有关。以下命令体现了与 409248 索引结点数字相关的文件和目录:
~]# find / -inum 409248 -print
/etc/ssh/sshd_config
dev=fd:00
dev 输入栏明确说明了设备的次要和主要 ID,它包含记录在事件中的文件和目录。在这种情况下,值代表 /dev/fd/0 设备。
mode=0100600
mode 输入栏记录了文件和目录权限,用 16 进制表示法编码。在这种情况下,0100600 可以被解释为 -rw-------,意味着对于 /etc/ssh/sshd_config 文件,只有 root 用户拥有读取并且输入权限。
ouid=0
ouid 输入栏记录了对象所有者的用户 ID。
ogid=0
ogid 输入栏记录对象拥有者的群组 ID。
rdev=00:00
rdev 输入栏包含记录的设备识别器只用于特殊文件。在这种情况下,正常文件是不用来作为记录文件的。
obj=system_u:object_r:etc_t:s0
obj 输入栏记录了 SELinux 语境,运用此语境可以在执行时间中标注分析进程。
以上分析过的审核事件是事件所包含的所有可能位置栏的一小部分。为了列出所有事件的位置栏及解释,请参考〈第 B.1 节 “审核事件字段”〉。为了列出所有事件类型以及解释,请参考〈第 B.2 节 “审核记录类型”〉。

例 5.5. 其他的 audit.log 事件。

以下审核事件记录了成功启动的 auditd 守护程序。 ver 位置栏显示了已经开始的审核守护程序的版本。
type=DAEMON_START msg=audit(1363713609.192:5426): auditd start, ver=2.2 format=raw kernel=2.6.32-358.2.1.el6.x86_64 auid=500 pid=4979 subj=unconfined_u:system_r:auditd_t:s0 res=success
以下审核事件记录了作为 root 用户使用 UID 500 登录失败。
type=USER_AUTH msg=audit(1364475353.159:24270): user pid=3280 uid=500 auid=500 ses=1 subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023 msg='op=PAM:authentication acct="root" exe="/bin/su" hostname=? addr=? terminal=pts/0 res=failed'