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

監査トークンの形式

各トークンにはトークンの種類識別子とそのあとにトークン固有のデータが続いています。各トークンの種類には固有の形式があります。次の表は、各トークンの名前と説明の一覧です。

表 25-5 基本セキュリティモジュール (BSM) の監査トークン

トークン名 

説明 

参照先 

acl

アクセス制御リスト情報 

acl トークン」

arbitrary

書式情報と型情報が付いたデータ 

arbitrary トークン」

arg

システムコールの引数値 

arg トークン」

attr

ファイル vnode トークン

attr トークン」

exec_args

exec システムコールの引数

exec_args トークン」

exec_env

exec システムコールの環境変数

exec_env トークン」

exit

プログラム終了情報 

exit トークン」

file

監査ファイル情報 

file トークン」

groups

プロセスグループ情報 (現在は使用しない) 

groups トークン (現在は使用しない)」

header

監査レコードの始まりを示す 

header トークン」

in_addr

インターネットアドレス 

in_addr トークン」

ip

IP ヘッダー情報 

ip トークン」

ipc

System V IPC 情報 

ipc トークン」

ipc_perm

System V IPC オブジェクトトークン 

ipc_perm トークン」

iport

インターネットポートアドレス 

iport トークン」

newgroups

プロセスグループ情報 

newgroups トークン」

opaque

構造化されていないデータ (形式が未指定) 

opaque トークン」

path

パス情報 

path トークン」

process

プロセスのトークン情報 

process トークン」

return

システムコールの状態 

return トークン」

seq

シーケンス番号トークン 

seq トークン」

socket

ソケットの種類とアドレス 

socket トークン」

subject

サブジェクトのトークン情報 (process トークンと同じ書式)

subject トークン」

text

ASCII 文字列 

text トークン」

trailer

監査レコードの終わりを示す 

trailer トークン」

監査レコードには、必ず header トークンが入っています。header トークンは、監査トレール内で監査レコードの始まりを示します。ユーザーの動作に起因しないイベントからの監査レコードを除き、どの監査レコードにも subject トークンが入っています。ユーザーに起因するイベントの場合、この 2 つのトークンはイベントを引き起こしたプロセスの値を参照します。非同期イベントの場合、process トークンはシステムを参照します。

acl トークン

acl トークンレコードには、アクセス制御リストに関する情報を記録します。次の 4 つの固定フィールドがあります。

praudit コマンドでは、acl トークンは次のように表示されます。


acl,tpanero,staff,0755

次の図に acl トークンの形式を示します。

図 25-4 acl トークンの形式

Graphic

arbitrary トークン

arbitrary トークンは、監査トレール用にデータをカプセル化します。次の 4 つの固定長フィールドと 1 つのデータ配列からなっています。

トークンの残りの部分は、指定された形式の 1 つまたは複数の項目からなっています。praudit コマンドでは、arbitrary トークンは次のように表示されます。


arbitrary,decimal,int,1
42

次の図に arbitrary トークンの形式を示します。

図 25-5 arbitrary トークンの形式

Graphic

次の表は、出力形式フィールドに指定できる値を示します。

表 25-6 arbitrary トークンの出力形式フィールドの値

値 

動作 

AUP_BINARY

日付が 2 進形式で出力される 

AUP_OCTAL

日付が 8 進形式で出力される 

AUP_DECIMAL

日付が 10 進形式で出力される 

AUP_HEX

日付が 16 進形式で出力される 

AUP_STRING

日付が文字列で出力される 

次の表は、項目サイズフィールドに指定できる値を示します。

表 25-7 arbitrary トークンの項目サイズフィールドの値

値 

動作 

AUR_BYTE

データはバイト単位 (1 バイト) 

AUR_SHORT

データは短い形式の単位 (2 バイト) 

AUR_LONG

データは長い形式の単位 (4 バイト) 

arg トークン

arg トークンには、システムコールの引数情報 (システムコールの引数の数、引数の値、およびオプションの説明) が含まれています。このトークンを使用すると、監査レコード内で 32 ビット整数のシステムコール引数を指定できます。次の 5 つのフィールドがあります。

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


argument,1,0x00000000,addr

arg トークンの形式を示します。

図 25-6 arg トークンの形式

Graphic

attr トークン

attr トークンには、ファイル v ノードからの情報が含まれています。次のトークンには 7 つのフィールドがあります。

ファイルシステム ID とデバイス ID の詳細は、statvfs(2) のマニュアルページを参照してください。

