CentOS6ではSELinuxを有効にして使いたいのですが、管理するにはそこそこ大変なので、便利なコマンドをインストールしておきたいところです。policycoreutils-python パッケージをインストールすれば、audit2allow、audit2why、chcat、semanage といったコマンドが使えるようになります。
インストールは次の通り。
$ sudo yum install policycoreutils-python
SELinuxをPermissiveモードにしてから動作させているときにログへ出力されるエラーから、audit2allowを使って必要なポリシーの情報が入手できます。
$ sudo audit2allow -a -l -r
require {
type var_t;
type httpd_sys_script_t;
type boot_t;
type postfix_postdrop_t;
type httpd_t;
type user_home_t;
class dir getattr;
class file { read getattr };
class fifo_file getattr;
}
#============= httpd_sys_script_t ==============
allow httpd_sys_script_t var_t:file { read getattr };
#============= httpd_t ==============
allow httpd_t boot_t:dir getattr;
allow httpd_t user_home_t:file { read getattr };
#============= postfix_postdrop_t ==============
allow postfix_postdrop_t httpd_t:fifo_file getattr;
これを適用するには、次のようにします。audit2allowでpackage001.teとpackage001.ppが生成されます。
$ sudo audit2allow -i /var/log/audit.log -M package001 $ sudo semodule -i package001.pp
「sudo audit2allow -a -l -r」の表示内容をlocal.teに追加してから適用をすることもできます。
$ sudo checkmodule -M -m -o local.mod local.te $ sudo semodule_package -o local.pp -m local.mod
新規インストールするときは、下記
$ sudo semodule -i local.pp
アップデートするときは、下記
$ semodule -u local.pp
組み込みを確認するには、下記
$ semodule -l | grep local.pp
ポリシー・モジュールを削除するのは次の通り。
$ semodule -r local
ポリシーを追加したら、SELinuxをEnforcingモードに戻します。動作しない場合は、動くまで設定の追加を繰り返します。
Linuxについては下記が参考になるかもしれません。