監査ログの各エントリに日付と時刻を印刷するように 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

人間が解析可能な日付形式で監査ログを作成するために設定できるオプションはありませんが、監査ログを検索するために「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おそらく、監査レコードを確認するために使用するものでしょう。uid- -i>ユーザー名の検索やその他の解決なども行います。 編集: 上記から、Fedora 16 を実行していることがわかりますが、ausearch -iRHEL5 にも同じことが当てはまります。

答え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

(つまり、sed1 秒未満の部分を切り取るには、「通常のトリック」が必要になるようです。)

手元に SE 対応マシンはありませんが、sealert -aタイムスタンプを人間が読める形式に解析することもできるでしょうか?

答え3

ausearch -i 

ヘルプから:

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

それは正しい答えですjsbillings書きました。

tail -f を実行する必要はありません。

PS スタックポイントがダメだ!だからコメントもアップ投票もできなかったんだ。

答え4

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

関連情報