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

監査トークンの形式

各監査トークンにはトークンの種類識別子と、そのあとにトークン固有のデータが続いています。各トークンの種類には固有の形式があります。次の表は、各トークンの名前と簡単な説明の一覧です。廃止されたトークンは、以前の Solaris リリースとの互換性のために維持されています。

表 31–4 Solaris 監査の監査トークン

トークン名 

説明 

詳細 

acl

アクセス制御リスト (ACL) 情報 

acl トークン」

arbitrary

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

arbitrary トークン (廃止)」

arg

システムコールの引数値 

arg トークン」

attribute

ファイル vnode トークン 

attribute トークン」

cmd

コマンド引数と環境変数

cmd トークン」

exec_args

exec システムコールの引数 

exec_args トークン」

exec_env

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

exec_env トークン」

exit

プログラム終了情報 

exit トークン (廃止)」

file

監査ファイル情報 

file トークン」

group

プロセスグループ情報 

group トークン (廃止)」

groups

プロセスグループ情報 

groups トークン」

header

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

header トークン」

ip_addr

インターネットアドレス 

ip_addr トークン」

ip

IP ヘッダー情報 

ip トークン (廃止)」

ipc

System V IPC 情報 

ipc トークン」

ipc_perm

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

ipc_perm トークン」

iport

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

iport トークン」

opaque

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

opaque トークン (廃止)」

path

パス情報 

path トークン」

path_attr

アクセスパス情報 

path_attr トークン」

特権

特権設定情報 

privilege トークン」

process

プロセスのトークン情報 

process トークン」

return

システムコールの状態 

return トークン」

sequence

シーケンス番号トークン 

sequence トークン」

socket

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

socket トークン」

サブジェクト

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

subject トークン」

text

ASCII 文字列 

text トークン」

trailer

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

trailer トークン」

uauth

承認の使用 

uauth トークン」

upriv

特権の使用 

upriv トークン」

zonename

ゾーンの名前 

zonename トークン」

監査レコードは常に header トークンで始まります。header トークンは、監査トレール内で監査レコードの始まりを示します。ユーザーの動作に起因するイベントの場合、subjectprocess トークンは、イベントを発生させたプロセスの値を参照します。ユーザーの動作に起因しないイベントの場合、process トークンはシステムを参照します。

acl トークン

acl トークンは、アクセス制御リスト (ACL) に関する情報を記録します。

acl トークンは、次の 4 つの固定長フィールドで構成されます。

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


<acl type="1" value="root" mode="6"/>

arbitrary トークン (廃止)

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

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


arbitrary,decimal,int,1
42

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

表 31–5 arbitrary トークンの出力形式フィールドの値

値 

動作 

AUP_BINARY

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

AUP_OCTAL

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

AUP_DECIMAL

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

AUP_HEX

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

AUP_STRING

日付が文字列で出力されます 

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

表 31–6 arbitrary トークンの項目サイズフィールドの値

値 

動作 

AUR_BYTE

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

AUR_SHORT

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

AUR_LONG

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

arg トークン

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

arg トークンには次の 5 つのフィールドがあります。

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


<argument arg-num="2" value="0x0" desc="new file uid"/>

attribute トークン

attribute トークンには、ファイル vnode からの情報が含まれています。

attribute トークンには次の 7 つのフィールドがあります。

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

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


<attribute mode="100644" uid="adm" gid="adm" fsid="136" nodeid="2040" device="0"/>

cmd トークン

cmd トークンは、コマンドに割り当てられた引数のリストおよび環境変数のリストを記録します。

cmd トークンには次のフィールドがあります。

praudit -x コマンドでは、cmd トークンのフィールドは次のように表示されます。次に示すのは、切り詰められた cmd トークンです。行は、表示の都合上、折り返して記載されています。


<cmd><arge>WINDOWID=6823679</arge>
<arge>COLORTERM=gnome-terminal</arge>
<arge>...LANG=C</arge>...<arge>HOST=machine1</arge>
<arge>LPDEST=printer1</arge>...</cmd>

exec_args トークン

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

このトークンの残りの部分は、count 文字列からなっています。praudit -x コマンドでは、exec_args トークンのフィールドは次のように表示されます。


<exec_args><arg>/usr/bin/sh</arg><arg>/usr/bin/hostname</arg></exec_args>

注 –

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


exec_env トークン

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

このトークンの残りの部分は、count 文字列からなっています。praudit -x コマンドでは、exec_env トークンのフィールドは次のように表示されます。行は、表示の都合上、折り返して記載されています。


