SunSHIELD 基本セキュリティモジュール

監査レコードの形式

Solaris BSMの 監査レコードは、一連の監査トークンからなっており、各トークンでシステムの属性が記述されます。

各監査トークンについての詳細は付録 A 「監査レコードの説明」 を参照してください。この付録には、Solaris BSM の監査機能によって生成される全監査レコードのリストも掲載されます。リストはアルファベット順にソートされていて、相互参照一覧ではイベント名とその説明箇所が示されています。

2 進形式

監査レコードは 2 進形式で格納され処理されますが、さまざまなマシン間での互換性を保つために、データのバイトオーダーとサイズはあらかじめ決められています。

監査イベントのタイプ

システム内の各監査対象イベントによって、特定のタイプの監査レコードが生成されます。各イベントの監査レコードには、そのイベントを記述する特定のトークンが入っています。監査レコードには、イベントが属する監査イベントクラスは記述されません。そのマッピングは外部テーブル、/etc/security/audit_event ファイルによって指定されます。

監査トークンのタイプ

各トークンは 1 バイトのトークンタイプから始まり、タイプ別に決められた順序で 1 つまたは複数のデータ要素が続いています。監査レコードの種類は、そのレコード内のイベントタイプと各種トークンセットによって区別されます。 text トークンのようにデータ要素が 1 つしか入っていないトークンと、process トークンのように複数の要素 (監査ユーザ ID、実ユーザ ID、実効ユーザ ID など) が入っているトークンがあります。

監査トークンの順序

各監査レコードは、header トークンで始まって、trailer トークン (省略可能) で終わります。ヘッダとトレーラの間にある 1 つまたは複数のトークンでイベントが記述されます。ユーザレベルのイベントとカーネルイベントの場合は、トークンでそのイベントを実行したプロセス、実行対象となったオブジェクト、所有者やモードなどのオブジェクトのトークンが記述されます。

一般に、それぞれのユーザレベルイベントとカーネルイベントには、少なくとも次のトークンが付いています。

trailer トークンは多くのイベントに含まれていますが、省略可能です。

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

この節では、各監査レコードの書式を praudit コマンドで生成される出力どおりに示し、各監査トークンについて簡単に説明します。各トークン内のフィールドについての詳細は付録 A 「監査レコードの説明」 を参照してください。

次のトークンの例は、デフォルトで praudit によって生成される書式を示しています。また、各例は raw(-r) オプションと短縮 (-s) オプションを指定することが前提となっています。praudit によって監査トークンが表示されるときは、まずトークンタイプ、次にそのトークンからのデータが表示されます。ただし、フィールド (パス名など) にコンマが入っている場合は、それとフィールド区切りのコンマとを区別できません。別のフィールド区切り記号を使用しないと、出力にコンマが含まれることになります。デフォルトでは、トークンタイプは header のように名前として表示されるか、または 10 進数として -r 形式で表示されます。

各トークンを次の順序で説明します。

header トークン

すべての監査レコードは header トークンで始まります。headerトークンは、すべての監査レコードに共通の情報を示します。次のフィールドが入っています。

header トークンが praudit によってデフォルト形式で表示されるときは、次の ioctl からの例のようになります。


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

praudit -s を使用すると 、 イベント記述 (ioctl(2)) は、次のようにイベント名 (AUE_IOCTL) に置き換えられます。


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

praudit -r を使用すると、すべてのフィールドが数値として表示されます (10 進数、8 進数、または 16 進数)。この場合、158 はこのイベントのイベント番号です。


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

praudit では時刻がミリ秒単位で表示されるので注意してください。

trailer トークン

このトークンは監査レコードの終わりを示し、監査トレールを逆方向から検索できるようにします。次のフィールドがあります。

praudit により、trailer トークンは次のように表示されます。


trailer,136

arbitrary トークン

このトークンは、監査トレールのデータをカプセル化します。項目の配列には多くの項目が含まれることがあります。次のフィールドがあります。

praudit により、arbitrary トークンは次のように表示されます。

arbitrary,decimal,int,1
42
 

arg トークン

このトークンには、システムコールの引数情報が入っています。監査レコード内では、32 ビット整数によるシステムコール引数を使用できます。次のフィールドがあります。

praudit により、arg トークンは次のように表示されます。


