Selinux が原因で Rsyslog がログに記録されないのですが、私の回避策は大丈夫ですか?

Selinux が原因で Rsyslog がログに記録されないのですが、私の回避策は大丈夫ですか?

/etc/rsyslog.confに以下の2つのパラメータがあります

$ModLoad imjournal # provides access to the systemd journal
...
# Turn off message reception via local log socket;
# local messages are retrieved through imjournal now.
$OmitLocalLogging on

SELinux で問題が発生しました。Rsyslog に次のように記録されました:

Jun  6 10:53:14 vpod1-logm-front-3 rsyslogd: fopen() failed: 'Permission denied', path: '/var/spool/imjournal.state.tmp'  [v8.24.0 try http://www.rsyslog.com/e/2013 ]

新しいポリシーを追加する必要がありました(audit2alowによって生成)

cat  >syslog-imjournal.te << EOF
module syslog-imjournal 1.0;

require {
        type syslogd_t;
        type var_spool_t;
        class dir { add_name remove_name write };
        class file { create rename unlink write };
}

#============= syslogd_t ==============

allow syslogd_t var_spool_t:dir write;
allow syslogd_t var_spool_t:dir { add_name remove_name };
allow syslogd_t var_spool_t:file { create rename unlink write };
EOF

checkmodule  -m -o syslog-imjournal.m syslog-imjournal.te
semodule_package --module syslog-imjournal.m --outfile syslog-imjournal.pp
semodule --install=syslog-imjournal.pp --priority=400 

これを実行するのが安全かどうかわかりません。もっと良い方法はありますか?

答え1

問題は、「imjournal.state」ファイルを間違った場所に保存しているため、SELinux が書き込みをブロックしていることだと思います。権限を過度に付与するカスタム ポリシー モジュールを作成するのではなく、デフォルトの場所である /var/lib/rsyslog を使用する必要があります。デフォルトの構成は次のとおりです。

$WorkDirectory /var/lib/rsyslog
$IMJournalStateFile imjournal.state

関連情報