如何配置 SELinux 在审核日志的每个条目中打印日期和时间?

如何配置 SELinux 在审核日志的每个条目中打印日期和时间?

我使用的是 CentOS 5.5,默认情况下我的/var/log/audit/audit.log外观如下:

type=USER_AUTH msg=audit(1331897657.359:8435): user pid=15610 uid=0 auid=4294967295 subj=system_u:system_r:unconfined_t:s0-s0:c0.c1023 msg='PAM: authentication acct="?" : exe="/usr/sbin/sshd" (hostname=c165-130.i02-2.onvol.net, addr=213.165.165.130, terminal=ssh res=failed)'
type=USER_LOGIN msg=audit(1331897657.360:8436): user pid=15610 uid=0 auid=4294967295 subj=system_u:system_r:unconfined_t:s0-s0:c0.c1023 msg='acct="oracle": exe="/usr/sbin/sshd" (hostname=?, addr=213.165.165.130, terminal=sshd res=failed)'

确切地说,日志条目是在没有时间戳的情况下写入的,这使得故障排除变得更加困难。有一个可用的手册页

 man auditd.conf 

但在这个主题中它只说了:

log_format
     The log format describes how the information should be stored on
     disk.  There  are  2 options: raw and nolog.  If set to RAW, the
     audit records will be stored in a format exactly as  the  kernel
     sends it. If this option is set to NOLOG then all audit informa-
     tion is discarded instead of writing to disk. This mode does not
     affect data sent to the audit event dispatcher.

如何将其配置为在每个条目的开头打印日期/时间?

答案1

虽然没有任何选项可以设置来使auditd日志具有人类可解析的日期格式,但如果您使用“ausearch”命令来搜索审计日志,则有一个-i选项可以生成人类可读的(嗯,也许稍微更具人类可读性)输出。

例如,如果我ausearch -ts today在新启动的系统上运行,我会看到:

# ausearch -ts today
----
time->Mon Mar 19 23:07:00 2012
type=DAEMON_START msg=audit(1332212820.421:3834): auditd start, ver=2.1.3 format=raw kernel=3.2.10-3.fc16.x86_64 auid=4294967295 pid=6438 subj=system_u:system_r:auditd_t:s0 res=success

但如果我运行ausearch -ts today -i,我会看到:

# ausearch -ts today -i
----
type=DAEMON_START msg=audit(03/19/2012 23:07:00.421:3834) : auditd start, ver=2.1.3 format=raw kernel=3.2.10-3.fc16.x86_64 auid=unset pid=6438 subj=system_u:system_r:auditd_t:s0 res=success 

那对你有用吗? ausearch无论如何,您可能会用它来查看审计记录。 -i还可以执行 uid->用户名查找和其他解析等操作。 编辑:从上面可以看出我运行的是Fedora 16,但同样ausearch -i适用于RHEL5。

答案2

开头的长数字是时间戳:自纪元以来的秒数。几分钟前,我得到:

[0 1128 18:09:57] ~ % date +%s; date
1331917801
Fri Mar 16 18:10:01 CET 2012

要将数字转换为更具可读性的内容,请尝试

[0 1133 18:12:41] ~ % date -d @1331897657
Fri Mar 16 12:34:17 CET 2012

(所以显然,你需要“常用sed技巧”来剪掉亚秒部分。)

我手边没有启用 SE 的机器,但也许sealert -a也可以将时间戳解析为人类可读的内容?

答案3

ausearch -i 

来自帮助:

-i,--interpret    Interpret results to be human readable

这不是正确的答案杰斯比林斯写道。

无需运行 tail -f !

PS 该死的堆栈点!这就是为什么我无法发表评论或投票的原因。

答案4

tail -f /var/log/audit/audit.log | ausearch -i

相关内容