| Home Profil Fun |
#46 Linux 23.02.2009
SELinux-Logs in separate Datei schreiben lassenAuf einem Debian-System ist standardmäßig der sysklogd-Dämon als Logging-Dämon installiert. Ich habe einige Zeit damit gearbeitet, leider traten im Zusammenspiel mit SELinux Probleme auf, die ich nicht lösen konnte. Z.B. stoppte das Logging plötzlich ohne ersichtlichen Grund und es half nichts weiter als ein Reboot der ganzen Maschine. Aus diesem Grund installierte ich syslog-ng, welcher aus meiner Sicht sowieso besser ist und mit SELinux ohne Probleme funktioniert. Er besitzt ein gutes Filtersystem mit dem man auch komplexere Regeln erstellen kann. Um nun syslog-ng dazu zu bringen die AVC messages in eine eigene Datei, z.B. /var/log/audit.log wegzuschreiben, muss man dessen Konfigurationsdatei /etc/syslog-ng/syslog-ng.conf wie folgt anpassen. Zwischen den options- und source-Abschnitten die nachfolgenden Zeilen einfügen:
# direct avc messages into /var/log/audit.log
destination avc { file("/var/log/audit.log"); };
filter avc { match("^.*audit.*avc:"); };
log { source(s_all); filter(avc); destination(avc); };
Die ersten beiden Zeilen führen dazu, dass ein Ziel und ein Filter mit dem Namen avc erzeugt wird. Die dritte Zeile sorgt dafür, dass Logs die aus der Quelle s_all stammen (ist standardmäßig definiert) und auf die der reguläre Ausdruck in der zweiten Zeile zutrifft in das Ziel avc geschrieben werden.Um zu verhindern, dass die Logs zusätzlich auch noch nach /var/log/messages geschrieben werden, muss man den folgenden Bereich anpassen:
# all messages of info, notice, or warn priority not coming form the auth,
# authpriv, cron, daemon, mail, and news facilities
filter f_messages {
level(info,notice,warn)
and not facility(auth,authpriv,cron,daemon,mail,news);
};
Es sollte dann so aussehen. Es handelt sich um den selben Regex, nur eben negiert:
# all messages of info, notice, or warn priority not coming form the auth,
# authpriv, cron, daemon, mail, and news facilities
filter f_messages {
level(info,notice,warn)
and not match("^.*audit.*avc:")
and not facility(auth,authpriv,cron,daemon,mail,news);
};
Falls man kein X am laufen hat, am besten alle Bereiche die zu xconsole gehören auskommentieren, sonst erhält unzählige, sinnlose Logeinträge. /etc/init.d/syslog-ng restart chmod 640 /var/log/audit.log SELinux-Training |