Solaris のシステム管理 (セキュリティサービス)

監査コマンド

この節では、次の各コマンドについての情報を提供します。

auditd デーモン

次のリストは、auditd デーモンのタスクの概要を示します。

auditd デーモンは、システムがマルチユーザーモードでブートする際に自動的に起動されますが、コマンド行から起動することもできます。auditd デーモンが起動すると、デーモンは監査ファイルに必要な空き容量を計算します。

auditd デーモンは、作成する監査ファイルの場所として audit_control ファイル内の監査ディレクトリの一覧を使用します。デーモンは、このディレクトリの一覧へのポインタを、最初のディレクトリに位置付けます。auditd デーモンは、監査ファイルを作成する必要があるたびに、一覧内の最初の使用可能ディレクトリ内に監査ファイルを格納します。一覧は、auditd デーモンの現在のポインタ位置から始まります。このポインタを一覧の最初のディレクトリに設定し直すには、audit -s コマンドを実行します。audit -n コマンドは、新しい監査ファイルに切り替えるように監査デーモンに指示します。新しいファイルは、現在のファイルと同じディレクトリ内に作成されます。

audit コマンド

audit コマンドは、auditd デーモンの動作を制御します。audit コマンドは、次の操作を実行できます。

使用可能なオプションについては、audit(1M) のマニュアルページを参照してください。

bsmrecord コマンド

bsmrecord コマンドは、/etc/security/audit_event ファイル内に定義されている監査イベントの書式を表示します。監査イベントの監査 ID、監査クラス、監査フラグ、およびレコードの監査トークンが順に出力されます。オプションを指定しなかった場合、bsmrecord 出力は端末に表示します。-h オプションを指定した場合、ブラウザでの表示に適した形式で出力します。bsmrecord コマンドの使用例については、「監査レコードの書式の表示方法」を参照してください。また、bsmrecord(1M) のマニュアルページも参照してください。

auditreduce コマンド

auditreduce コマンドは、バイナリ形式で格納されている監査レコードをまとめます。コマンドを実行すると、1 つまたは複数の入力監査ファイルから監査レコードがマージできます。このコマンドでは、監査レコードの事後選択を実行することもできます。レコードはバイナリ形式のままです。監査トレール全体をマージするには、監査サーバー上でこのコマンドを実行します。監査サーバーとは、すべての監査ファイルシステムがマウントされているシステムのことです。詳細は、auditreduce(1M) のマニュアルページを参照してください。

auditreduce コマンドを使用すると、複数のシステム上のすべての監査対象動作を 1 か所から追跡できます。このコマンドは、すべての監査ファイルを論理的に結合し、単一の監査トレールとして読み取ることができます。サイト内のすべてのシステムが同一の監査構成を持つようにするとともに、サーバーと監査ファイル用のローカルディレクトリを作成しておく必要があります。auditreduce では、レコードの生成方法や格納場所は無視されます。オプションを指定しなかった場合、auditreduce コマンドは、監査ルートディレクトリのすべてのサブディレクトリ内のすべての監査ファイルの監査レコードをマージします。通常、/etc/security/audit が監査ルートディレクトリです。auditreduce コマンドは、マージ結果を標準出力に送ります。マージ結果は、時系列に並べて 1 つの出力ファイルに格納することもできます。このファイルの形式はバイナリデータです。

auditreduce コマンドを使用して、特定の種類のレコードを選択し、解析に利用することもできます。auditreduce コマンドのマージ機能と選択機能は、論理的に互いに依存しません。auditreduce コマンドは、入力ファイルのレコードを読み取ると、マージしてディスクに書き込む前に、データを抽出します。

auditreduce コマンドにオプションを指定すると、次の操作も実行できます。

auditreduce に引数を指定しなかった場合は、デフォルトの監査ルートディレクトリ /etc/security/audit 内のサブディレクトリが検査されます。このコマンドは、start-time.end-time.hostname ファイルが配置されている files ディレクトリを検査します。auditreduce コマンドは、監査データが異なるディレクトリに格納されている場合に非常に有用です。図 31–1 は、監査データがホスト別のディレクトリ内に格納されている場合を示しています。図 31–2 は、監査データが監査サーバー別のディレクトリ内に格納されている場合を示しています。

図 31–1 ホストごとに格納された監査トレール

トップディレクトリ名がホスト名になっているデフォルトの監査ルートディレクトリです。

図 31–2 サーバーごとに格納された監査トレール

トップディレクトリ名がサーバー名になっているデフォルトの監査ルートディレクトリです。

/etc/security/audit のパーティションが小さい場合、デフォルトのディレクトリに監査データを格納しない方法もあります。-R オプションを使用して、auditreduce コマンドを別のディレクトリに渡すことができます。


# auditreduce -R /var/audit-alt 

-S オプションを使用して、特定のサブディレクトリを指定することもできます。


# auditreduce -S /var/audit-alt/host1 

その他のオプションや例については、auditreduce(1M) のマニュアルページを参照してください。

praudit コマンド

praudit コマンドは、auditreduce コマンドのバイナリ出力をユーザーが読めるようにします。praudit コマンドは、標準入力からバイナリ形式の監査レコードを読み込み、そのレコードを表示可能な書式で表示します。auditreduce コマンドまたは 1 つの監査ファイルからの出力は、praudit コマンドの入力にパイプできます。catコマンドを使用すると、複数のファイルを連結して入力にパイプすることができます。tail コマンドを使用すると、現在の監査ファイルを入力にパイプできます。

praudit コマンドでは、次の 4 つの出力形式を生成できます。5 番目のオプション -l (長形式) では、出力の 1 行に 1 つの監査レコードが表示されます。デフォルトでは、出力の 1 行につき 1 つの監査トークンが表示されます。-d オプションを指定すると、トークンフィールドおよびトークン間で使用される区切り文字を変更できます。デフォルトの区切り文字は、コンマです。

praudit コマンドのデフォルトの出力形式では、各レコードは監査トークンの並びとして容易に識別できます。各トークンは 1 行ごとに出力されます。各監査レコードは header トークンで始まります。awk コマンドなどを使用すると、出力をさらに処理できます。

次の出力は、header トークンを praudit -l コマンドで出力したものです。


header,173,2,settppriv(2),,example1,2003-10-13 13:46:02.174 -07:00

次の出力は、同じ header トークンを praudit -r コマンドで出力したものです。


121,173,2,289,0x0000,192.168.86.166,1066077962,174352445

例 31–1 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" \\ Finds the user-specified string
| tr '\\002' '\\012' Restores the original newline breaks

スクリプトの ^a は、^a という 2 つの文字ではなく、Control-A です。この接頭辞によって、header トークンが、テキストとして表示される header という文字列と区別されます。


auditconfig コマンド

auditconfig コマンドは、監査構成パラメータを取得および設定するためのコマンド行インタフェースを提供します。auditconfig コマンドは、次の操作を実行できます。

コマンドオプションの詳細は、auditconfig(1M) のマニュアルページを参照してください。