Trusted Solaris の監査管理

監査レコードの書式

監査ファイルは、 監査トレール不要の監査レコードで構成されます。つまり、別のファイルやレコードを参照しなくても、監査対象としてセキュリティ管理者が事前に選択したユーザーレベルおよびカーネルレベルのイベントを記録することができるわけです。監査レコードは一連の監査トークンで構成され、監査トークンには監査するイベントの属性が記述されています。システム内の監査イベントは、それぞれ特定の種類の監査レコードを生成します。そして、この監査レコードそれぞれが、イベントを説明する特定のトークンを備えています。監査レコードにはイベントが属する監査イベントクラスは記述されません。イベントとクラスの対応関係は、監査レコードではなく、 /etc/security/audit_event ファイルで決まります。

各監査トークンは 1 バイトで表されるトークンタイプで始まり、これに 1 つまたは複数のデータ要素が続きます。データ要素の順番はトークンタイプによって異なります。監査レコードの違いはイベントタイプとレコード内のトークンセットの違いで判別されます。text トークンのようにデータ要素を 1 つしか持たないトークンがある一方、process トークンのように複数のデータ要素 (監査ユーザー ID、実ユーザー ID、実効ユーザー ID を含む) を持つトークンもあります。

監査レコードはバイナリ形式で保存され、処理されますが、バイトの順序とデータのサイズはあらかじめ決められており、ワークステーション間で簡単に互換性が得られるようになっています。

「監査トークンの構造」では、各トークンのデータ要素の詳しい説明と、出力例を示します。「監査レコード」では、Trusted Solaris 7 の監査で生成される全監査レコードを一覧します。レコードはカーネルイベント別、ユーザーイベント別にアルファベット順で記載されています。付録 A 「イベントとクラスの対応関係」では、監査レコードの相互参照表を提示します。

監査トークンの順序

各レコードは、header (ヘッダー) トークンで始まり、trailer (トレーラ) トークン (省略可能) で終わります。header トークンと trailer トークンの間にある 1 つ以上のトークンはイベントを説明するものです。ユーザーレベルのイベントやカーネルイベントの場合、トークンはオブジェクトの属性を説明します。オブジェクトの属性には、イベントを実行したプロセス、イベントが実行されたオブジェクト、所有者、モードなどがあります。

たとえば、AUE_LSTAT カーネルイベントには次のトークンがあります。なお、AUE_LSTAT の監査レコードの書式は 表 B-70 にあります。

auditconfig コマンドで trail (トレール) ポリシーが有効になっている場合には、監査レコードの中で return トークンの後に trailer トークンが続きます。

ユーザーが読める形式の監査レコード

ここでは、監査レコードの例をテキスト形式で紹介します。監査レコードはバイナリ形式で保存されていますが、praudit コマンドでバイナリのレコードを実行するとテキスト形式のレコードが作成されます。テキスト形式のレコードは、標準出力やプリンタ、レポートを作成するスクリプトプログラムへ送ることができます。praudit の詳細については、praudit(1M) のマニュアルページを参照してください。スクリプトプログラムの例については、praudit スクリプトを使って選択を実行する方法」を参照してください。

監査トークンの読み方

次の header トークンの例は、praudit がデフォルトで作成する書式です。raw データ (-r) と短縮 (-s) のオプションの例も示します。

監査レコードは、header トークンで始まります。header トークンは、監査レコードすべてに共通する情報を示します。praudit がデフォルトで表示する header トークンは、次の ioctl() の例のようになります。

header,240,1,ioctl(2),,Tue Sept  1 16:11:44 1992, + 270000 msec

次のフィールドがあります。

praudit -s を使うと、イベントの記述 (上記の praudit のデフォルトの例では ioctl(2)) をイベント名 (AUE_IOCTL) に置き換えることができます。

header,240,1,AUE_IOCTL,,Tue Sept 1 16:11:44 1992, + 270000 msec

praudit -r を使うと、すべてのフィールドが数字で表示されます (10 進数、8 進数、16 進数の場合がある)。ここでは 20 はヘッダートークン ID、158 はこのイベントのイベント番号を表しています。

20,240,1,158,,699754304, + 270000 msec

praudit は、時間をミリ秒単位まで表示します。

監査レコードの読み方

どの監査レコードも必ず、header トークンとそれ以外のトークン 1 つを備えています。たとえば、監査イベント AUE_login の監査レコードには 5 つのトークンがあります。AUE_login の監査レコード書式の詳細については、表 B-247 を参照してください。

praudit がデフォルトで表示する AUE_login の監査レコードは次のようになります。1 行につきトークンが 1 つ記述されます。

header,90,3,login - local,,Tue Jul 8 15:12:01 1997, +520002000 msec,
text,emily
text,successful login
subject,emily,emily,staff,emily,staff,14094,14094,0 0 willet,
return,success,0
sequence,17
trailer,90

次のトークンがあります。

この監査ファイルがレコードを集め終わると、監査ポリシートークンのシーケンス (sequence) とトレーラ (trailer) が有効になり、すべての監査レコードに次のトークンが含まれるようになります。

監査レコードには次の特徴があります。

各監査レコードには、イベントを発生させたユーザーを識別する監査 ID があります。また、監査レコードは他のファイルを参照する必要がありません。このため、監査レコードを個別に閲覧し、監査トレールをさかのぼらないで有意味な情報を得ることができます。

Trusted Solaris 7 の監査レコードには、あるイベントに関連した情報がすべて含まれているので、発生した事象の情報を得るために別の監査レコードを参照する必要はありません。たとえば、ファイルイベントを記述した監査レコードには、ルートディレクトリを起点とするファイルのフルパス名、ファイルを開いたり閉じたりした日付と時刻が記載されています。


注 -

システム管理ファイルは、監査ファイルのアーカイブで保存してください。監査トレールの情報は、ユーザーやその UID の変更など、サイトの担当者や設備の変更によって変化し、レコードを解釈する能力に影響を及ぼします。


praudit -l を使うと、監査レコードを 1 行で表示できます。

header,90,3,login - local,,Tue Jul 8 15:12:01 1997, +520002000 msec,text,emily,text,successful
login,subject,emily,emily, staff,emily,staff,14094,14094,0 0 willet,return,success,0,
sequence,17,trailer,90

praudit -r を使うと、監査レコードは次のように表示されます。

20,90,3,6152,0x0000,872028721,520002000
40,emily
40,successful login
36,6001,6001,10,6001,10,14094,14094,0 0 129.150.110.2
39,0,0
47,17
19,90