Konfigurieren von SELINUX, um die Protokollierung in einer Datei außerhalb von / var / log zu ermöglichen

7

Ich habe einen Daemon, der syslog (3) verwendet, um sich in einer Datei anzumelden, die kein Nachkomme von / var / log ist. Derzeit muss SELINUX deaktiviert sein. Wie kann ich ein aktiviertes SELINUX konfigurieren, um diese Protokollierung zu ermöglichen?

Ich bin ein SELINUX-Neuling. Jede Anleitung oder Beratung wäre dankbar.

Steve Emmerson
quelle
PSA - stopdisablingselinux.com
0xSheepdog

Antworten:

9

Wenn Sie sich den Kontextsatz für das Verzeichnis / var / log ansehen, werden Sie die folgenden Dinge bemerken.

Erstens hat das Verzeichnis /var/logden folgenden Selinux-Kontextsatz:

$ ls -Z /var | grep "log$"
drwxr-xr-x. root root    system_u:object_r:var_log_t:s0   log

Zweitens hat die Protokolldatei /var/log/messageskeinen zusätzlichen Kontext:

$ ls -Z /var/log/messages
-rw------- root root ?                                /var/log/messages

Es scheint also, dass Sie nur einen ähnlichen Kontext wie in dem /var/logVerzeichnis festlegen müssen, in das Sie diese zusätzliche Protokolldatei schreiben möchten . So etwas sollte es tun.

Methode 1: Replizieren des Selinux-Labels

Im Folgenden wird der zugehörige Kontext kopiert /var/logund ebenfalls angewendet /opt/blah.

$ mkdir /opt/blah
$ ls -Z /opt | grep blah
drwxr-xr-x  root root ?                                   blah

# label directory with context
$ chcon --reference /var/log /opt/blah

# see the newly added context
$ ls -Z /opt/ | grep blah
drwxr-xr-x. root root    system_u:object_r:var_log_t:s0   blah

Methode 2: Kontext direkt anwenden

Sie können sie auch direkt wie folgt anwenden:

$ chcon system_u:object_r:var_log_t:s0 /opt/blah

Ich bin nicht in einem System, in dem ich bestätigen kann, dass diese Befehle ausgeführt werden müssen, aber ich glaube, Sie müssen SELinux anweisen, diese neu angewendeten Kontexte auch im Dateisystem zu übernehmen.

$ semanage fcontext -a -t var_log_t "/opt(/.*)?"
$ restorecon -R -v /opt

Änderungen bestätigen

# confirm identical to /var/log context
$ ls -Z /var/ | grep "log$"
drwxr-xr-x. root root    system_u:object_r:var_log_t:s0   log

Verweise

slm
quelle
Wo sind die eigentlichen Befehle? Ich sehe nur Kommentare wie# label directory with context
Lorenzog