一般に、attrトークンには path トークンが付いており、パスの検索中に生成されます。パス検索エラーが発生すると、必要なファイル情報を取得するために利用できる v ノードがないため、attrトークンは監査レコードの一部として組み込まれません。praudit コマンドでは、attr トークンは次のように表示されます。


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

attr トークンの形式を示します。

図 25-7 attr トークンの形式

Graphic

exec_args トークン

exec_args トークンは、 exec() システムコールへの引数を記録します。次の 2 つの固定フィールドがあります。

このトークンの残りの部分は、0 個以上の NULL で終わる文字列からなっています。praudit コマンドでは、 exec_args トークンは次のように表示されます。


vi,/etc/security/audit_user

exec_args トークンの形式を示します。

図 25-8 exec_args トークンの形式

Graphic


注 -

exec_args トークンは、監査ポリシー argv が有効なときにだけ出力されます。


exec_env トークン

exec_envトークンは、exec() システムコールの現在の環境変数を記録します。次の 2 つの固定フィールドがあります。

このトークンの残りの部分は、0 個以上の NULL で終わる文字列からなっています。praudit コマンドでは、exec_env トークンは次のように表示されます。


exec_env,25,
GROUP=staff,HOME=/export/home/matrix,HOST=mestrix,HOSTTYPE=sun4,HZ=100,
LC_COLLATE=en_US.ISO8859-1,LC_CTYPE=en_US.ISO8859-1,LC_MESSAGES=C,
LC_MONETARY=en_US.ISO8859-1,LC_NUMERIC=en_US.ISO8859-1,
LC_TIME=en_US.ISO8859-1,LOGNAME=matrix,MACHTYPE=sparc,
MAIL=/var/mail/matrix,OSTYPE=solaris,PATH=/usr/sbin:/usr/bin,PS1=#,
PWD=/var/audit,REMOTEHOST=209.198.087.208,SHELL=/usr/bin/csh,SHLVL=1,
TERM=dtterm,TZ=US/Pacific,USER=matrix,VENDOR=sun

次の図に exec_env トークンの形式を示します。

図 25-9 exec_env トークンの形式

Graphic


注 -

exec_env トークンは、監査ポリシー arge が有効なときにだけ出力されます。


exit トークン

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

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


exit,Error 0,0

次の図に exit トークンの形式を示します。

図 25-10 exit トークンの形式

Graphic

file トークン

file トークンは、監査デーモンによって生成される特殊なトークンです。古い監査トレールファイルが終了すると、新しい監査トレールファイルの開始と古いファイルの終了をマークします。監査デーモンは、このトークンを含む特殊な監査レコードを構築して、連続する監査ファイルを 1 つの監査トレールに「リンク」します。次の 4 つのフィールドがあります。

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


file,Tue Sep  1 13:32:42 1992, + 79249 msec,
	/var/audit/localhost/files/19990901202558.19990901203241.quisp

次の図に file トークンの形式を示します。

図 25-11 file トークンの形式

Graphic

groups トークン (現在は使用しない)

このトークンは、newgroups トークンに置き換えられています。newgroups トークンは同じ種類の情報を少ない領域で提供します。ここでは完全を期すために groups トークンについて説明しますが、アプリケーション設計者は newgroups トークンを使用してください。ASCII 出力が表示されるときには、どちらのトークン ID にも groups というラベルが付いているため、praudit はこの 2 つのトークンを区別しないことに注意します。

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

このトークンの残りの部分は 0 個以上のグループエントリからなっています。praudit コマンドでは、group トークンは次のように表示されます。


group,staff,admin,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1,-1

次の図に groups トークンの形式を示します。

図 25-12 groups トークンの形式

Graphic


注 -

groups トークンは、監査ポリシー group が有効なときにだけ出力されます。


header トークン

header トークンは、監査レコードの始まりをマークし、trailer トークンとの組み合わせでレコード内の他のすべてのトークンを囲む特殊なトークンです。次の 6 つのフィールドがあります。

64 ビットシステムでは、header トークンは、32 ビットタイムスタンプではなく 64 ビットタイムスタンプで表示されます。

praudit では、ioctl() システムコールの header トークンは次のように表示されます。


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

次の図に header トークンの形式を示します。

図 25-13 header トークンの形式

Graphic

ID 修飾子フィールドでは、次のフラグが定義されています。


0x4000			PAD_NOTATTR						nonattributable event
0x8000			PAD_FAILURE						fail audit event

in_addr トークン

in_addr トークンには、4 バイトのインターネットプロトコルアドレスが含まれます。次の 2 つのフィールドがあります。

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


ip address,129.150.113.7

