Erklärung rsyslog Netz

Aus Xinux Wiki
Zur Navigation springen Zur Suche springen

Zeile für Zeile

module(load="imudp")
Lädt das Eingangsmodul für UDP. Das Modul wird nur einmal geladen, unabhängig davon, wie viele Ports später geöffnet werden.
input(type="imudp" port="514")
Öffnet den UDP-Port 514 (der klassische Syslog-Port). UDP ist verbindungslos: schnell und ressourcenschonend, aber Meldungen können bei Last oder Paketverlust verlorengehen.
module(load="imtcp") / input(type="imtcp" port="514")
Dasselbe für TCP. TCP quittiert die Übertragung, Meldungen gehen also nicht einfach verloren. UDP und TCP dürfen gleichzeitig auf Port 514 lauschen, weil es zwei getrennte Protokolle sind.
$template FernLog,"/var/log/hosts/%HOSTNAME%/%PROGRAMNAME%.log"
Definiert eine Vorlage für den Dateinamen. Die Prozentzeichen sind Platzhalter für Eigenschaften der jeweiligen Meldung:
  • %HOSTNAME% – der Name des sendenden Rechners, wie er in der Meldung steht
  • %PROGRAMNAME% – der Dienst, der die Meldung erzeugt hat (z. B. sshd, sudo, kernel)
Aus einer sshd-Meldung von web01 wird damit /var/log/hosts/web01/sshd.log. Fehlende Verzeichnisse legt rsyslog selbst an ($CreateDirs ist standardmäßig aktiv).
:fromhost-ip, !isequal, "127.0.0.1" ?FernLog
Ein Property-Filter. Er prüft die Eigenschaft fromhost-ip, also die IP-Adresse, von der das Paket tatsächlich kam. Trifft der Vergleich „ist nicht 127.0.0.1“ zu, wird die Meldung über die Vorlage weggeschrieben. Das ? vor dem Namen bedeutet: dynamischer Dateiname aus einem Template (ein / stünde für eine feste Datei).
Lokal erzeugte Meldungen haben immer 127.0.0.1 und fallen deshalb durch – sie landen weiter in den üblichen lokalen Logdateien.
& stop
Das & hängt eine weitere Aktion an denselben Filter an, die Bedingung wird also nicht wiederholt. stop beendet die Verarbeitung dieser Meldung. Ohne diese Zeile würden die Fremd-Meldungen zusätzlich in /var/log/syslog bzw. /var/log/messages laufen und dort alles vermischen.

Hinweise für die Praxis

  • Reihenfolge beachten: Dateien in /etc/rsyslog.d/ werden alphabetisch eingelesen. Die Konfiguration muss vor den Standardregeln greifen, also z. B. als /etc/rsyslog.d/10-remote.conf.
  • Firewall: Port 514/udp und 514/tcp müssen freigegeben sein.
  • %HOSTNAME% ist Inhalt der Meldung und damit fälschbar. Wer die Trennung fest an die Herkunft binden will, nimmt %FROMHOST-IP% im Template.
  • Keine Authentisierung, keine Verschlüsselung. Plain-Syslog auf 514 gehört nur ins vertrauenswürdige Netz. Für den produktiven Einsatz: RELP (imrelp) oder Syslog über TLS.
  • Alte und neue Syntax gemischt: $template und der :filter sind Legacy-Schreibweise, funktionieren aber weiterhin. Modern wäre template(name="FernLog" type="string" string="…") zusammen mit action(type="omfile" dynaFile="FernLog").
  • Logrotation: Für /var/log/hosts/*/*.log eine eigene logrotate-Regel anlegen, sonst wächst das Verzeichnis unbegrenzt.