解説
audit ファイル形式は、システム監査データを表すトークンベースのレコードストリームである、Sun の Basic Security Module (BSM) ファイル形式に基づいています。このファイル形式は、柔軟性と拡張可能性があり、広範囲のデータタイプを記述することができ、そして適度に後方と前方互換性のある方法で新しいデータタイプを記述するために容易に拡張することができます。
BSM トークンストリームは、ストリームのためのタイムスタンプとファイル名情報を提供する、“file”トークンで通常始まって、終わります。単一のファイルソースとは対照的にストリームから BSM トークンストリームを処理するとき、ファイルトークンは、ストリームの特定の部分がいつ始まって、終わるかを識別する通常のレコードの間の任意な点で見られます。他のすべてのトークンは、監査レコードを記述する、“header”トークンで始まり、“trailer”トークンで終わる、完全な BSM 監査レコードのコンテキストに現れます。これらの 2 つのトークンの間には、プロセス情報、ファイルパス名、 IPC オブジェクト情報、MAC ラベル、ソケット情報などのような、さまざまなデータトークンが現れます。
BSM ファイル形式は、それぞれのレコードイベントタイプのための特有のトークン命令を定義しています。しかしながら、強制的なアクセス制御のような、どんなシステムオプションが存在しているか、使用中のオペレーティングシステムによって、何らかの変化が起こるかもしれません。
このマニュアルページは、共通のトークンタイプとそれらのバイナリ形式を文書化しており、参照目的のためたけを対象としています。アプリケーションプログラマが、手動でレコードを解析するか、または構築するよりむしろ、トークンを読み書きするために libbsm(3) インタフェースを使用することはお勧めです。
ファイルトークン
“file”トークンは、監査ログがいつ始まって、いつ終わるかを示すために監査ログファイルの始まりと終りで使用されます。一緒に連結されるなら、元のファイルの境界がまだ観察可能で、監査ログのギャップを識別できるように、それはス名を含んでいます。
au_to_file(3) を使用して“file”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Seconds |
4 バイト |
ファイルタイムスタンプ |
Microseconds |
4 バイト |
ファイルタイムスタンプ |
File name length |
2 バイト |
監査証跡 (audit trail) のファイル名 |
File pathname |
N バイト + 1 NUL |
監査証跡のファイル名 |
ヘッダトークン
“header”トークンは、完全な監査レコードの始まりをマークするために使用され、バイト単位の合計レコードの長さ、レコードレイアウトののバージョン番号、イベントタイプとサブタイプ、およびイベントが起こった時刻を含んでいます。
au_to_header32(3) を使用して 32 ビットの“header”トークンを作成することができます。
au_to_header64(3) を使用して 64 ビットの“header”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Record Byte Count |
4 バイト |
レコードのバイト数 |
Version Number |
2 バイト |
レコードバージョン番号 |
Event Type |
2 バイト |
イベントタイプ |
Event Modifier |
2 バイト |
イベントサブタイプ |
Seconds |
4/8 バイト |
レコードタイムスタンプ (32/64 ビット) |
Nanoseconds |
4/8 バイト |
レコードタイムスタンプ (32/64 ビット) |
拡張ヘッダトークン
“expanded header” (拡張ヘッダ) トークンは、マシンの IPv4 または IPv6 アドレスの追加がある“header”トークンの拡張バージョンです。
au_to_header32_ex(3) を使用して 32 ビットの拡張“header”トークンを作成することができます。
au_to_header64_ex(3) を使用して 64 ビットの拡張“header”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Record Byte Count |
4 バイト |
レコードのバイト数 |
Version Number |
2 バイト |
レコードバージョン番号 |
Event Type |
2 バイト |
イベントタイプ |
Event Modifier |
2 バイト |
イベントサブタイプ |
Address Type/Length |
1 バイト |
ホストアドレスタイプと長さ |
Machine Address |
4/16 バイト |
IPv4 または IPv6 アドレス |
Seconds |
4/8 バイト |
レコードタイムスタンプ (32/64 ビット) |
Nanoseconds |
4/8 バイト |
レコードタイムスタンプ (32/64 ビット) |
トレーラ (trailer) トークン
“trailer”は、BSM 監査レコードを終了し、マジック番号、
AUT_TRAILER_MAGIC とレコードが適切に読み込まれることを有効にするために使用される長さを含んでいます。
au_to_trailer(3) を使用して“trailer”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Trailer Magic |
2 バイト |
トレーラマジック番号 |
Record Byte Count |
4 バイト |
レコードのバイト数 |
任意のデータトークン
“arbitrary data”トークンは、不透明な (タイプがない) データのバイトストリームを含んでいます。データのサイズは、各データの単位のサイズがデータの単位の数で掛けられるものとして計算されます。“How to print”フィールドは、データを印刷する方法を指定するために存在していますが、そのフィールドの解釈は、現在定義されません。
au_to_data(3) を使用して“arbitrary data”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
How to Print |
1 バイト |
ユーザ定義の印刷情報 |
Basic Unit |
1 バイト |
バイト単位のユニットのサイズ |
Unit Count |
1 バイト |
存在するデータのユニットの数 |
Data Items |
可変長 |
ユーザデータ |
in_addr トークン
“in_addr”トークンは、ネットワークバイト順の IPv4 アドレスを保持しています。 IPv4 アドレスのための
au_to_in_addr(3) を使用して“in_addr”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
IP Address |
4 バイト |
IPv4 アドレス |
拡張 in_addr トークン
“in_addr_ex”トークンは、ネットワークバイト順の IPv4 または IPv6 アドレスを保持しています。 IPv6 アドレスのための
au_to_in_addr_ex(3) を使用して“in_addr_ex”トークンを作成することができます。
このトークンの記憶域での情報については、 「バグ」 セクションを参照しててください。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
IP Address Type |
1 バイト |
アドレスのタイプ |
IP Address |
4/16 バイト |
IPv4 または IPv6 アドレス |
ip トークン
“ip”トークンは、ネットワークバイト順で IP パケットヘッダを含んでいます。
au_to_ip(3) を使用して“ip”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Version and IHL |
1 バイト |
バージョンと IP ヘッダ長 |
Type of Service |
1 バイト |
IP TOS フィールド |
Length |
2 バイト |
ネットワークバイト順の IP パケット長 |
ID |
2 バイト |
再構築のための IP ヘッダ ID |
Offset |
2 バイト |
IP フラグメントオフセットとフラグ, ネットワークバイト順 |
TTL |
1 バイト |
IP 有効期限 (Time-to-Live) |
Protocol |
1 バイト |
IP プロトコル番号 |
Checksum |
2 バイト |
IP ヘッダチェックサム, ネットワークバイト順 |
Source Address |
4 バイト |
IPv4 発信元 (始点) アドレス |
Destination Address |
4 バイト |
IPv4 宛先 (終点) アドレス |
iport トークン
“iport”トークンは、ネットワークバイト順で IP ポート番号を格納しています。
au_to_iport(3) を使用して“iport”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Port Number |
2 バイト |
ネットワーク順のポート番号 |
パストークン
“path”トークンは、パス名を含んでいます。
au_to_path(3) を使用して“path”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Path Length |
2 バイト |
バイト単位のパスの長さ |
Path |
N バイト + 1 NUL |
パス名 |
path_attr トークン
“path_attr”トークンは、1 組のヌル文字で終了したパス名を含んでいます。
libbsm(3) API は、現在“path_attr”トークンを作成することができません。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Count |
2 バイト |
トークン中のヌル文字で終了する文字列の数 |
Path |
可変長 |
ヌル文字で終了する文字列のカウント |
プロセス (process) トークン
“process”トークンは、シグナル配信のための宛先のような、監査可能なイベントのターゲットとして生じるプロセスのセキュリティのプロパティ (特性) の記述を含んでいます。それを、監査可能なイベントを実行するサブジェクトを記述する、“subject”トークンと混同するべきではありません。これは、ユーザ ID やグループ ID のような、伝統的な
UNIX セキュリティのプロパティを含んでいますが、監査ユーザ ID とセッションのような監査情報も含んでいます。
au_to_process32(3) または
au_to_process64(3) を使用して“process”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Audit ID |
4 バイト |
監査ユーザ ID |
Effective User ID |
4 バイト |
実効ユーザ ID |
Effective Group ID |
4 バイト |
実効グループ ID |
Real User ID |
4 バイト |
実ユーザ ID |
Real Group ID |
4 バイト |
実グループ ID |
Process ID |
4 バイト |
プロセス ID |
Session ID |
4 バイト |
監査セッション ID |
Terminal Port ID |
4/8 バイト |
端末ポート ID (32/64 ビット) |
Terminal Machine Address |
4 バイト |
マシンの IP アドレス |
拡張プロセス (expanded process) トークン
“expanded process”トークンは、IPv6 アドレスを含むことができるマシンアドレスタイプと可変長アドレス記憶域を追加して“process”トークンの内容含んでいます。
au_to_process32_ex(3) または
au_to_process64_ex(3) を使用して“expanded process”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Audit ID |
4 バイト |
監査ユーザ ID |
Effective User ID |
4 バイト |
実効ユーザ ID |
Effective Group ID |
4 バイト |
実効グループ ID |
Real User ID |
4 バイト |
実ユーザ ID |
Real Group ID |
4 バイト |
実グループ ID |
Process ID |
4 バイト |
プロセス ID |
Session ID |
4 バイト |
監査セッション ID |
Terminal Port ID |
4/8 バイト |
端末ポート ID (32/64 ビット) |
Terminal Address Type/Length |
1 バイト |
マシンアドレスの長さ |
Terminal Machine Address |
4 バイト |
マシンの IPv4 または IPv6 アドレス |
リターン (return) トークン
“return”トークンは、グローバル変数
errno に関連しているリターン値とエラー番号を含んで、システムコールまたはライブラリ関数リターン条件を含んでいます。
au_to_return32(3) または
au_to_return64(3) を使用して“return”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Error Number |
1 バイト |
エラー値, または未定義なら 0 |
Return Value |
4/8 バイト |
リターン値 (32/64 ビット) |
サブジェクト (subject) トークン
“subject”トークンは、監査レコードによって記述された操作を実行するサブジェクトでの情報を含んでいて、“process”と“expanded process”トークンに見られるものと同様の情報を含んでいます。しかしながら、それらのトークンは、記述されるプロセスが、認可されたパーティではなく、操作のターゲットであるところで使用されます。
au_to_subject32(3) と
au_to_subject64(3) を使用して“subject”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Audit ID |
4 バイト |
監査ユーザ ID |
Effective User ID |
4 バイト |
実効ユーザ ID |
Effective Group ID |
4 バイト |
実効グループ ID |
Real User ID |
4 バイト |
実ユーザ ID |
Real Group ID |
4 バイト |
実グループ ID |
Process ID |
4 バイト |
プロセス ID |
Session ID |
4 バイト |
監査セッション ID |
Terminal Port ID |
4/8 バイト |
端末ポート ID (32/64 ビット) |
Terminal Machine Address |
4 バイト |
マシンの IP アドレス |
拡張サブジェクト (expanded subject) トークン
“expanded subject”トークンは、端末の ID でタイプ/長さと可変サイズマシンアドレス情報を追加して“subject”トークンと同じ要素から成ります。
au_to_subject32_ex(3) または
au_to_subject64_ex(3) を使用して“expanded subject”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Audit ID |
4 バイト |
監査ユーザ ID |
Effective User ID |
4 バイト |
実効ユーザ ID |
Effective Group ID |
4 バイト |
実効グループ ID |
Real User ID |
4 バイト |
実ユーザ ID |
Real Group ID |
4 バイト |
実グループ ID |
Process ID |
4 バイト |
プロセス ID |
Session ID |
4 バイト |
監査セッション ID |
Terminal Port ID |
4/8 バイト |
端末ポート ID (32/64 ビット) |
Terminal Address Type/Length |
1 バイト |
マシンアドレスの長さ |
Terminal Machine Address |
4 バイト |
マシンの IPv4 または IPv6 アドレス |
System V IPC トークン
“System V IPC”トークンは、System V IPC メッセージハンドル、セマフォハンドル、または共有メモリハンドルを含んでいます。 System V IPC トークンは、
au_to_ipc(3) を使用して作成されます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Object ID type |
1 バイト |
オブジェクト ID |
Object ID |
4 バイト |
オブジェクト ID |
テキスト (text) トークン
“text”トークンは、一つのヌル文字で終了するテキスト文字列を含んでいます。
au_to_text(3) を使用して“text”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Text Length |
2 バイト |
ヌル文字を含むテキスト文字列の長さ |
Text |
N バイト + 1 NUL |
ヌル文字を含むテキスト文字列 |
属性 (attribute) トークン
“attribute”トークンは、監査イベントに関連しているファイルの属性について記述しています。ファイルが 0、1、または多くのパス名によって識別されるとき、パス名は、ファイルのための属性ブロックに含まれていません。また、オプションの“path”トークンは、もしあるなら、オブジェクトに到達するために使用されるどのパスかを示す監査レコードも存在しています。
au_to_attr32(3) または
au_to_attr64(3) を使用して“attribute”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
File Access Mode |
1 バイト |
ファイルに関連する mode_t |
Owner User ID |
4 バイト |
ファイルに関連する uid_t |
Owner Group ID |
4 バイト |
ファイルに関連する gid_t |
File System ID |
4 バイト |
ファイルに関連する fsid_t |
File System Node ID |
8 バイト |
ファイルに関連する ino_t |
Device |
4/8 バイト |
デバイスのメジャ/マイナ番号 (32/64 ビット) |
グループ (groups) トークン
“groups”トークンは、監査イベントに関連しているグループ ID のリストを含んでします。
au_to_groups(3) を使用して“groups”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Number of Groups |
2 バイト |
トークンのグループの数 |
Group List |
N * 4 バイト |
N グループ ID のリスト |
System V IPC パーミッション (System V IPC permission) トークン
“System V IPC パーミッション”トークンは、System V IPC アクセスパーミッションを含んでいます。 System V IPC パーミッショントークンは、
au_to_ipc_perm(3) を使用して作成されます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Owner user ID |
4 バイト |
IPC 所有者のユーザ ID |
Owner group ID |
4 バイト |
IPC 所有者のグループ ID |
Creator user ID |
4 バイト |
IPC 作成者のユーザ ID" |
Creator group ID |
4 バイト |
IPC 作成者のグループ ID |
Access mode |
4 バイト |
アクセスモード |
Sequence number |
4 バイト |
シーケンス番号 |
Key |
4 バイト |
IPC キー |
arg トークン
“arg”トートンは、システムコールの引数に関する情報を含んでいます。必要な引数値のサイズによって、arg トークンは、
au_to_arg32(3) または
au_to_arg64(3) を使用して作成されます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Argument ID |
1 バイト |
引数 ID |
Argument value |
4/8 バイト |
引数値 |
Length |
2 バイト |
テキストの長さ |
Text |
N バイト + 1 nul |
ヌル文字を含む文字列 |
exec_args トークン
“exec_args”トークンは、exec() システムコールの引数に関する情報を含んでいます。 exec_args トークンは、
au_to_exec_args(3) を使用して作成されます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Count |
4 バイト |
引数の数 |
Text |
* バイト |
ヌル文字で終了する文字列の数 |
exec_env トークン
“exec_env”トークンは、exec() システムコールのための現在の環境変数を含んでいます。 exec_args トークンは、
au_to_exec_env(3) を使用して作成されます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Count ID |
4 バイト |
変数の数 |
Text |
* バイト |
ヌル文字で終了する文字列の数 |
終了 (exit) トークン
“exit”トークンは、プロセスの終了/リターンコード情報を含んでいます。
au_to_exit(3) を使用して“exit”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Status |
4 バイト |
終了時のプロセス状態 |
Return Value |
4 バイト |
終了時のプロセスリターン値 |
ソケット (socket) トークン
“socket”トークンは、UNIX ドメインとインターネットソケットに関する情報を含んでいます。各トークンには、4 か 8 つのフィールドがあります。ソケットのタイプに依存して、ソケットトークンは、
au_to_sock_unix(3),
au_to_sock_inet32(3) または
au_to_sock_inet128(3) を使用して作成されます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Socket family |
2 バイト |
ソケットファミリ |
Local port |
2 バイト |
ローカルポート |
Socket address |
4 バイト |
ソケットアドレス |
拡張ソケット (expanded socket) トークン
“expanded socket”トークンは、IPv4 と IPv6 ソケットの情報を含みます。
au_to_socket_ex(3) を使用して“拡張ソケット (expanded socket)”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Socket domain |
2 バイト |
ソケットドメイン |
Socket type |
2 バイト |
ソケットタイプ |
Address type |
2 バイト |
アドレスタイプ (IPv4/IPv6) |
Local port |
2 バイト |
ローカルポート |
Local IP address |
4/16 バイト |
ローカル IP アドレス |
Remote port |
2 バイト |
リモートポート |
Remote IP address |
4/16 バイト |
リモート IP アドレス |
seq トークン
“seq”トークンは、ユニークで単調に増加する監査イベントシーケンス ID を含んでいます。 32 ビットの制限された範囲のため、シリアル番号演算と警告は、シーケンス番号を比較するときに使用されるべきです。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Sequence Number |
4 バイト |
監査イベントシーケンス番号 |
特権 (privilege) トークン
“privilege”トークンは、...
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
use-of-auth トークン
“use-of-auth”トークンは、...
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
コマンド (command) トークン
“command”トークンは、...
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
ACL トークン
“ACL”トークンは、...
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
ゾーン名 (zonename) トークン
“zonename”トークンは、創造されたレコードからのゾーンまたは jail の名前のヌル文字で終了する文字列を保持しています。
au_to_zonename(3) を使用して“zonename”トークンを作成することができます。
フィールド |
バイト |
説明 |
Token ID |
1 バイト |
トークン ID |
Zonename length |
2 バイト |
ヌルを含むゾーン名文字列の長さ |
Zonename |
N バイト + 1 ヌル |
ヌルを含むゾーン名文字列 |