Solaris 9 では、インターネットアドレスは、4 バイトを使用する IPv4 アドレス、または型の記述に 16 バイトとアドレスに 16 バイトを使用する IPv6 アドレスとして表示できます。次の図に in_addr トークンの形式を示します。

図 25-14 in_addr トークンの形式

Graphic

ip トークン

ip トークンには、インターネットプロトコルのヘッダーのコピーが含まれていますが、IP オプションは含まれていません。IP オプションは、トークン内の IP ヘッダー数を増やすと追加できます。次の 2 つのフィールドがあります。

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


ip address,0.0.0.0

IP ヘッダー構造は、/usr/include/netinet/ip.h ファイル内で定義されています。次の図に ip トークンの形式を示します。

図 25-15 ip トークンの形式

Graphic

ipc トークン

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

praudit コマンドでは、ipc トークンは次のように表示されます。


IPC,msg,3

注 -

IPC オブジェクト識別子は、コンテキストに依存しない Solaris CMW 監査トークンに準拠していません。IPC オブジェクトを一意に識別するグローバルな「名前」はありません。代わりに、IPC オブジェクトの動作中だけ有効なハンドルで識別されます。System V の IPC メカニズムはあまり使用されず、すべてが同じ監査クラスを共有するので、識別は問題にはなりません。


次の表は、IPC オブジェクトの形式フィールドに指定できる値の一覧です。値は /usr/include/bsm/audit.h ファイル内で定義されます。

表 25-8 IPC オブジェクトの形式フィールドの値

名前 

値 

説明 

AU_IPC_MSG

IPC メッセージオブジェクト 

AU_IPC_SEM

IPC セマフォオブジェクト  

AU_IPC_SHM

IPC 共有メモリーオブジェクト 

次の図に ipc トークンの形式を示します。

図 25-16 ipc トークンの形式

Graphic

ipc_perm トークン

ipc_perm トークンには、System V の IPC アクセス情報が含まれています。このトークンは、IPC 共有メモリーイベント、IPC セマフォイベント、および IPC メッセージイベントによって生成される監査レコードに追加されます。次の 8 つのフィールドがあります。

praudit コマンドでは、ipc_perm トークンは次のように表示されます。


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

値は、IPC オブジェクトに関連付けられた ipc_perm 構造から取り出されます。次の図に ipc_perm トークンの形式を示します。

図 25-17 ipc_perm トークンの形式

Graphic

iport トークン

iport トークンには、TCP (または UDP) ポートアドレスが含まれています。次の 2 つのフィールドがあります。

praudit コマンドでは、iport トークンは次のように表示されます。


ip port,0xf6d6

次の図に iport トークンの形式を示します。

図 25-18 iport トークンの形式

Graphic

newgroups トークン

groups トークンは、このトークンによって置き換えられます。ASCII 出力が表示されるときには、どちらのトークン ID にも groups というラベルが付いているため、praudit はこの 2 つのトークンを区別しないことに注意してください。

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

このトークンの残りの部分は 0 個以上のグループエントリからなっています。praudit コマンドでは、newgroups トークンは次のように表示されます。


group, staff, admin

次の図に newgroups トークンの形式を示します。

図 25-19 newgroups トークンの形式

Graphic


注 -

newgroups トークンは、監査ポリシー group が有効なときにだけ出力されます。


opaque トークン

opaque トークンには、フォーマットされていないデータが一連のバイトとして含まれています。次の 3 つのフィールドがあります。

praudit コマンドでは、opaque トークンは次のように表示されます。


opaque,12,0x4f5041515545204441544100

次の図に opaque トークンの形式を示します。

図 25-20 opaque トークンの形式

Graphic

path トークン

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

praudit コマンドでは、path トークンは次のように表示されます。パス長フィールドは、表示されません。


path,/etc/security/audit_user

次の図に path トークンの形式を示します。

図 25-21 path トークンの形式

Graphic

process トークン

process トークンには、信号の受信者など、プロセスに関連するユーザーの情報が含まれています。次の 9 つのフィールドがあります。

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


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

次の図に process トークンの形式を示します。

図 25-22 process トークンの形式

Graphic

監査 ID、ユーザー ID、グループ ID、プロセス ID、セッション ID は、短い形式ではなく長い形式です。


注 -

セッション ID、実ユーザー ID、または実グループ ID の processトークンのフィールドを使用できないことがあります。その場合、値は -1 に設定されます。


端末 ID を含むトークンには、いくつかの種類があります。praudit コマンドでは、端末 ID の書式の違いを吸収して、同じ書式で出力されます。端末 ID フィールドを含むすべてのトークンでは、端末 ID フィールドは同じ方式で処理されます。端末 ID は、IP アドレスとポート番号の組み合わせか、デバイス ID です。たとえば、モデムに接続されたシリアルポートの場合は、0 になります。端末 ID には、次の書式があります。

