サーバーとして運用しようとすると、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に変更しても目的とするサービスが利用できれば成功!