argument,1,0x00000000,addr

attr トークン

一般に、attrトークンはパスの検索中に生成され、path トークンが添付されていますが、パス検索エラーのイベントには含まれません。次のフィールドがあります。

praudit により、attr トークンは次のように表示されます。


attribute,100555,root,staff,1805,13871,-4288

exit トークン

exitトークンには、プログラムの終了状態が記録されます。 次のフィールドがあります。

praudit により、exit トークンは次のように表示されます。


exit,Error 0,0

file トークン

このトークンは監査デーモンによって生成され、古いファイルが有効でなくなると、新しい監査トレールファイルの始めと古いファイルの終わりを示します。このトークンが入っている監査レコードは、連続する監査ファイルをまとめてリンクし、1 つの監査トレールにまとめます。次のフィールドがあります。

praudit により、file トークンは次のように表示されます。

file,Tue Sep  1 13:32:42 1992, + 79249 msec,
	/baudit/localhost/files/19920901202558.19920901203241.quisp

groups トークン

groupsトークンは、プロセスの資格からグループエントリを記録します。次のフィールドがあります。

praudit により、groups トークンは次のように表示されます。


group,staff,wheel,daemon,kmem,bin,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1

in_addr トークン

in_addrトークンは、マシンのインターネットプロトコルアドレスを示します。次のフィールドがあります。

praudit により、in_addr トークンは次のように表示されます。


ip addr,129.150.113.7

ip トークン

ip トークンには、インターネットプロトコルヘッダのコピーが入っています。次のフィールドがあります。

praudit により、ip トークンは次のように表示されます。


ip address,0.0.0.0

ipc トークン

このトークンには、特定の IPC オブジェクトを識別するために呼び出し元に使用される System V IPC メッセージ/セマフォ/共有メモリハンドルが入っています。次のフィールドがあります。

praudit により ipc トークンは次のように表示されます。


IPC,msg,3

ipc_perm トークン

ipc_perm トークンには、System V IPC アクセス情報のコピーが入っています。共有メモリ、セマフォ、メッセージ IPC の監査レコードには、このトークンが追加されます。次のフィールドがあります。

praudit により ipc_perm トークンは次のように表示されます。


IPC perm,root,wheel,root,wheel,0,0,0x00000000

iport トークン

このトークンには、TCP (または UDP) アドレスが入っています。次のフィールドがあります。

praudit により iport トークンは次のように表示されます。


ip port,0xf6d6

opaque トークン

opaqueトークンには、書式化されていないデータが一連のバイトとして入っています。次のフィールドがあります。

praudit により opaque トークンは次のように表示されます。


opaque,12,0x4f5041515545204441544100

path トークン

path トークンには、オブジェクトに関するアクセスパス情報が入っています。次のフィールドがあります。

praudit により path トークンは次のように表示されます。


path,/an/anchored/path/name/to/test/auditwrite/AW_PATH

process トークン

process トークンには、プロセスを記述する情報が入っています。次のフィールドがあります。

praudit により、process トークンは次のように表示されます。


process,root,root,wheel,root,wheel,0,0,0,0.0.0.0

return トークン

returnトークンは、システムコールの戻り状態とプロセスの戻り値を示します。このトークンは、常にシステムコールに関してカーネルで生成される監査レコードの一部として返されます。次のフィールドがあります。

praudit により、return トークンは次のように表示されます。


return,success,0

seq トークン

このトークンは省略可能で、デバッグに使用される昇順のシーケンス番号が入っています。seq ポリシーがアクティブになっているときは、このトークンが各監査レコードに追加されます。次のフィールドがあります。

praudit により、seq トークンは次のように表示されます。


sequence,1292

socket トークン

socketトークンはインターネットソケットを記述します。次のフィールドがあります。

praudit により、socket トークンは次のように表示されます。


socket,0x0000,0x0000,0.0.0.0,0x0000,0.0.0.0

subject トークン

このトークンはサブジェクト (プロセス) を記述します。次のフィールドがあります。

praudit により、subject トークンは次のように表示されます。


subject,cjc,cjc,staff,cjc,staff,424,223,0 0 quisp

text トークン

text トークンにはテキスト文字列が入っています。次のフィールドがあります。

praudit により、text トークンは次のように表示されます。


text,aw_test_token