Protokolliert Nachrichten, die eine bestimmte Zeichenfolge enthalten, in einer anderen Datei in rsyslogd

669
Chris

Ich möchte meine Protokollnachrichten, die von iptables generiert werden, über rsyslogd in einer anderen Datei speichern.

Derzeit verwende ich diesen Code von /etc/rsyslog.d/20-custom.conf:

# Log cron to cron.log and not to syslog *.*;cron,auth,authpriv.none -/var/log/syslog cron.* /var/log/cron.log  # Log firewall to extra log :msg,contains,"[BLOCK " /var/log/firewall.log  & stop 

Meine cron-Protokolle sind in Ordnung, sie werden nur bei protokolliert cron.log, aber meine iptables-Protokolle werden sowohl in syslogals auch angemeldet firewall.log. Gibt es eine Möglichkeit, es nur einzuloggen firewall.log?

Meine Systemspezifikationen:

> rsyslogd -v rsyslogd 8.16.0, compiled with: PLATFORM: x86_64-pc-linux-gnu PLATFORM (lsb_release -d): FEATURE_REGEXP: Yes GSSAPI Kerberos 5 support: Yes FEATURE_DEBUG (debug build, slow code): No 32bit Atomic operations supported: Yes 64bit Atomic operations supported: Yes memory allocator: system default Runtime Instrumentation (slow code): No uuid support: Yes Number of Bits in RainerScript integers: 64 

Linux MYHOSTNAME 4.4.0-116-generic #140-Ubuntu SMP Mon Feb 12 21:23:04 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

> lsb_release -a No LSB modules are available. Distributor ID: Ubuntu Description: Ubuntu 16.04.4 LTS Release: 16.04 Codename: xenial 
0

1 Antwort auf die Frage

1
Michał Politowski

Sie müssen den Firewall-Protokollierungsteil vor anderen Regeln verschieben, damit es aussieht

# Log firewall to extra log :msg,contains,"[BLOCK " /var/log/firewall.log & stop  # Log cron to cron.log and not to syslog *.*;cron,auth,authpriv.none -/var/log/syslog cron.* /var/log/cron.log 

Die Regeln werden in der richtigen Reihenfolge betrachtet, so dass Sie jetzt eine Nachricht haben, die mit *. * Übereinstimmt . Cron, auth, authpriv.none wird immer in syslog geschrieben, auch wenn sie mit : msg übereinstimmt , enthält "[BLOCK" und ist in firewall.log geschrieben. Der Stoppbefehl ist einfach zu spät in der Datei, um etwas zu stoppen.

Siehe auch https://www.rsyslog.com/writing-specific-messages-to-a-file-and-discarding-them/

Vielen Dank für Ihre Erklärung, funktioniert jetzt gut! Chris vor 6 Jahren 0