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
-w /etc/ssh/sshd_config -p warx -k sshd_config
auditd デーモンが実行している場合は、以下のコマンドを実行して Audit ログファイルに新しいイベントを作成します。
cat /etc/ssh/sshd_config
~]# 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=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=SYSCALLtypeフィールドには、レコードのタイプが含まれます。この例では、SYSCALL値は、カーネルへのシステムコールによりこのレコードがトリガーされたことを示しています。可能なすべてのタイプ値とその説明は、を参照してください 「監査レコードタイプ」。msg=audit(1364481363.243:24287):msgフィールドは以下を記録します。- フォーム内のレコードのタイムスタンプと一意の ID
audit(time_stamp:ID)。複数のレコードが同じ Audit イベントの一部として生成されている場合は、同じタイムスタンプおよび ID を共有できます。 - カーネルまたはユーザー空間アプリケーションが提供するさまざまなイベント固有の
name=valueペア。
arch=c000003earchフィールドには、システムの CPU アーキテクチャーに関する情報が含まれます。値は 16 進数表記c000003eでエンコードされます。ausearch コマンドで Audit レコードを検索する場合は、-iまたは--interpretオプションを使用して、16 進数の値を人間が判読できる値に自動的に変換します。このc000003e値はとして解釈されx86_64ます。syscall=2syscallフィールドは、カーネルに送信されたシステムコールのタイプを記録します。の値は2、/usr/include/asm/unistd_64.hファイルで人間が判読できる値と一致します。この場合、2はopenシステムコールです。ausyscall ユーティリティーでは、システムコール番号を、人間が判読できる値に変換できます。ausyscall --dump コマンドを使用して、システムコールの一覧とその数字を表示します。詳細はを参照してください。 ausyscall(8) の man ページ。success=nosuccessフィールドは、その特定のイベントで記録されたシステムコールが成功したかどうかを記録します。この例では、呼び出しが成功しませんでした。exit=-13exitフィールドには、システムコールが返した終了コードを指定する値が含まれます。この値は、システムコールにより異なります。この値は、次のコマンドで人間が判読できるものに変換できます ausearch --interpret --exit -13 (Audit ログに終了コードで失敗したイベントが含まれていることを前提とします-13)。a0=7fffd19c5592,a1=0,a2=7fffd19c5592,a3=aa0toa3フィールドは、このイベントにおけるシステムコールの最初の 4 つの引数(16 進数表記でエンコード)を記録します。この引数は、使用されるシステムコールにより異なります。ausearch ユーティリティーで解釈できます。items=1itemsフィールドには、イベント内のパスレコードの数が含まれます。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=500uidフィールドは、解析しているプロセスを開始したユーザーのユーザー ID を記録します。ユーザー ID は、次のコマンドでユーザー名に変換できます ausearch -i --uid UID。ここでは、500はユーザーのユーザー ID ですshadowman。gid=500gidフィールドは、解析しているプロセスを開始したユーザーのグループ ID を記録します。euid=500euidフィールドは、解析しているプロセスを開始したユーザーの実効ユーザー ID を記録します。suid=500suidフィールドは、解析しているプロセスを開始したユーザーのセットユーザー ID を記録します。fsuid=500fsuidフィールドは、解析しているプロセスを開始したユーザーのファイルシステムユーザー ID を記録します。egid=500egidフィールドは、解析しているプロセスを開始したユーザーの実効グループ ID を記録します。sgid=500sgidフィールドは、解析しているプロセスを開始したユーザーのセットグループ ID を記録します。fsgid=500fsgidフィールドは、解析しているプロセスを開始したユーザーのファイルシステムグループ ID を記録します。tty=pts0ttyフィールドは、解析しているプロセスが開始したターミナルを記録します。ses=1sesフィールドは、解析しているプロセスが開始したセッションのセッション ID を記録します。comm="cat"commフィールドは、解析しているプロセスを開始するために使用したコマンドのコマンドライン名を記録します。この場合、cat コマンドを使用してこの Audit イベントをトリガーしました。exe="/bin/cat"exeフィールドは、解析しているプロセスを開始するために使用した実行可能ファイルへのパスを記録します。subj=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023subjフィールドは、解析しているプロセスの実行時にラベル付けされた 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=0itemフィールドは、SYSCALLタイプレコードで参照されるアイテムの合計数のうち、現在のレコードがどのアイテムであるかを示します。この数はゼロベースで、の値は最初の項目であることを0意味します。name="/etc/ssh/sshd_config"nameフィールドは、システムコールに引数として渡されたファイルまたはディレクトリーのパスを記録します。この場合、これは/etc/ssh/sshd_configファイルです。inode=409248inodeフィールドには、このイベントで記録されたファイルまたはディレクトリーに関連する inode 番号が含まれます。以下のコマンドは、409248inode 番号に関連付けられたファイルまたはディレクトリーを表示します。find / -inum 409248 -print
~]# find / -inum 409248 -print /etc/ssh/sshd_configCopy to Clipboard Copied! Toggle word wrap Toggle overflow dev=fd:00devフィールドは、このイベントで記録されたファイルまたはディレクトリーを含むデバイスのマイナー ID とメジャー ID を指定します。この場合、値は/dev/fd/0デバイスを表します。mode=0100600modeフィールドは、ファイルまたはディレクトリーのパーミッションを数値表記で記録します。この場合、はと解釈0100600できます。つまり-rw-------、root ユーザーのみが/etc/ssh/sshd_configファイルに読み取りおよび書き込み権限が付与されます。ouid=0ouidフィールドは、オブジェクトの所有者のユーザー ID を記録します。ogid=0ogidフィールドは、オブジェクトの所有者のグループ ID を記録します。rdev=00:00rdevフィールドには、特定ファイルにのみ記録されたデバイス識別子が含まれます。ここでは、記録されたファイルは通常のファイルであるため、このフィールドは使用されません。obj=system_u:object_r:etc_t:s0objフィールドは、実行時に、記録されたファイルまたはディレクトリーにラベル付けする 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
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'
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'