実践Linux
SELinux SELinux 目次へ TOP(HOME)へ
SELinux マクロを利用してteファイルを記述する 2012年5月
audit2allowを使って設定する場合、permissiveモードに切り替えての動作テストが必要になってくる。必要なアクセスの種類があらかじめ分かっているときなどは、むしろ手作業で記述した方が早い。このとき利用されるのがマクロ。マクロを利用すると簡潔な記述で済ますことができるようになる。このとき、fcファイルの設定書式は変わらないが、teファイルの書式が多少変わってくる。
teファイルの書式
◆モジュールの命名
モジュールの命名は,リファレンス・ポリシーの書式を用いて行う。
poilcy_module(<モジュュール名><バージョン番号>)
この書式を用いることにより,require設定の記述が少なくて済む。
◆タイプ付与設定
タイプ付与設定の書式は,これまでと同じ。
◆Require設定
require設定は,次のような書式となる。
require{
type <ドメイン>;
type <タイプ>;
}
このように,teファイルで使っているドメインとタイプを列挙するが、audit2allowで出力されたrequire設定と比べてみると,「class」の項目が設定されていない。これはモジュールの命名に「policy_module」を使ったことによる。これを宣言すると、設定反映時に「class」に関するrequire設定が自動的になされるようになる。
◆allow設定
アクセス権限を与えるためのallow設定には、マクロを利用した次の書式を用いる。
allow <ドメイン> <タイプ>:notdevfile_class_set <ファイルパーミッション・マクロ>;
allow <ドメイン> <タイプ>:dir <ディレクトリパーミッション・マクロ>;
1行目は,通常のファイルおよびシンボリック・リンクに対してアクセス権限を与えるための設定(notdevfile_class_setは、デバイスファイル以外のすべてのファイル関連classに展開されるマクロ)。
2行目はディレクトリに対してアクセス権限を与えるための設定。
ファイル・パーミッション・マクロとディレクトリ・パーミッション・マクロは,手作業による設定作業を支援するものであり,与えたいアクセス権限に応じて使い分ける。
ファイルパーミッション・マクロ
r_file_perms ファイルの読み込み
rx_file_perms 読み込み実行
ra_file_perms 読み込み追記
rw_file_perms 読み書き
create_file_perms 読み書き、生成、消去
ディレクトリパーミッション・マクロ
r_dir_perms ディレクトリ内部のファイル一覧取得
rw_dir_perms ディレクトリ内にファイルを生成したり消去
create_dir_perms 上に加え、ディレクトリの生成、消去
ファイルへの読み書き権限を与えるために、「file {append create getattr lock read rename setattr unlink write };」のように長い設定を手作業で書くのは大変。ファイル・パーミッション・マクロを使うと、これと同等の設定を「notdevfile_class_set create_file_perms」のように簡潔に記述できる。これは設定反映時に、もとの長い設定に変換される。
たとえば、# audit2allow -a -l -r で追加された内容がつぎのようなものだとする。
require {
class dir { add_name getattr read remove_name search write };
class file { append create getattr lock read rename setattr unlink write };
type http_t;
type my_test_t;
role system_r;
};
allow http_t my_test_t:dir { add_name getattr read remove_name search write };
allow http_t my_test_t:file { append create getattr lock read rename setattr unlink write };
これが、マクロを使った設定では次のようなものになる。
policy_module(local, 1.0)
type my_test_t;
files_type(my_test_t)
require {
type http_t;
type my_test_t;
};
allow http_t my_test_t:dir create_dir_perms;
allow http_t my_test_t:notdevfile_class_set create_file_perms;
設定の反映
設定の反映方法は,これまでと同じ。
# make
# semodule -i local.pp
# restorecon -RF /var/www/html
semoduleによりteファイルの設定が反映され,restoreconコマンドによりfcファイルに設定したタイプ付与設定が反映される。
SELinux目次
TOP(HOME)へ