AUDITPIPE(4) | FreeBSD Kernel Interfaces Manual | AUDITPIPE(4) |
名称
auditpipe — ライブ監査イベント追跡のための疑似デバイス書式
options AUDIT解説
audit(4) で生成され、 auditd(8) によって保守された監査証跡 (audit trail) ファイルが監査ログ情報のために信頼できる長期間の格納を提供している間に、現在のログファイルは、ホストベースの侵入検出のような実行中にモニタしているアプリケーションにはいくらか扱いにくくして終了するまで、監査デーモンによって所有されています。例えば、ログは循環しており、ファイルにアクセスしているかもしれないアプリケーションへ予告なしで新しいファイルに新しいレコードを書き込むかもしれません。監査機能は、リアルタイムモニタリングの目的のためのライブ BSM 監査データのために直接アクセスを必要とするアプリケーションのための監査パイプ機能を提供します。監査パイプは、デバイスノードでのパーミッションを条件として、クローン可能な特殊デバイス、 /dev/auditpipe を通して利用可能であり、監査イベントストリームの“tee”を提供します。訳注: tee コマンドと同様の機能。デバイスがクローン可能であるので、デバイスの 2 つ以上のインスタンスは一度に、オープンされるかもしれません。それぞれのデバイスのインスタンスは、すべてのレコードへの独立したアクセスを提供します。
監査パイプデバイスは、不連続な BSM 監査レコードを提供します。アプリケーションによって渡された読み込みバッファが連続した次のレコードを保持することができないくらい小さいなら、そのレコードは落とされます。監査証跡に書き込まれる監査データと異なって、レコード配送の信頼性は保証されません。特に、監査パイプのキューが満杯になるとき、レコードは落とされます。監査パイプデバイスは、デフォルトでブロッキングされますが、非ブロッキング I/O、 SIGIO を使用する非同期 I/O と select(2) と poll(2) を通してポーリングされる操作をサポートします。
アプリケーションは、グローバルな監査証跡を追跡するために選択するか、またはグローバルな監査証跡パラメータと無関係なローカルの前選択 (preselection) パラメータを設定します。
監査パイプキュー Ioctl
次の ioctl は様々な監査パイプレコードキュープロパティを検索して設定します:- AUDITPIPE_GET_QLEN
- パイプでの読み込みのために利用可能なレコードの現在の数を問い合わせます。
- AUDITPIPE_GET_QLIMIT
- パイプでの読み込みのためにキューに入れることができる現在の最大の数を検索します。
- AUDITPIPE_SET_QLIMIT
- パイプでの読み込みのためにキューに入れることができる現在の最大の数を設定します。新しい制限は、次の 2 つの ioctl を使用して問い合わせ可能なキュー制限の最小とキュー制限の最大の間に収まらなければなりません。
- AUDITPIPE_GET_QLIMIT_MIN
- パイプでの読み込みのためにキューに入れることができる最も低い可能な最大の数を問い合わせます。
- AUDITPIPE_GET_QLIMIT_MAX
- パイプでの読み込みのためにキューに入れることができる最も高い可能な最大の数を問い合わせます。
- AUDITPIPE_FLUSH
- 監査パイプでのすべての未解決のレコードをフラッシュします。ユーザプロセスの利益に適合しない設定プロセスの間にキューに入れられたレコードを削除するように初期の前選択のプロパティを設定した後に役に立ちます。
- AUDITPIPE_GET_MAXAUDITDATA
- 監査パイプから読み込まれる監査レコードを保持することを目的とするユーザ空間バッファのための便利な最小サイズである、監査レコードの最大サイズを問い合わせます。
監査パイプ前選択モード Ioctl
デフォルトで、監査パイプ機能は、 auditd(8) によって設定されたシステム全体の監査証跡によって適合されたレコードを提示するためにパイプを設定します。しかしながら、監査特有の選択マスクと同様に、パイプローカルのフラグと naflags 設定を含んでいて、代替の判断基準を使用して監査パイプのための前選択メカニズムを設定することができます。これによってアプリケーションは、アプリケーションへの特有の関係のものに提示された制限レコードと同様に、グローバルな監査証跡で捕らえられなかったトラックイベントを追跡できます。次の ioctl は監査パイプでの前選択モードを設定します:
- AUDITPIPE_GET_PRESELECT_MODE
- 監査パイプで現在の前選択モードを返します。 ioctl 引数はタイプ int であるべきです。
- AUDITPIPE_SET_PRESELECT_MODE
- 監査パイプに現在の前選択モードを設定します。 ioctl 引数はタイプ int であるべきです。
あり得る前選択モード値は次の通りです:
- AUDITPIPE_PRESELECT_MODE_TRAIL
- 監査パイプのためのレコードを選択するために、グローバルな監査証跡の前選択パラメータを使用します。
- AUDITPIPE_PRESELECT_MODE_LOCAL
- ローカル監査パイプ前選択を使用します。このモデルは、1 組の監査マスクと同様に、グローバルなフラグと naflags パラメータから成り、グローバルな監査証跡設定モデルと同様です。これらのパラメータは、さらに ioctl を使用して設定されます。
監査パイプ前選択モードを変更した後に、以前の前選択設定の下で選択されたレコードは監査パイプキューにまだ存在します。アプリケーションは、たぶん望まれないレコードを削除するために設定を変更した後に、現在のレコードキューをフラッシュします。
監査パイプローカル前選択モード Ioctl
次の ioctl は、監査パイプが AUDITPIPE_PRESELECT_MODE_LOCAL 前選択モードのために設定されるとき、使用される前選択パラメータを設定します。- AUDITPIPE_GET_PRESELECT_FLAGS
- パイプでの帰属するイベントのための現在のデフォルト前選択フラグを検索します。これらのフラグは audit_control(5) の flags フィールドに対応しています。 ioctl 引数はタイプ u_int であるべきです。
- AUDITPIPE_SET_PRESELECT_FLAGS
- パイプでの帰属するイベントのための現在のデフォルト前選択フラグを設定します。これらのフラグは audit_control(5) の flags フィールドに対応しています。 ioctl 引数はタイプ u_int であるべきです。
- AUDITPIPE_GET_PRESELECT_NAFLAGS
- パイプでの帰属しないイベントのための現在のデフォルト前選択フラグを検索します。これらのフラグは audit_control(5) の naflags フィールドに対応しています。 ioctl 引数はタイプ u_int であるべきです。
- AUDITPIPE_SET_PRESELECT_NAFLAGS
- パイプでの帰属しないイベントのための現在のデフォルト前選択フラグを設定します。これらのフラグは audit_control(5) の naflags フィールドに対応しています。 ioctl 引数はタイプ u_int であるべきです。
- AUDITPIPE_GET_PRESELECT_AUID
- 特定の監査パイプための現在の前選択マスクについて問い合わせます。 ioctl 引数はタイプ struct auditpipe_ioctl_preselect であるべきです。問い合わせのための監査は、タイプ au_id_t の ap_auid フィールドによって指定されます。マスクは、タイプ au_mask_t の ap_mask を通して返されます。
- AUDITPIPE_SET_PRESELECT_AUID
- パイプでの特定の監査のための現在の前選択マスクを設定します。引数は、呼び出し側が必要な前選択マスクを保持する ap_mask フィールドを適切に初期化するべきであるのを除いて、 AUDITPIPE_GET_PRESELECT_AUID と同じです。
- AUDITPIPE_DELETE_PRESELECT_AUID
- パイプでの特定の監査のための現在の前選択マスクを削除します。いったん呼び出されると、指定された監査に関連しているイベントは、デフォルトのフラグマスクを使用します。 ioctl 引数はタイプ au_id_t であるべきです。
- AUDITPIPE_FLUSH_PRESELECT_AUID
- すべての監査特有の前選択仕様を削除します。
使用例
praudit(1) ユーティリティは、デフォルト監査証跡をレビューするために /dev/auditpipe で直接実行されます。歴史
OpenBSM 実装は、2004 年に Apple Computer Inc. との契約に基づき、 McAfee Inc. のセキュリティ部門、McAfee Research によって作成されました。その後にそれは、OpenBSM 配布のための基盤として TrustedBSD Project によって採用されました。カーネル監査のサポートは FreeBSD 6.2 ではじめて登場しました。
作者
監査パイプ機能は、 <rwatson@FreeBSD.org>によって設計され実装されました。レコードを監査し、イベントストリームフォーマットを監査する Basic Security Module (BSM) インタフェースは、Sun Microsystems によって定義されました。
バグ
監査関連のバグと制限の情報については audit(4) マニュアルページを参照してください。設定可能な前選択メカニズムはグローバルな監査証跡のために存在する選択モデルをミラーします。よりフレキシブルな選択モデルを提供するために望ましいかもしれません。
パイプごとの監査イベントキューは fifo で、キューの先頭でレコードのために十分に提供されるユーザスレッドまたは、十分な余地がないなら、キューに入れられるのいずれかが生じて落されます。システムライブラリで実装実行されるようにバッファリングされた I/O で、より互換性があるようになるレコードの部分的な読み込みをサポートして、アプリケーションが、たぶん前選択のスタイルで、どのレコードが落とされるかを選択するのを許可することは望ましいかもしれません。
May 5, 2006 | FreeBSD |