<exec_env><env>_=/usr/bin/hostname</env>
<env>DTXSERVERLOCATION=local</env><env>SESSIONTYPE=altDt</env>
<env>LANG=C</env><env>SDT_NO_TOOLTALK=1</env><env>SDT_ALT_HELLO=/bin/true</env>
<env>PATH=/usr/bin:/usr/openwin/bin:/usr/ucb</env>
<env>OPENWINHOME=/usr/openwin</env><env>LOGNAME=jdoe</env><env>USER=jdoe</env>
<env>DISPLAY=:0</env><env>SHELL=/bin/csh</env><env>START_SPECKEYSD=no</env>
<env>SDT_ALT_SESSION=/usr/dt/config/Xsession2.jds</env><env>HOME=/home/jdoe</env>
<env>SDT_NO_DTDBCACHE=1</env><env>PWD=/home/jdoe</env><env>TZ=US/Pacific</env>
</exec_env>

注 –

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


exit トークン (廃止)

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

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


exit,Error 0,0

file トークン

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

praudit -x コマンドでは、file トークンのフィールドは次のように表示されます。このトークンは、監査証跡の次のファイルを特定します。行は、表示の都合上、折り返して記載されています。


<file iso8601="2009-04-08 14:18:26.200 -07:00">
/var/audit/machine1/files/20090408211826.not_terminated.machine1</file>

group トークン (廃止)

このトークンは、groups トークンに置き換えられています。groups トークン」を参照してください。

groups トークン

groups トークンは group トークンを置き換えます。groups トークンは、プロセスの資格からグループエントリを記録します。

group トークンには次の 2 つの固定長フィールドがあります。

このトークンの残りの部分は、count グループエントリからなっています。

praudit -x コマンドでは、groups トークンのフィールドは次のように表示されます。


<group><gid>staff</gid><gid>other</gid></group>

注 –

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


header トークン

header トークンは、監査レコードの開始を示すという意味で、特殊なトークンです。trailer トークンとの組み合わせでレコード内のほかのすべてのトークンを囲む特殊なトークンです。

header トークンには次の 8 つのフィールドがあります。

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

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


header,69,2,su,,machine1,2009-04-08 13:11:58.209 -07:00

praudit -x コマンドでは、header トークンのフィールドは監査レコードの先頭に表示されます。行は、表示の都合上、折り返して記載されています。


<record version="2" event="su" host="machine1" 
iso8601="2009-04-08 13:11:58.209 -07:00">

ip_addr トークン

ip_addr トークンには、インターネットプロトコルアドレスが含まれます。Solaris 8 リリースから、IPv4 形式、IPv6 形式のいずれかでインターネットアドレスを表示できるようになりました。IPv4 アドレスは 4 バイトを使用します。IPv6 アドレスは、1 バイトを使って種類を記述し、さらに 16 バイトを使ってアドレスを記述します。

in_addr トークンには次の 3 つのフィールドがあります。

praudit -x コマンドでは、ip_addr トークンの内容は次のように表示されます。


<ip_address>machine1</ip_address>

ip トークン (廃止)

ip トークンには、インターネットプロトコルのヘッダーのコピーが含まれます。ip トークンには次の 2 つのフィールドがあります。

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


ip address,0.0.0.0

IP ヘッダー構造は、/usr/include/netinet/ip.h ファイル内で定義されています。

ipc トークン

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

ipc トークンには次の 3 つのフィールドがあります。


注 –

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


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

表 31–7 IPC オブジェクトの形式フィールドの値

名前 

値 

説明 

AU_IPC_MSG

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

AU_IPC_SEM

IPC セマフォーオブジェクト 

AU_IPC_SHM

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

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


<IPC ipc-type="shm" ipc-id="15"/>

ipc_perm トークン

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

ipc_perm トークンには次の 8 つのフィールドがあります。

praudit -x コマンドでは、ipc_perm トークンのフィールドは次のように表示されます。行は、表示の都合上、折り返して記載されています。


<IPC_perm uid="jdoe" gid="staff" creator-uid="jdoe" 
creator-gid="staff" mode="100600" seq="0" key="0x0"/>

値は、IPC オブジェクトに関連付けられた ipc_perm 構造から取り出されます。

iport トークン

iport トークンには、TCP または UDP ポートアドレスが含まれています。

iport トークンには次の 2 つのフィールドがあります。

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


ip port,0xf6d6

opaque トークン (廃止)

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

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


opaque,12,0x4f5041515545204441544100

path トークン

path トークンには、オブジェクトのアクセスパス情報が含まれています。

path トークンには次のフィールドがあります。

praudit コマンドでは、path トークンは 2 番目のフィールドなしで、次のように表示されます。


path,/etc/security/audit_user

praudit -x コマンドでは、path トークンの内容は次のように表示されます。


<path>/etc/security/audit_user</path>

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

図 31–4 path トークンの形式

この図については、前の本文中で説明しています。

path_attr トークン

path_attr トークンには、オブジェクトのアクセスパス情報が含まれています。アクセスパスは、path トークンオブジェクトの下の属性ファイルオブジェクトのシーケンスを指定します。openat() などのシステムコールは、属性ファイルにアクセスします。属性ファイルオブジェクトの詳細については、fsattr(5) のマニュアルページを参照してください。

path_attr トークンには次のフィールドがあります。

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


path_attr,1,attr_file_name

privilege トークン

