実践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)へ

目 次
HOME
 全体のシステム構成&目次


RockyLinux

RockyLinux8.4のインストール

旧サーバーからのデータ移行

ネットワークの設定ほか
ダイレクトルールを使ったfirewallの強化
DNS(BIND)サーバー
DHCPサーバー
FTPサーバー
FTPS(FTP over SSL/TLS)
Webサーバー
  アクセス解析ツールAwstats
Mail(Dovecot&Postfix)サーバー
MariaDB(MySQL)サーバー
SSHサーバー
SSHトンネル
SSH+MariaDB+Exel
Sambaサーバー
openVPNサーバー
VNCサーバー(リモートディスクトップ)

systemdとfirewalldについて


CentOS8
CentOS7
CentOS5〜6

SELinux

Cプログラミング


●その他
クラウド Amazon EC2
Raspberry Piで遊ぶ
印刷機関連開発 刷版絵柄面積率測定
数独をExcelで解く


●趣味の世界
相対性理論
量子力学
群論
熱力学・統計力学
解析力学
物理でつかう数学
超弦理論(ノート作成中)