監査ロガー構成

監査ロガーは完全な監査レコードを作る責任があります。 ログに記録させたい監査イベントはユーザーが選択しなければなりません。

監査イベントの選択

監査イベントの選択には次のタイプがあります。

プロセスごとの監査
プロセス・イベントを効率的に選択するために、 システム管理者は監査クラスを定義できます。 監査クラスはシステム内のベース監査イベントのサブセットです。 監査クラスを使用すると、ベース監査イベントを都合よく論理的にグループ化することができます。

システムにいる各ユーザーごとに、システム管理者は監査クラスのセットを定義します。 そのユーザーのベース・イベントが記録できるかどうかはその監査クラスで決まります。 ユーザーによって実行される各プロセスには、その監査クラスのタグが付けられます。

オブジェクト単位の監査
オペレーティング・システムはオブジェクト・アクセスの監査を名前別に行います。 つまり、オブジェクト (通常、ファイル) 別に監査を行います。 オブジェクト監査を名前別に行うと、 少数の関連オブジェクトを監査するためにすべてのオブジェクト・アクセスを対象にしないで済みます。 さらに、監査モードが指定できるので、 指定したモードのアクセス (read/write/execute) だけが記録されます。

カーネル監査証跡モード

カーネル・ロギングを BIN または STREAM モードに設定すると、 カーネル監査証跡をどこに書き込むかを定義することができます。 BIN モードを使用するときは、 レコードがそこに追加される少なくとも 1 つのファイル・ディスクリプターをカーネル監査ロガーに与えておかなければなりません (監査始動前に)。

BIN モードを使用すると、 監査レコードは交互のファイルに書き込まれます。 監査始動時に、カーネルに 2 つのファイル・ディスクリプターと望ましい最大ビン・サイズが渡されます。 カーネルは呼び出しプロセスを中断し、 監査レコードを最初のファイル・ディスクリプターに書き込むことを始めます。 最初のビンのサイズが最大ビン・サイズまで達したとき、 2 番目のファイル・ディスクリプターが有効であれば、 カーネルは 2 番目のビンに切り替わり、呼び出しプロセスを再活動化します。 カーネルは別の有効なファイル・ディスクリプターで再呼び出しされるまで 2 番目のビンに書き込むことを続けます。 その時点で 2 番目のビンがいっぱいになっていれば、 カーネルは最初のビンに戻るように切り替わり、 呼び出しプロセスに即時に戻ります。 そうでなければ、呼び出しプロセスは中断され、 カーネルは 2 番目のビンがいっぱいになるまでレコードを書き込むことを続けます。 処理は監査がオフにされるまで以上のように続けられます。 以下の図は、監査 BIN モードのイラストです。

図 1. 監査 BIN モードのプロセス. 監査 BIN モードのプロセスを示すイラスト。

監査レコードの処理中に、監査サブシステムに常に書き込み先があるように、 代替ビン・メカニズムが使用されます。 監査サブシステムが他のビンに切り替えると、最初のビンは空になり、 その内容は trace ファイルに入れられます。 再びビンを切り替える時間になると、最初のビンが使用可能になります。 そして、データの保管および分析が、データ生成から切り離されます。 通常、カーネルがその時点で書き込んでいないビンからデータを読み取るため、auditcat プログラムが使用されます。 システムの監査証跡 (auditcat プログラムの出力) 用のスペースが決して使い果たされないようにするため、freespace パラメーターを /etc/security/audit/config ファイルで指定できます。 システムのスペースがここで指定される 512 バイト・ブロックより少ないと、 syslog メッセージが生成されます。

監査が使用可能である場合、/etc/security/audit/config 中の start スタンザにある binmode パラメーターを panic に設定する必要があります。 bin スタンザの freespace パラメーターは、 少なくとも監査証跡のストレージ専用のディスク・スペースの 25% に等しい値に構成する必要があります。 bytethreshold および binsize パラメーターは、それぞれ 65536 バイトに設定します。

STREAM モードでは、カーネルはレコードを循環バッファーに書き込みます。 カーネルがバッファーの終わりまで達したときは、先頭に戻るだけです。 プロセスは、/dev/audit と呼ばれる疑似デバイスを通して情報を読み取ります。 プロセスがこのデバイスをオープンすると、そのプロセス用にチャネルが作成されます。 オプションとして、そのチャネル上で読み取られるイベントは監査クラスのリストとして指定できます。 以下の図は、監査 STREAM モードのイラストです。

図 2. 監査 STREAM モードのプロセス . 監査 STREAM モードのプロセスを示すイラスト。

STREAM モードの主目的は、 監査証跡をタイムリーに読み取れるようにすることであり、 これは脅威モニターをリアルタイムで行う場合に望ましいモードです。 もう 1 つの使い方は即時に書き込まれる証跡を作成し、 証跡をある種の書き込み可能メディアに保管すると起こるような、 監査証跡をみだりに変更するといった事態を防止することです。

STREAM モードを使用するさらに別の方法は、リモート・システム上に監査情報を保管するプログラムに 監査ストリームを書き込むことで、これによって、中央で近似時間処理が実行でき、 同時に発信元ホストで悪用から監査情報を保護することにもなります。

監査レコードの処理

auditselectauditpr、および auditmerge コマンドは、 BIN または STREAM モードの監査レコードの処理に使用可能です。 どちらのユーティリティーも、パイプで容易に使用できるようにフィルターとして操作し、 特に STREAM モードの監査に役立ちます。

auditselect
ステートメントのような SQL を持つ特定の監査レコードのみを選択するのに使用できます。 例えば、ユーザー afx が生成する exec() イベントだけを選択するには、 次のように入力します。
auditselect -e "login==afx && event==PROC_Execute" 
auditpr
バイナリー監査レコードを人間が読み取れる形式に変換します。 表示される情報量は、コマンド・ラインで指定されるフラグに依存します。 使用可能な情報すべてを入手するには、auditpr を次のように実行してください。
auditpr -v -hhelrtRpPTc
-v フラグが指定されると、カーネルがすべてのイベントに送達する標準監査情報に加え、 イベントに特定の文字列 (/etc/security/audit/events ファイルを参照) である監査証跡が表示されます。
auditmerge
バイナリー監査証跡をマージするのに使用されます。 これは、結合する必要のある複数のシステムからの監査証跡がある場合に特に役立ちます。 auditmerge コマンドは、コマンド・ラインで証跡の名前を取り出し、 マージされたバイナリー証跡を標準出力するので、それを読み取れるように、auditpr コマンドを使用する必要があります。 例えば、auditmerge および auditptr コマンドは次のように実行できます。
auditmerge trail.system1 trail.system2 | auditpr -v -hhelrRtpc