Chapter 9: より詳細なプロファイルの管理
9.1. プロファイルの初期化
プロファイルは、アクセスを制限したい内容だけを有効にすることでポリシーの作成を容易にするために、カスタマイズすることができます。プロファイルはポリシーエディタを用いて後からあなたの要望に沿うように修正することができます。以下に、指定可能なコマンドラインオプションの一覧を示します:
オプション |
デフォルト |
内容 |
---|---|---|
root="$rootdir" |
/ |
ポリシーファイル用ディレクトリを生成するときのルートディレクトリを指定します。 |
policy_dir="$configdir" |
/etc/tomoyo/ |
ポリシーファイル用ディレクトリを指定します。もし、このオプションを指定した場合、 $configdir へのシンボリックリンクを /etc/tomoyo という名前で作成する必要があります。 |
/usr/lib/tomoyo/init_policy
を実行した場合、 /etc/tomoyo/profile.conf は以下のようになります:
PROFILE_VERSION=20090903 PREFERENCE::enforcing={ verbose=yes } PREFERENCE::learning={ verbose=no max_entry=2048 } PREFERENCE::permissive={ verbose=yes } 0-COMMENT=-----Disabled Mode----- 0-CONFIG={ mode=disabled } 1-COMMENT=-----Learning Mode----- 1-CONFIG={ mode=learning } 2-COMMENT=-----Permissive Mode----- 2-CONFIG={ mode=permissive } 3-COMMENT=-----Enforcing Mode----- 3-CONFIG={ mode=enforcing }
9.2. プロファイルの構文
9.2.1. 書式
各プロファイルには3種類の行が存在します:
名前 |
内容 |
---|---|
COMMENT |
プロファイルの内容を説明するための1行コメント。 |
CONFIG |
アクセス制御モードの設定。 |
PREFERENCE |
様々なオプションの設定。 |
9.2.2. CONFIG 行
CONFIG 行では以下のオプションを指定できます:
オプション |
デフォルト |
内容 |
---|---|---|
mode |
disabled |
アクセス制御モードを指定します。以下の表を参照してください。 |
CONFIG 行の mode パラメータは以下の値を指定できます:
値 |
意味 |
---|---|
disabled |
無効。通常のカーネルと同様に動作する。 |
learning |
学習モード。アクセス要求がポリシーに違反しても拒否しない。アクセス要求をポリシーへ追加する。 |
permissive |
確認モード。アクセス要求がポリシーに違反しても拒否しない。アクセス要求をポリシーへ追加しない。 |
enforcing |
強制モード。アクセス要求がポリシーに違反したら拒否する。アクセス要求をポリシーへ追加しない。 |
デフォルトでは CONFIG 行に全てのカテゴリの全ての機能についてのアクセス制御モードの設定が行われます。 CONFIG 行が指定されていない場合、 mode=disabled が指定されたものとして解釈されます。ただし、カテゴリを指定した CONFIG 行を指定することにより、デフォルトの設定を上書きすることができます:
名前 |
アクセス制御モードが設定される範囲 |
---|---|
CONFIG |
全ての機能 |
CONFIG::file |
ファイルに関する操作のみ |
(なお、このバージョンでは CONFIG::file カテゴリのみがサポートされているため、 CONFIG と CONFIG::file は同じ機能を指します。)
カテゴリ単位の設定は、機能単位の設定により上書きすることができます:
名前 |
アクセス制御モードが設定される範囲 |
---|---|
CONFIG::file::execute |
プログラムの実行およびドメイン遷移 |
CONFIG::file::open |
読み込みまたは書き込みモードでのファイルのオープン |
CONFIG::file::create |
ファイルの作成 |
CONFIG::file::unlink |
ファイルの削除 |
CONFIG::file::mkdir |
ディレクトリの作成 |
CONFIG::file::rmdir |
ディレクトリの削除 |
CONFIG::file::mkfifo |
名前付きパイプの作成 |
CONFIG::file::mksock |
UNIXドメインソケットの作成 |
CONFIG::file::truncate |
ファイルの切り詰め |
CONFIG::file::symlink |
シンボリックリンクの作成 |
CONFIG::file::rewrite |
ファイルの書き換え |
CONFIG::file::mkblock |
ブロック型デバイスファイルの作成 |
CONFIG::file::mkchar |
キャラクタ型デバイスファイルの作成 |
CONFIG::file::link |
ハードリンクの作成 |
CONFIG::file::rename |
ファイルやディレクトリの名前の変更 |
CONFIG::file::chmod |
ファイルやディレクトリのモードの変更 |
CONFIG::file::chown |
ファイルやディレクトリの所有者の変更 |
CONFIG::file::chgrp |
ファイルやディレクトリのグループの変更 |
CONFIG::file::ioctl |
IOCTL の使用 |
CONFIG::file::chroot |
ルートディレクトリの変更 |
CONFIG::file::mount |
マウント |
CONFIG::file::unmount |
アンマウント |
CONFIG::file::pivot_root |
ルートディレクトリの交換 |
例えば、プログラムの実行のみを制限するプロファイルは以下のように指定できます:
4-COMMENT=-----Enforcing file::execute only----- 4-CONFIG::file::execute={ mode=enforcing }
CONFIG::file::execute 行は CONFIG::file 行の設定を上書きすることに注目してください。また、 CONFIG::file 行は CONFIG 行の設定(指定されていないので mode=disabled として解釈されます)を上書きすることに注目してください。このように指定することで、アクセスを制限したい操作だけを制限する詳細なプロファイルを定義することができます。
また、1つのプロファイルの中で複数のアクセス制御モードを組み合わせることも可能です。例えば、ネットワークに関する操作には強制モードを適用しつつ、ファイルに関する操作には学習モードを適用するということができます:
5-COMMENT=-----Enforcing file::execute and learning other file operations----- 5-CONFIG::file={ mode=learning } 5-CONFIG::file::execute={ mode=enforcing }
9.2.3. PREFERENCE 行
PREFERENCE 行では以下のオプションを指定できます:
名前 |
内容 |
---|---|
verbose |
ポリシー違反が発生した場合にコンソールにメッセージを表示するかどうかを指定します。 yes または no を指定できます。 |
max_entry |
学習モードで動作中にカーネルが自動的に追加することができるアクセス許可の件数の上限を指定します。 0 以上の整数値を指定できます。 0 を指定すると学習モードは確認モードと同様に振舞うようになります。バイト数での上限を /sys/kernel/security/tomoyo/meminfo インタフェースから指定することもできます。 |