
私は 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 -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
1 秒未満の部分を切り取るには、「通常のトリック」が必要になるようです。)
手元に 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