Rsyslog meldet sich aufgrund von Selinux nicht an. Ist mein Workaround in Ordnung?

Rsyslog meldet sich aufgrund von Selinux nicht an. Ist mein Workaround in Ordnung?

Ich habe diese beiden Parameter in /etc/rsyslog.conf

$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

Ich habe Probleme mit SELinux, Rsyslog hat Folgendes protokolliert:

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 ]

Ich musste eine neue Richtlinie hinzufügen (generiert von 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 

Ich weiß nicht, ob das sicher ist. Gibt es eine bessere Möglichkeit?

Antwort1

Ich denke, das Problem besteht darin, dass Sie die Datei „imjournal.state“ am falschen Ort speichern, sodass SELinux Schreibvorgänge blockiert. Anstatt ein benutzerdefiniertes Richtlinienmodul zu erstellen, das zu viele Berechtigungen erteilt, sollten Sie den Standardspeicherort verwenden, nämlich /var/lib/rsyslog. Die Standardkonfiguration lautet:

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

verwandte Informationen