サーバーとして運用しようとすると、SELinuxが、Enforcingでは接続できず、permissiveや、disabledだと接続できるという状態におちいった経験がある。
どうしても、できなくて、結局SELinuxを無効(Disabled)にして、使用してばかりだったが、どうやら、ポリシーモジュールなるものを作成すると簡単にできるらしい。
SELinuxのモードをpermissiveにして、監視ログをとり
そのログをつかってポリシーモジュールを作成してくれるaudit2allowというもの。
実際はまだつかってないが、難しいSELinuxの設定を簡略化できそうなので、覚書
avcログ

SELinuxのポリシールールに反する処理が実行された時に、警告ログがとられる。
 auditサービスが起動していれば(通常は起動してる)
 /var/log/audit/audit.log に記録される。
 起動していなかったら、/var/log/messageファイルに記録される。

avcログから、モジュールの作成(audit2allow)

① SELinuxの動作モードを permissive に変更
② SELinuxがEnforcingの時はできなかった作業を色々行う。
  できるだけ、いろんな作業を行ってログをためるのが良いらしい。
③ avcログから、必要な個所だけ抜粋したファイルを作成
  (抜粋しなくてもよい?とりあえず、ここでは抜粋したファイル/tmp/kansi.logとする)
④ audit2allowを実行
  audit2allow -M test < /tmp/kansi.log
#-M にはモジュールの名称を指定
⑤ test.teとtest.ppができていることを確認
 te – モジュールのソースコードにあたるファイル
 pp – teから作られたポリシーパッケージ
⑥ test.teを確認、編集
 test.teが期待どおりになっている確認。
 期待通りでなかったり、追加したいものがあれば修正
 # 修正した場合はモジュール(pp)を作り直す
 #  chekmodule -M -m -o test.mod test.te
 #  semodule_package -o testl.pp -m test.mod
⑦ ポリシーモジュールのインストール、確認、削除
 インストール
   semodule -i test.pp
 確認
   semodule -l
    testが追加されて入ればOK
 削除
   semodule -r test
    必要のないモジュールは削除(testを削除)

適用後、SELinuxをEnforecingに変更しても目的とするサービスが利用できれば成功!