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

監査コマンド

この節では、監査サービスで使用されるコマンドについて説明します。

監査デーモン

次に、監査デーモン auditd の機能を一覧表示します。

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

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

audit コマンド

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

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

auditreduce コマンド

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

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

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

praudit コマンドは、auditreduce のバイナリ出力を、読み込み可能な書式に変換します。

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

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

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

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

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

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

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


# auditreduce -R /var/audit-alt 

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


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

特定の監査ログファイルだけを処理するには、auditreduce にそのファイルをコマンド引数として直接指定できます。


# auditreduce /var/audit/egret/files/2001*.2001*egret

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

praudit コマンド

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

praudit コマンドでは、次の 4 つの出力形式を生成できます。

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

次の出力は、 headerトークンを praudit コマンドのデフォルトで出力したものです。


header,240,1,ioctl(2),es,Tue Sept  7 16:11:44 1999, + 270 msec

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


20,240,1,158,0003,699754304, + 270 msec

praudit コマンドの出力は、必要に応じてテキストとして操作できます。たとえば、auditreduce コマンドでは選択できないレコードを選択したいことがあります。単純なシェルスクリプトを使用すると、praudit の出力を処理できます。次の単純なスクリプトの例では、header トークンに Control-A の接頭辞を付け、1 つのレコードのすべての監査トークンを 1 行に結合します。このとき、改行は Control-A として保持されます。次に、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'

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

auditconfig コマンド

auditconfig コマンドは、監査構成パラメータを取得して設定するためのコマンド行インタフェースを提供します。auditconfig(1M) のマニュアルページを参照してください。auditconfig コマンドには、次のオプションを指定できます。

-chkconf

カーネルイベントとクラスの割り当ての構成を検査し、不一致を報告します。

-conf

カーネルイベントとクラスの割り当てが、audit_event ファイル内の現在の割り当てと一致するように実行時に構成し直します。

-getcond

マシンの監査の状態を取得します。次の表に、応答コード例を示します。

表 26–1 監査状態の例

応答 

意味 

auditing

監査が有効でオンに設定されている 

no audit

監査は有効だが、監査デーモンは動作していない 

disabled

監査が無効になっている 

-setcond condition

マシンの監査状態をauditing または noaudit に設定する

-getclass event_number

指定するイベントが割り当てられている事前選択クラスを取得する

-setclass event_number audit_flags

指定するイベントが割り当てられる事前選択クラスを設定する

-lsevent

現在構成されている (実行時) カーネルとユーザー監査イベント情報を表示する

-getpinfo pid

指定するプロセスの監査 ID、事前選択マスク、端末 ID、監査セッション ID を取得する

-setpmask pid flags

指定するプロセスの事前選択マスクを設定する

-setsmask asid flags

指定する監査セッション ID を持つすべてのプロセスの事前選択マスクを設定する

-setumask auid flags

指定するユーザー監査 ID を持つすべてのプロセスの事前選択マスクを設定する

-lspolicy

監査ポリシーの一覧と、各ポリシーの簡単な説明を表示する

-getpolicy

現在の監査ポリシーフラグを表示する

-setpolicy policy_flag[,policy_flag]

監査ポリシーフラグを、指定するポリシーに設定する (使用する監査ポリシーの決定を参照)