Trusted Solaris の監査管理

auditreduce コマンドと praudit コマンドの使い方

この節では、auditreduce コマンドと praudit コマンドを使ってデータの選択と併合を行う一般的な方法について少し説明します。この他の使い方については、auditreduce(1M) のマニュアルページを参照してください。

auditreduce コマンドと praudit コマンドを実行する上での前提条件は次のとおりです。

分散システムの監査トレールをアクセスする方法は次のとおりです。

監査終了後の監査ファイルを読む方法

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 件まで標準出力に表示されます。

複数の監査ファイルを 1 つの監査ファイルとして表示する方法

    複数の監査ファイルを日付順で端末ウィンドウに表示するためには、auditreduce の出力を praudit にパイプします。


    $ auditreduce 19970413000000.19970413235959.willet ¥
    19970413000000.19970413235959.grebe | praudit 
    

    監査トレール全体を端末ウィンドウに表示するためには、auditreduce の出力を praudit にパイプします。


    $ auditreduce | praudit
    

    注 -

    auditreduce コマンドにオプションをつけない場合、開いた状態の監査ファイルには影響はありません。


監査ログを出力する方法

    prauditlp にパイプすると、1 つのファイルの出力がプリンタへ送られます。


    $ praudit 19970413000000.19970413235959.audubon | lp
    

    auditreducepraudit にパイプし、さらに lp にパイプすると、監査の終了したすべての監査ファイルの出力がプリンタへ送られます。


    $ auditreduce | praudit | lp
    

    注 -

    Trusted Solaris 環境では、admin_high の印刷ジョブを受け入れるようにプリンタを設定しておきます。


選択した 1 日のユーザーのアクティビティを表示する方法

    auditreduce コマンドに -d オプションを付けると、指定した 24 時間内に集められた監査情報を確認できます。

    次の例では、セキュリティ管理者は lo メッセージクラスを指定して、doris という名前のユーザーが 1997 年 4 月 13 日 のログインした時刻とログアウトした時刻を確認しています。日付の短い書式は yymmdd です。長い書式は、auditreduce(1M) のマニュアルページで説明します。


    $ auditreduce -d 970413 -u doris -c lo | praudit
    

選択した 1 日のユーザーのアクティビティを出力する方法

    auditreduce コマンドを praudit から lp へパイプすると、選択した出力がプリンタへ送られます。


    注 -

    Trusted Solaris 環境では、admin_high の印刷ジョブを受け入れるようにプリンタを設定しておきます。



    $ auditreduce -d 970413 -u doris -c lo | praudit | lp
    

ログインおよびログアウトメッセージを 1 つのファイルにコピーする方法

この例では、特定の日のログインおよびログアウトメッセージが 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 コマンドを使用すると、この種の組み合わせと削除を自動で実行できますが (auditreduce(1M) のマニュアルページの -C オプションと -D オプションを参照)、find コマンドを使うなどしてファイルを手動で選択し、auditreduce コマンドは指定されたファイルのセットを組み合せるために利用するほうが簡単です。

  1. auditreduce コマンドの引数として複数の監査ファイルを入力します。

    次の例では、午前 0 時直前を起点とする繰り返しジョブによって 2 日前の監査ファイルが合成されます。ファイルの最後の時刻はジョブの終了時刻であり、ここではグリニッジ平均時の午前 0 時直前です。


    $ auditreduce 19970413000000.19970413235959.grebe ¥
    19970413000000.19970413235959.willet ¥
    19970413000000.19970413235959.sora
    $ ls *audubon 19970413000000.19970414235959.audubon 
    
  2. 入力ファイルを削除し、出力ファイルを管理サーバーの監査ルートディレクトリへ移動します。

    この例では 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 コマンドによって監査トークンが表示されるとき、データフィールドはコンマで区切られていますが、これを時刻表示などの元々フィールドに含まれているコンマと区別することはできません。

    praudit(1M) に付ける -d オプションの値として Tab キーを押します。


    $ praudit -d"<press Tab key>" 19970413120429.19970413180433.grebe
    

    -d オプション (ここでは Tab キー) の間にスペースはありません。区切り文字は二重引用符でくくります。区切り文字は 4 文字まで使用できます。

praudit トークンの区切り文字をタブに変更する方法

監査トークンは、デフォルトでは改行文字で区切られています。-l オプションによって監査レコードを 1 行ずつ表示する場合には、監査トークンでも監査フィールドと同じ区切り文字を使います。次の入力例では、監査トークンを監査フィールド同様にタブで区切ります。


$ praudit -l -d"<press Tab key>" 19970413120429.19970413180433.grebe

praudit スクリプトを使って選択を実行する方法

praudit の出力を sedawk で 処理したり、バイナリ形式の監査レコードを変換して処理するプログラムを作成すると、より高度な画面出力やレポートを得ることができます。

場合によっては、 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 環境でスクリプトを実行するには、次の条件を満たしている必要があります。