デフォルトのプラグイン audit_binfile によって監査トレールが作成されます。このトレールには大量のデータが含まれる場合があります。次のセクションでは、このデータを操作する方法について説明します。
監査レコード定義を表示するには、auditrecord コマンドを使用します。この定義によって、監査イベントの監査イベント番号、監査クラス、選択マスク、およびレコード書式が提供されます。
% auditrecord -options
コマンドで生成される画面出力は、使用するオプションによって異なります (次の部分的な一覧を参照)。
–p オプションは、プログラムの監査レコード定義を表示します。
–c オプションは、監査クラスの監査レコード定義を表示します。
–a オプションを指定すると、すべての監査イベント定義が一覧表示されます。
表示された出力をファイルに出力することもできます。
詳細は、auditrecord(1M) のマニュアルページを参照してください。
使用例 31 プログラムの監査レコード定義の表示この例では、login プログラムによって生成されたすべての監査レコードの定義が表示されます。ログインプログラムには、rlogin、telnet、newgrp、および Oracle Solaris の Secure Shell 機能が含まれています。
% auditrecord -p login ... login: logout program various See login(1) event ID 6153 AUE_logout class lo (0x0000000000001000) ... newgrp program newgrp See newgrp login event ID 6212 AUE_newgrp_login class lo (0x0000000000001000) ... rlogin program /usr/sbin/login See login(1) - rlogin event ID 6155 AUE_rlogin class lo (0x0000000000001000) ... /usr/lib/ssh/sshd program /usr/lib/ssh/sshd See login - ssh event ID 6172 AUE_ssh class lo (0x0000000000001000) ... telnet login program /usr/sbin/login See login(1) - telnet event ID 6154 AUE_telnet class lo (0x0000000000001000) …使用例 32 監査クラスの監査レコード定義の表示
この例では、使用例 15で作成された pf クラス内のすべての監査レコードの定義が表示されます。
% auditrecord -c pf pfexec system call pfexec See execve(2) with pfexec enabled event ID 116 AUE_PFEXEC class pf (0x0100000000000000) header path pathname of the executable path pathname of working directory [privileges] privileges if the limit or inheritable set are changed [privileges] privileges if the limit or inheritable set are changed [process] process if ruid, euid, rgid or egid is changed exec_arguments [exec_environment] output if arge policy is set subject [use_of_privilege] return
use_of_privilege トークンは、特権が使用されている場合は常に記録されます。privileges トークンは、制限または継承可能セットが変更された場合に記録されます。process トークンは、ID が変更された場合に記録されます。これらのトークンをレコードに含めるために、ポリシーオプションは必要ありません。
使用例 33 監査レコード定義をファイルに出力するこの例では、すべての監査レコード定義を HTML 形式のファイルに出力するために、–h オプションが追加されています。この HTML ファイルをブラウザで表示する場合は、ブラウザの検索ツールを使用して特定の監査レコード定義を検索します。
% auditrecord -ah > audit.events.html
Audit Review 権利プロファイルが割り当てられている管理者として、auditreduce を使用すると、調査対象の監査レコードをフィルタリングできます。このコマンドは、入力ファイルを結合するときに、関連性の少ないレコードを除外できます。
auditreduce -option argument [optional-file]
ここで、argument はオプションで必要な特定の引数です。
次の一覧に、レコード選択オプションとそれに対応する引数の一部を示します。
argument が監査クラス (ua など) である場合に、監査クラスを選択します。
特定の日付のイベントをすべて選択します。argument の日付の形式は、yyyymmdd です。その他の日付オプション (–b や –a など) は、特定の日付の前と後のイベントを選択します。
特定のユーザーのイベント属性をすべて選択します。このオプションには、ユーザー名を指定します。もう 1 つのユーザーオプション –e は、実効ユーザー ID のイベント属性をすべて選択します。
特定のグループのイベント属性をすべて選択します。このオプションには、グループ名を指定します。
特定の監査イベントのインスタンスをすべて選択します。
オブジェクトタイプによって選択します。このオプションは、ファイル、グループ、ファイル所有者、FMRI、PID、およびその他のオブジェクトタイプによって選択するために使用します。
監査ファイルの名前。
このコマンドでは、すべて大文字のファイル選択オプションも使用されます (次の例を参照)。オプションの完全な一覧については、auditreduce(1M) のマニュアルページを参照してください。
使用例 34 監査ファイルを結合して削減するこの例では、1 か月間のログインおよびログアウトのレコードのみが監査ファイルに保持されています。この例では、現在の日付が 9 月 27 日になっています。監査トレール全体が必要になった場合は、バックアップメディアから監査トレールを復元します。–O オプションを付けると、コマンドの出力が lo.summary という名前のファイルに書き込まれます。
# cd /var/audit/audit_summary # auditreduce -O lo.summary -b 20100827 -c lo; compress *lo.summary使用例 35 ユーザー監査レコードをサマリーファイルにコピーする
この例では、特定のユーザーの名前を含む監査トレール内のレコードがマージされます。–e オプションを指定すると実効ユーザーが検索されます。–u オプションを指定すると、ログインユーザーが検索されます。–O オプションを付けると、出力が tamiko ファイルに書き込まれます。
# cd /var/audit/audit_summary # auditreduce -e tamiko -O tamiko
表示する情報をさらに絞り込むことができます。次の例では、次のようにフィルタリングされ、tamikolo というファイルに出力されます。
ユーザーのログイン時間およびログアウト時間 (–c オプションで指定)。
2013 年 9 月 7 日 (–d オプションで指定)。日付の短い形式は、yyyymmdd です。
ユーザー名 tamiko (–u オプションで指定)。
物理マシンの名前 (–M オプションで指定)。
# auditreduce -M tamiko -O tamikolo -d 20130907 -u tamiko -c lo使用例 36 選択したレコードを単一のファイルにマージする
この例では、特定の日のログインおよびログアウトレコードが監査トレールから選択されます。これらのレコードは、ターゲットファイルにマージされます。ターゲットファイルは、監査ルートディレクトリを含むファイルシステム以外のファイルシステムに書き込まれます。
# auditreduce -c lo -d 20130827 -O /var/audit/audit_summary/logins # ls /var/audit/audit_summary/*logins /var/audit/audit_summary/20130827183936.20130827232326.logins
Audit Review 権利プロファイルが割り当てられている管理者として、praudit コマンドを使用すると、バイナリ形式の監査ファイルの内容を表示できます。
# praudit options
次の一覧に、オプションの一部を示します。これらのオプションのいずれかを –l オプションと組み合わせると、各レコードを 1 行で表示できます。
監査レコードを短い形式 (1 行ごとに 1 トークン) で表示します。
監査レコードを RAW 形式 (1 行ごとに 1 トークン) で表示します。
監査レコードを XML 形式 (1 行ごとに 1 トークン) で表示します。このオプションは、さらに処理する場合に役立ちます。
auditreduce コマンドから praudit 出力をパイプして、auditreduce コマンドと praudit コマンドを同時に使用することもできます。
使用例 37 監査レコードを短い形式で表示するこの例では、auditreduce コマンドで抽出されたログインおよびログアウトのイベントが短い形式で表示されています。
# auditreduce -c lo | praudit -s header,69,2,AUE_screenlock,,mach1,2010-10-14 08:02:56.348 -07:00 subject,jdoe,root,staff,jdoe,staff,856,50036632,82 0 mach1 return,success,0 sequence,1298使用例 38 監査レコードを RAW 形式で表示する
この例では、auditreduce コマンドで抽出されたログインおよびログアウトのイベントが RAW 形式で表示されています。
# auditreduce -c lo | praudit -r 21,69,2,6222,0x0000,10.132.136.45,1287070091,698391050 36,26700,0,10,26700,10,856,50036632,82 0 10.132.136.45 39,0,0 47,1298使用例 39 監査レコードを XML 形式に変換する
この例では、監査レコードを XML 形式に変換します。
# praudit -x 20100827183214.20100827215318.logins > 20100827.logins.xml
同様に、auditreduce コマンドでフィルタリングされた監査レコードを XML 形式で表示できます。
# auditreduce -c lo | praudit -x <record version="2" event="screenlock - unlock" host="mach1" iso8601="2010-10-14 08:28:11.698 -07:00"> <subject audit-uid="jdoe" uid="root" gid="staff" ruid="jdoe rgid="staff" pid="856" sid="50036632" tid="82 0 mach1"/> <return errval="success" retval="0"/> <sequence seq-num="1298"/> </record>
スクリプトを使えば、XML ファイルの内容を操作して目的の情報を抽出できます。
使用例 40 XML 形式の監査レコードをブラウザで読み取り可能にするxsltproc ツールを使用して XML ファイルのレコードを再フォーマットすると、任意のブラウザで読み取り可能にすることができます。このツールを使用すると、スタイルシートの定義がファイルの内容に適用されます。再フォーマットされた内容を別のファイルに挿入するには、次のように入力します。
# auditreduce -c lo | praudit -x | xsltproc - > logins.html
ブラウザでは、logins.html の内容が次のような形式で表示されます。
Audit Trail Data
File: time: 2013-11-04 12:54:28.000 -08:00
Event: login - local
time: 2013-11-04 12:54:28.418 -08:00 vers: 2 mod: host: host
SUBJECT audit-uid: jdoe uid: jdoe gid: staff ruid: jdoe rgid: staff
pid: 1534 sid: 3583012893 tid: 0 0 host
RETURN errval: success retval: 0
Event: connect to RAD
time: 2013-11-04 12:54:52.029 -08:00 vers: 2 mod: host: host
SUBJECT audit-uid: jdoe uid: jdoe gid: staff ruid: jdoe rgid: staff
pid: 1835 sid: 3583012893 tid: 0 0 host
RETURN errval: success retval: 0
Event: role login
time: 2013-11-08 08:42:52.286 -08:00 vers: 2 mod: host: host
SUBJECT audit-uid: jdoe uid: root gid: root ruid: root rgid: root
pid: 4265 sid: 3583012893 tid: 0 0 host
RETURN errval: success retval: 0
Event: role logout
time: 2013-11-08 08:43:37.125 -08:00 vers: 2 mod: host: host
SUBJECT audit-uid: jdoe uid: root gid: root ruid: root rgid: root
pid: 4265 sid: 3583012893 tid: 0 0 host
RETURN errval: success retval: 0
Event: login - ssh
time: 2013-12-23 12:24:37.292 -08:00 vers: 2 mod: host: host
SUBJECT audit-uid: jsmith uid: jsmith gid: staff ruid: jsmith rgid: staff
pid: 2002 sid: 39351741 tid: 14632 202240 host.example.com
RETURN errval: success retval: 0
Event: role login
time: 2013-12-23 12:25:07.345 -08:00 vers: 2 mod: fe host: host
SUBJECT audit-uid: jsmith uid: root gid: root ruid: root rgid: root
pid: 2023 sid: 39351741 tid: 14632 202240 host.example.com
RETURN errval: failure retval: Permission denied
Event: su
time: 2013-12-23 17:19:24.031 -08:00 vers: 2 mod: na host: host
RETURN errval: success retval: 0
Event: su logout
time: 2013-12-23 17:19:24.362 -08:00 vers: 2 mod: na host: host
RETURN errval: success retval: 0
Event: login - ssh
time: 2013-12-23 17:27:21.306 -08:00 vers: 2 mod: host: host
SUBJECT audit-uid: jsmith uid: jsmith gid: staff ruid: jsmith rgid: staff
pid: 2583 sid: 3401970889 tid: 13861 5632 host.example.com
RETURN errval: success retval: 0
Event: role login
time: 2013-12-23 17:27:28.361 -08:00 vers: 2 mod: host: host
SUBJECT audit-uid: jsmith uid: root gid: root ruid: root rgid: root
pid: 2593 sid: 3401970889 tid: 13861 5632 host.example.com
RETURN errval: success retval: 0
Event: role logout
time: 2013-12-23 17:30:39.029 -08:00 vers: 2 mod: host: host
SUBJECT audit-uid: jsmith uid: root gid: root ruid: root rgid: root
pid: 2593 sid: 3401970889 tid: 13861 5632 host.example.com
RETURN errval: success retval: 0
そのほかのイベント
使用例 41 pfedit レコードのみを表示する
フィルタを使用すると、監査トレールから特定のレコードのみを抽出して、表示できます。この例では、pfedit コマンドを使用して取得されたレコードがフィルタリングされています。サマリーファイルは 20130827183936.20130827232326.logins であるとします。pfedit コマンドを使用すると、AUE_admin_edit イベントが生成されます。したがって、pfedit レコードを抽出するには、次のコマンドを実行します。
auditreduce -m AUE_admin_edit 20130827183936.20130827232326.logins | praudit使用例 42 監査トレール全体を印刷する
印刷コマンドへのパイプを使用すると、監査トレール全体の出力がプリンタに送られます。セキュリティー上の理由から、プリンタへのアクセスは制限されています。
# auditreduce | praudit | lp -d example.protected.printer使用例 43 特定の監査ファイルを表示する
この例では、サマリーログインファイルを端末ウィンドウで調べます。
# cd /var/audit/audit_summary/logins # praudit 20100827183936.20100827232326.logins | more使用例 44 praudit 出力をスクリプトで処理する
praudit コマンドの出力は、必要に応じてテキストとして操作できます。たとえば、auditreduce コマンドでは選択できないレコードを選択することがあります。単純なシェルスクリプトを使用すると、praudit コマンドの出力を処理できます。次のサンプルスクリプトは、1 つの監査レコードを 1 行にまとめ、ユーザーが指定した文字列を検索したあと、監査ファイルを元の形式に戻します。
#!/bin/sh # ## This script takes an argument of a user-specified string. # The sed command prefixes the header tokens with Control-A # The first tr command puts the audit tokens for one record # onto one line while preserving the line breaks as Control-A # praudit | sed -e '1,2d' -e '$s/^file.*$//' -e 's/^header/^aheader/' \\ | tr '\\012\\001' '\\002\\012' \\ | grep "$1" \\ ユーザーが指定した文字列を検索します | tr '\\002' '\\012' 元の改行区切りを復元します
スクリプトの ^a は、^ と a という 2 つの文字ではなく、Control-A です。この接頭辞によって、header トークンが、テキストとして表示される header という文字列と区別されます。
次のようなメッセージは、praudit コマンドを使用するために必要な権限がないことを示しています。
praudit: Can't assign 20090408164827.20090408171614.sys1.1 to stdin.
プロファイルシェルで praudit コマンドを実行します。Audit Review 権利プロファイルが割り当てられている管理者になる必要があります。詳細は、Oracle Solaris 11.3 でのユーザーとプロセスのセキュリティー保護 の 割り当てられている管理権利の使用を参照してください。