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については下記が参考になるかもしれません。