この節では、auditreduce コマンドと praudit コマンドを使ってデータの選択と併合を行う一般的な方法について少し説明します。この他の使い方については、auditreduce(1M) のマニュアルページを参照してください。
auditreduce コマンドと praudit コマンドを実行する上での前提条件は次のとおりです。
監査確認プロファイルを含む管理役割が付与されていること。管理役割には、デフォルトでこのプロファイルが含まれます。
管理役割の admin_high
ワークスペースを使用していること
admin_high
ワークスペースを作成する方法については、第 2 章「監査の設定」の 「Admin_High ワークスペースを作成する方法」を参照してください。
端末エミュレータウィンドウを起動していること
分散システムの監査トレールをアクセスする方法は次のとおりです。
監査管理サーバーで auditreduce コマンドを実行する
praudit コマンドを使うと、監査レコードを対話形式で表示したり、ごく基本的なレポートを作成することができます。ファイルが複数ある場合、入力は auditreduce からパイプされます。
監査ファイルを praudit コマンドのファイル引数として指定します。
$ praudit 19970401000000.19970601000000.grebe |
標準出力に監査トークンが 1 行ずつ表示されます。
監査ファイルを praudit -l コマンドのファイル引数として指定します。
$ praudit -l 19970401000000.19970601000000.grebe |
標準出力に監査レコードが 1 行に 1 件ずつ表示されます。
tail(1) コマンドを使って、現在アクティブな監査ファイルに書き込まれている内容を確認します。
$ praudit | tail -40 19970401000000.not_terminated.grebe |
記録された最新のトークンが 40 件まで標準出力に表示されます。
複数の監査ファイルを日付順で端末ウィンドウに表示するためには、auditreduce の出力を praudit にパイプします。
$ auditreduce 19970413000000.19970413235959.willet ¥ 19970413000000.19970413235959.grebe | praudit |
監査トレール全体を端末ウィンドウに表示するためには、auditreduce の出力を praudit にパイプします。
$ auditreduce | praudit |
auditreduce コマンドにオプションをつけない場合、開いた状態の監査ファイルには影響はありません。
auditreduce を praudit にパイプし、さらに lp にパイプすると、監査の終了したすべての監査ファイルの出力がプリンタへ送られます。
$ auditreduce | praudit | lp |
Trusted Solaris 環境では、admin_high
の印刷ジョブを受け入れるようにプリンタを設定しておきます。
auditreduce コマンドに -d オプションを付けると、指定した 24 時間内に集められた監査情報を確認できます。
次の例では、セキュリティ管理者は lo メッセージクラスを指定して、doris という名前のユーザーが 1997 年 4 月 13 日 のログインした時刻とログアウトした時刻を確認しています。日付の短い書式は yymmdd です。長い書式は、auditreduce(1M) のマニュアルページで説明します。
$ auditreduce -d 970413 -u doris -c lo | praudit |
auditreduce コマンドを praudit から lp へパイプすると、選択した出力がプリンタへ送られます。
Trusted Solaris 環境では、admin_high
の印刷ジョブを受け入れるようにプリンタを設定しておきます。
$ auditreduce -d 970413 -u doris -c lo | praudit | lp |
この例では、特定の日のログインおよびログアウトメッセージが 1 つのファイルにまとめられます。ファイルは、通常の監査ルートディレクトリ以外のディレクトリに書き込まれます。
$ auditreduce -c lo -d 970413 ¥ -O /usr/audit_summary/logins |
-O オプションによって、/usr/audit_summary ディレクトリに監査ファイルが作成されます。ファイル名は開始時刻と終了時刻がそれぞれ 14 文字で表示され、接尾辞 logins が付きます。
/usr/audit_summary/19970413000000.19970413235959.logins
日付と時間を指定する -b オプションや -a オプションを使うと、特定の日付や時刻の前後のレコードを指定できます。指定日は yyyymmdd00:00:00 から始まり yyyymmdd23:59:59 で終わります。指定日には、年、月、日、時間、分、秒の 6 つのパラメータがあります。年のパラメーターの最初の 2 桁 (19) は推定できるので、指定する必要はありません。
auditreduce -a コマンドに次の画面例のように日付を付けると、1997 年 7 月 15 日の午前 0 時以降に作成された全監査レコードが praudit によって標準出力に送られます。
$ auditreduce -a 97071500:00:00 | praudit |
-a を指定しない場合、auditreduce はデフォルトの 1970 年 1 月 1 日の 00:00:00 となります。
auditreduce -b コマンドに上の例と同じ日付を付けると、1997 年 7 月 15 日の午前 0 時以前に作成された全監査レコードが praudit によって標準出力に送られます。
$ auditreduce -b 97071500:00:00 | praudit |
-b を指定しない場合、auditreduce はデフォルトの現在日時 (グリニッジ平均時) となります。-d オプションでは、「ログインおよびログアウトメッセージを 1 つのファイルにコピーする方法」に示したように、特定の 24 時間を選択できます。
auditreduce (-m オプション) に続けてメッセージの種類を指定し、特定の監査イベントを検索します。
-m オプションは、数値のメッセージ識別子、AUE_xxxxx などのイベント名のどちらでも受け付けます。次の画面例では、監査トレール内のカーネルレベルのログインイベントをすべて検索し、標準出力に表示します。
$ auditreduce -m AUE_LOGIN | praudit |
auditreduce コマンドを使用すると、この種の組み合わせと削除を自動で実行できますが (auditreduce(1M) のマニュアルページの -C オプションと -D オプションを参照)、find コマンドを使うなどしてファイルを手動で選択し、auditreduce コマンドは指定されたファイルのセットを組み合せるために利用するほうが簡単です。
auditreduce コマンドの引数として複数の監査ファイルを入力します。
次の例では、午前 0 時直前を起点とする繰り返しジョブによって 2 日前の監査ファイルが合成されます。ファイルの最後の時刻はジョブの終了時刻であり、ここではグリニッジ平均時の午前 0 時直前です。
$ auditreduce 19970413000000.19970413235959.grebe ¥ 19970413000000.19970413235959.willet ¥ 19970413000000.19970413235959.sora $ ls *audubon 19970413000000.19970414235959.audubon |
入力ファイルを削除し、出力ファイルを管理サーバーの監査ルートディレクトリへ移動します。
この例では auditreduce(1M) コマンドは監査管理サーバー audubon で実行され、その監査ルートディレクトリに置かれます。その後 auditreduce を呼び出すとこのディレクトリにファイルが配置されます。
$ rm /etc/security/tsol/grebe/files/19970413000000.19970413235959.grebe $ rm /etc/security/tsol/willet/files/19970413000000.19970413235959.willet $ rm /etc/security/tsol/sora/files/19970413000000.19970413235959.sora $ mv 19970413000000.19970414235959.audubon /etc/security/audit/audubon/files/ |
auditreduce プログラムでは、入力ファイルを組み合わせる際に重要度の低いファイルを削除することによって、出力ファイル内のレコード数を減らすこともできます。
完全な監査トレールが必要になった場合はバックアップテープから復元できるので、auditreduce コマンドで、1 ヶ月以上前の監査ファイルの中からログインイベントとログアウトイベントを除く全イベントを削除します。次の例では、1997 年 4 月の監査レコードだけが選択されます。
$ auditreduce -m AUE_LOGIN -a 19970401000000 ¥ -b 19970501000000 ¥ -O /usr/audit_summary/logins_april97 |
出力されるのは、1997 年 4 月のログインとログアウトのレコードだけを含むやや小さいファイルです。ここで終了時刻は、auditreduce コマンドを実行した日付け (グリニッジ平均時の 1997 年 6 月 1 日) であり、レコードが最後に併合された日付けではありません。コマンド行には、ディレクトリ名とともにファイル接尾辞 logins_april97 を指定しています。
/usr/audit_summary/19970401000000.19970601000000.logins_april97
praudit コマンドによって監査トークンが表示されるとき、データフィールドはコンマで区切られていますが、これを時刻表示などの元々フィールドに含まれているコンマと区別することはできません。
praudit(1M) に付ける -d オプションの値として Tab キーを押します。
$ praudit -d"<press Tab key>" 19970413120429.19970413180433.grebe |
-d オプション (ここでは Tab キー) の間にスペースはありません。区切り文字は二重引用符でくくります。区切り文字は 4 文字まで使用できます。
監査トークンは、デフォルトでは改行文字で区切られています。-l オプションによって監査レコードを 1 行ずつ表示する場合には、監査トークンでも監査フィールドと同じ区切り文字を使います。次の入力例では、監査トークンを監査フィールド同様にタブで区切ります。
$ praudit -l -d"<press Tab key>" 19970413120429.19970413180433.grebe |
praudit の出力を sed や awk で 処理したり、バイナリ形式の監査レコードを変換して処理するプログラムを作成すると、より高度な画面出力やレポートを得ることができます。
場合によっては、 praudit の出力をテキストの行として扱うと便利です。たとえば、auditreduce で実行できない選択を行う場合などに、簡単なシェルスクリプトで praudit の出力を処理することができます。次の例は praudit_grep といいます。
#!/bin/sh praudit | sed -e '1,2d' -e '$s/^file.*$//' -e 's/^header/^aheader/' ¥¥ | tr '¥¥012¥¥001' '¥¥002¥¥012' ¥¥ | grep "$1" ¥¥ | tr '¥¥002' '¥¥012'
このスクリプト例では、header トークンの前に Control-A が置かれています。(^a は Control-A を表しています。^ と a の 2 文字ではありません。こうした接頭辞は、テキストとして現れる文字列ヘッダーとヘッダートークンを区別するために必要です。) このスクリプトは、Control-A で行ブレークを保持しながらレコードの全トークンを 1 行にまとめ、grep コマンドを実行して、もとの改行文字を修復します。
Trusted Solaris 環境でスクリプトを実行するには、次の条件を満たしている必要があります。
スクリプトが admin_low
ディレクトリにあり、プロファイルマネージャで表示できること
セキュリティ管理者が、Custom Admin Role などの適切なプロファイルにスクリプトを追加し、「強制された特権」を与えていること
セキュリティ管理者が、役割のプロファイルにないスクリプトのコマンドを適切なプロファイルに追加していること
管理役割が書き込みアクセス権を持つディレクトリの admin_high
プロファイルシェルでスクリプトを実行すること