デバイス番号の場合は、次のようになります。

Solaris 7 またはそれ以前のリリースのポート番号の場合は、次のようになります。

Solaris 8 または Solaris 9 のポート番号の場合は、次のようになります。

return トークン

return トークンには、システムコールの戻り状態 (u_error) とプロセスの戻り値 (u_rval1) が含まれています。次の 3 つのフィールドがあります。

return トークンは、必ずシステムコールに関してカーネルによって生成される監査レコードの一部として返されます。このトークンは、アプリケーションを監査中の終了状態と他の戻り値を示します。

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


return,success,0

次の図に return トークンの形式を示します。

図 25-23 return トークンの形式

Graphic

seq トークン

seq トークン (シーケンストークン) は、シーケンス番号が含まれるオプションのトークンです。このトークンは、デバッグに使用されます。seq ポリシーが有効な場合は、このトークンが各監査レコードに追加されます。次の 2 つのフィールドがあります。

シーケンス番号は、監査レコードが生成されて監査トレールに組み込まれるたびに 1 ずつ増分します。praudit コマンドでは、seq トークンは次のように表示されます。


sequence,1292

次の図に seq トークンの形式を示します。

図 25-24 seq トークンの形式

Graphic


注 -

seq トークンは、監査ポリシー seq が有効なときだけ出力されます。


socket トークン

socket トークンには、インターネットソケットを記述する情報が含まれています。次の 6 つのフィールドがあります。

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


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

Solaris 9 では、インターネットアドレスは、4 バイトを使用する IPv4 アドレス、または型の記述に 16 バイトとアドレスに 16 バイトを使用する IPv6 アドレスとして表示できます。次の図に socket トークンの形式を示します。

図 25-25 socket トークンの形式

Graphic

subject トークン

subject トークンには、操作を実行するユーザーまたは実行する予定のユーザーを記述します。形式は process トークンと同じです。次の 9 つのフィールドがあります。

subjectトークンは、必ずシステムコールに関してカーネルによって生成される監査レコードの一部として返されます。praudit コマンドでは、subject トークンは次のように表示されます。


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

監査 ID、ユーザー ID、グループ ID、プロセス ID、セッション ID は、短い形式ではなく長い形式です。


注 -

セッション ID、実ユーザー ID、または実グループ ID の subject トークンのフィールドを使用できないことがあります。その場合、値は -1 に設定されます。


端末 ID を含むトークンには、いくつかの種類があります。praudit コマンドでは、端末 ID の書式の違いを吸収して、同じ書式で出力されます。端末 ID フィールドを含むすべてのトークンでは、端末 ID フィールドは同じ方式で処理されます。端末 ID は、IP アドレスとポート番号の組み合わせか、デバイス ID です。たとえば、モデムに接続されたシリアルポートの場合は、0 になります。端末 ID には、次の書式があります。

デバイス番号の場合は、次のようになります。

Solaris 7 またはそれ以前のリリースのポート番号の場合は次のようになります。

Solaris 8 または Solaris 9 リリースのポート番号の場合は次のようになります。

次の図に subject トークンの形式を示します。

図 25-26 subject トークンの形式

Graphic

text トークン

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

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


text,aw_test_token

次の図に text トークンの形式を示します。

図 25-27 text トークンの形式

Graphic

trailer トークン

headertrailer の 2 つのトークンは、監査レコードの終端を区別し、他のすべてのトークンを囲む特殊なトークンです。header トークンは監査レコードを開始します。trailer トークンは監査レコードを終了します。 trailer トークンは、省略可能なトークンで、trail 監査ポリシーが設定されているときにだけ、各レコードの最後のトークンとして追加されます。

また、trailer トークンを使用すると監査トレールを逆方向に検索できます。3 つのフィールドがあります。

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


trailer,136

次の図に trailer トークンの形式を示します。

図 25-28 trailer トークンの形式

Graphic

監査トレール解析ソフトウェアでは、header および trailer トークンが常に監査レコードに追加されます。ファイルシステムがいっぱいのときなど、書き込みエラーが発生すると、監査レコードが不完全になって切り捨てられることがあります。auditsvc() システムコールは、監査トレールにデータを書き込むときに、監査レコードをすべて書き込もうとします。ファイルシステムの容量が足りなくなると、システムコールは現在の監査レコードを解放せずに終了します。システムコールが再開するときには、切り捨てたレコードを反復できます。詳細は、auditsvc(2) のマニュアルページを参照してください。