privilege トークンは、プロセス上での特権の使用を記録します。privilege トークンは、基本セットの特権に対して記録されません。特権が管理者の処理により基本セットから削除された場合、その特権の使用は記録されます。特権の詳細は、「特権 (概要)」を参照してください。

privilege トークンには次のフィールドがあります。

praudit -x コマンドでは、privilege トークンのフィールドは次のように表示されます。行は、表示の都合上、折り返して記載されています。


<privilege set-type="Effective">file_chown,file_dac_read,
file_dac_write,net_privaddr,proc_exec,proc_fork,proc_setid</privilege>

process トークン

process トークンには、シグナルの受信者など、プロセスに関連付けられたユーザーに関する情報が含まれています。

process トークンには次の 9 つのフィールドがあります。

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


注 –

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


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

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

Solaris 8 よりも前のリリースのポート番号の場合、端末 ID は次のようになります。

Solaris 8 以降のリリースのポート番号の場合、端末 ID は次のようになります。

praudit -x コマンドでは、process トークンのフィールドは次のように表示されます。行は、表示の都合上、折り返して記載されています。


<process audit-uid="-2" uid="root" gid="root" ruid="root" 
rgid="root" pid="9" sid="0" tid="0 0 0.0.0.0"/>

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

図 31–5 process トークンの形式

この図については、前の本文中で説明しています。

return トークン

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

return トークンには次の 3 つのフィールドがあります。

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

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


return,failure: Operation now in progress,-1

praudit -x コマンドでは、return トークンのフィールドは次のように表示されます。


<return errval="failure: Operation now in progress" retval="-1/">

sequence トークン

sequence トークンには、シーケンス番号が含まれています。シーケンス番号は、監査レコードが監査トレールに組み込まれるたびに 1 ずつ増分します。このトークンはデバッグに使用されます。

sequence トークンには次の 2 つのフィールドがあります。

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


sequence,1292

praudit -x コマンドでは、sequence トークンの内容は次のように表示されます。


<sequence seq-num="1292"/>

注 –

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


socket トークン

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

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


socket,0x0002,0x83b1,localhost

ほとんどのインスタンスで、トークンには次の 8 つのフィールドがあります。

Solaris 8 リリースから、IPv4 形式、IPv6 形式のいずれかでインターネットアドレスを表示できるようになりました。IPv4 アドレスは 4 バイトを使用します。IPv6 アドレスは、1 バイトを使って種類を記述し、さらに 16 バイトを使ってアドレスを記述します。

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


socket,0x0002,0x0002,0x83cf,example1,0x2383,server1.Subdomain.Domain.COM

praudit -x コマンドでは、socket トークンのフィールドは次のように表示されます。行は、表示の都合上、折り返して記載されています。


<socket sock_domain="0x0002" sock_type="0x0002" lport="0x83cf" 
laddr="example1" fport="0x2383" faddr="server1.Subdomain.Domain.COM"/>

subject トークン

subject トークンは、ある操作を実行するユーザーまたは実行を試みるユーザーを記述します。形式は process トークンと同じです。

subject トークンには次の 9 つのフィールドがあります。

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


注 –

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


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

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

Solaris 8 よりも前のリリースのポート番号の場合、端末 ID は次のようになります。

Solaris 8 以降のリリースのポート番号の場合、端末 ID は次のようになります。

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


subject,jdoe,root,root,root,root,1631,1421584480,8243 65558 machine1

praudit -x コマンドでは、subject トークンのフィールドは次のように表示されます。行は、表示の都合上、折り返して記載されています。


<subject audit-uid="jdoe" uid="root" gid="root" ruid="root" 
rgid="root" pid="1631" sid="1421584480" tid="8243 65558 machine1"/>

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

図 31–6 subject トークンの形式

この図については、前の本文中で説明しています。

text トークン

text トークンには、テキスト文字列が含まれています。

text トークンには次の 3 つのフィールドがあります。

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


<text>booting kernel</text>

trailer トークン

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

trailer トークンを含む監査レコードが生成された場合、 auditreduce コマンドは、 trailer がレコードの header を正しくポイントしているかどうかを検証します。また、trailer トークンを使用すると監査トレールを逆方向に検索できます。

trailer トークンには次の 3 つのフィールドがあります。

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


trailer,136

uauth トークン

uauth トークンは、コマンドまたはアクションでの承認の使用を記録します。

uauth トークンには次のフィールドがあります。

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


use of authorization,solaris.admin.printer.delete

upriv トークン

upriv トークンは、コマンドまたはアクションでの特権の使用を記録します。

praudit -x コマンドでは、upriv トークンのフィールドは次のように表示されます。


<use_of_privilege result="successful use of priv">proc_setid</use_of_privilege>

zonename トークン

zonename トークンは、監査イベントが発生したゾーンを記録します。文字列「global」は、大域ゾーンで発生した監査イベントを示します。

zonename トークンには次のフィールドがあります。

praudit -x コマンドでは、zonename トークンの内容は次のように表示されます。


<zone name="graphzone"/>