実践Linux                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目次
 SELinuxの基本設定
 新しいタイプとポリシーモジュールの作成   マクロを利用したteファイルの記述
 新しいドメインの導入



TOP(HOME)へ

目 次

特別企画
Raspberry Piで遊ぶ

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

CentOS7
CentOS7のインストール〜ネットワークの設定ほか
CentOS7の新機能(systemdとfirewalld)
ダイレクトルールを使ったfirewallの強化
DNS(BIND)サーバー
Webサーバー
  Webでファイルの受け渡し
  アクセス解析ツールAwstats
  Wordpressでブログ構築
FTPサーバー
FTPS(FTP over SSL/TLS)
Mail(Dovecot&Postfix)サーバー
Sambaサーバー
MariaDB(MySQL)サーバー
DHCPサーバー
SSHサーバー
VNCサーバー
ドメインの追加

CentOS5〜6
ネットワーク&ファイアウォール(iptables)
DNS(BIND)サーバー
DHCPサーバー
メールサーバー(基本)
メールサーバー/実際の運用
Webサーバー
  WebDAVによるファイル共有
  Webでファイルのやり取り
  アクセス解析ツールawstats
  namazuで全文検索
  WordPressブログサイト構築
  EC-CUBEショッピングサイト構築
FTPサーバー
ファイルサーバー・Samba
データベースpostgreSQL
  ExcelからpostgreSQLを操作
データベースMySQL
SSHサーバー
VNC
SSL/TLSを利用した暗号化通信
openVPN
ストリーミングサーバー
    C++ RTMP Server
    Helix server Basic
ドメインの追加
Xen・仮想化
特定ディレクトリに容量制限

SELinux
SELinux基本設定
新しいタイプとポリシー・モジュールを作成してみる
マクロを利用したteファイルの記述
新しいドメインを導入してみる

coLinux
Fedora11で試す

Cプログラミング目次
X11プログラム
サイエンス・プログラム

計測・プログラム
秋月電子のデーターロガーpico ADC-16
「今すぐ使えるパソコン計測USBマイコン基板」に付属のTRZ1102
センサーの使用例

Glade2/GTK+を使ってみる
テキスト・ビューで簡易エディター
ドローイングエリアで自動描画
放物線運動(pango、cairoも試してみる)
これらを、GTK+のみで書き出す

フォントについて
ネットワーク・プログラミング
postgreSQL接続
CGI
ファイル操作

●その他
印刷機関連開発 刷版絵柄面積率測定
数独をExcelで解く