7.6. Audit ログファイルについて
デフォルトでは、Audit システムはログエントリーを
/var/log/audit/audit.log
ファイルに保存します。ログローテーションが有効になると、ローテーションされた audit.log
ファイルは同じディレクトリーに保存されます。
以下の Audit ルールは、
/etc/ssh/sshd_config
ファイルの読み取りまたは修正の試行をすべてログに記録します。
-w /etc/ssh/sshd_config -p warx -k sshd_config
auditd
デーモンが実行している場合は、以下のコマンドを実行して Audit ログファイルに新しいイベントを作成します。
~]# 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
上記のイベントは、3 つのレコード(
type=
キーワードで始まる)で構成されており、タイムスタンプとシリアル番号を共有します。各レコードは、空白またはコンマで区切られた複数の name=value
ペアで構成されます。上記のイベントの詳細な分析は以下のようになります。
1 つ目のレコード
type=SYSCALL
type
フィールドには、レコードのタイプが含まれます。この例では、SYSCALL
値は、カーネルへのシステムコールによりこのレコードがトリガーされたことを示しています。可能なすべてのタイプ値とその説明は、を参照してください 「監査レコードタイプ」。msg=audit(1364481363.243:24287):
msg
フィールドは以下を記録します。- フォーム内のレコードのタイムスタンプと一意の ID
audit(time_stamp:ID)
。複数のレコードが同じ Audit イベントの一部として生成されている場合は、同じタイムスタンプおよび ID を共有できます。 - カーネルまたはユーザー空間アプリケーションが提供するさまざまなイベント固有の
name=value
ペア。
arch=c000003e
arch
フィールドには、システムの CPU アーキテクチャーに関する情報が含まれます。値は 16 進数表記c000003e
でエンコードされます。ausearch コマンドで Audit レコードを検索する場合は、-i
または--interpret
オプションを使用して、16 進数の値を人間が判読できる値に自動的に変換します。このc000003e
値はとして解釈されx86_64
ます。syscall=2
syscall
フィールドは、カーネルに送信されたシステムコールのタイプを記録します。の値は2
、/usr/include/asm/unistd_64.h
ファイルで人間が判読できる値と一致します。この場合、2
はopen
システムコールです。ausyscall ユーティリティーでは、システムコール番号を、人間が判読できる値に変換できます。ausyscall --dump コマンドを使用して、システムコールの一覧とその数字を表示します。詳細はを参照してください。 ausyscall(8) の man ページ。success=no
success
フィールドは、その特定のイベントで記録されたシステムコールが成功したかどうかを記録します。この例では、呼び出しが成功しませんでした。exit=-13
exit
フィールドには、システムコールが返した終了コードを指定する値が含まれます。この値は、システムコールにより異なります。この値は、次のコマンドで人間が判読できるものに変換できます ausearch --interpret --exit -13 (Audit ログに終了コードで失敗したイベントが含まれていることを前提とします-13
)。a0=7fffd19c5592
,a1=0
,a2=7fffd19c5592
,a3=a
a0
toa3
フィールドは、このイベントにおけるシステムコールの最初の 4 つの引数(16 進数表記でエンコード)を記録します。この引数は、使用されるシステムコールにより異なります。ausearch ユーティリティーで解釈できます。items=1
items
フィールドには、イベント内のパスレコードの数が含まれます。ppid=2686
- この
ppid
フィールドは、親プロセス ID(PPID)を記録します。この場合、2686
はbash
プロセスの PPID です。 pid=3538
- この
pid
フィールドは、プロセス ID(PID)を記録します。この例で3538
は、はcat
プロセスの PID です。 auid=500
- この
auid
フィールドは、loginuid である Audit ユーザー ID を記録します。この ID は、ログイン時にユーザーに割り当てられ、ユーザーのアイデンティティーが変更される場合でも(たとえば、su - john コマンドでユーザーアカウントを切り替えることで)すべてのプロセスによって継承されます。 uid=500
uid
フィールドは、解析しているプロセスを開始したユーザーのユーザー ID を記録します。ユーザー ID は、次のコマンドでユーザー名に変換できます ausearch -i --uid UID。ここでは、500
はユーザーのユーザー ID ですshadowman
。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 コマンドを使用してこの Audit イベントをトリガーしました。exe="/bin/cat"
exe
フィールドは、解析しているプロセスを開始するために使用した実行可能ファイルへのパスを記録します。subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
subj
フィールドは、解析しているプロセスの実行時にラベル付けされた SELinux コンテキストを記録します。key="sshd_config"
key
フィールドは、Audit ログでこのイベントを生成したルールに関連付けられた管理者定義の文字列を記録します。
2 つ目のレコード
type=CWD
- 2 つ目のレコードでは、
type
フィールドの値は、CWD
現在の作業ディレクトリーです。このタイプは、最初のレコードで指定されたシステムコールを開始したプロセスの作業ディレクトリーを記録するために使用されます。この記録の目的は、相対パスが関連する PATH レコードにキャプチャーされた場合に、現在のプロセスの位置を記録することです。これにより、絶対パスを再構築できます。 msg=audit(1364481363.243:24287)
msg
フィールドは、最初のレコードと同じタイムスタンプと ID の値を保持します。cwd="/home/shadowman"
cwd
フィールドには、システムコールが開始したディレクトリーへのパスが含まれます。
3 つ目のレコード
type=PATH
- 3 つ目のレコードでは、
type
フィールドの値はですPATH
。Audit イベントには、システムコールに引数として渡されたすべてのパスのPATH
タイプのレコードが含まれます。この Audit イベントでは、引数として 1 つのパス(/etc/ssh/sshd_config
)だけが使用されていました。 msg=audit(1364481363.243:24287):
msg
フィールドは、1 番目と 2 つ目のレコードと同じタイムスタンプと ID の値を保持します。item=0
item
フィールドは、SYSCALL
タイプレコードで参照されるアイテムの合計数のうち、現在のレコードがどのアイテムであるかを示します。この数はゼロベースで、の値は最初の項目であることを0
意味します。name="/etc/ssh/sshd_config"
name
フィールドは、システムコールに引数として渡されたファイルまたはディレクトリーのパスを記録します。この場合、これは/etc/ssh/sshd_config
ファイルです。inode=409248
inode
フィールドには、このイベントで記録されたファイルまたはディレクトリーに関連する inode 番号が含まれます。以下のコマンドは、409248
inode 番号に関連付けられたファイルまたはディレクトリーを表示します。~]# find / -inum 409248 -print /etc/ssh/sshd_config
dev=fd:00
dev
フィールドは、このイベントで記録されたファイルまたはディレクトリーを含むデバイスのマイナー ID とメジャー ID を指定します。この場合、値は/dev/fd/0
デバイスを表します。mode=0100600
mode
フィールドは、ファイルまたはディレクトリーのパーミッションを数値表記で記録します。この場合、はと解釈0100600
できます。つまり-rw-------
、root ユーザーのみが/etc/ssh/sshd_config
ファイルに読み取りおよび書き込み権限が付与されます。ouid=0
ouid
フィールドは、オブジェクトの所有者のユーザー ID を記録します。ogid=0
ogid
フィールドは、オブジェクトの所有者のグループ ID を記録します。rdev=00:00
rdev
フィールドには、特定ファイルにのみ記録されたデバイス識別子が含まれます。ここでは、記録されたファイルは通常のファイルであるため、このフィールドは使用されません。obj=system_u:object_r:etc_t:s0
obj
フィールドは、実行時に、記録されたファイルまたはディレクトリーにラベル付けする SELinux コンテキストを記録します。
上記で分析した Audit イベントには、イベントに含まれる可能性のあるすべてのフィールドのサブセットのみが含まれます。すべてのイベントフィールドとその説明は、を参照してください 「監査イベントフィールド」。すべてのイベントタイプとその説明は、を参照してください 「監査レコードタイプ」。
例7.5 追加の audit.log
イベント
以下の Audit イベントは、
auditd
デーモンの起動に成功したことを示しています。ver
フィールドは、開始した Audit デーモンのバージョンを表示します。
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
以下の Audit イベントは、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'