Erklärung rsyslog Netz
Version vom 27. August 2026, 06:21 Uhr von Thomas.will (Diskussion | Beiträge) (Die Seite wurde neu angelegt: „=== Zeile für Zeile === ; <code>module(load="imudp")</code> : Lädt das Eingangsmodul für UDP. Das Modul wird nur einmal geladen, unabhängig davon, wie vie…“)
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
web01wird damit/var/log/hosts/web01/sshd.log. Fehlende Verzeichnisse legt rsyslog selbst an ($CreateDirsist 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.1und 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.stopbeendet die Verarbeitung dieser Meldung. Ohne diese Zeile würden die Fremd-Meldungen zusätzlich in/var/log/syslogbzw./var/log/messageslaufen 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:
$templateund der:filtersind Legacy-Schreibweise, funktionieren aber weiterhin. Modern wäretemplate(name="FernLog" type="string" string="…")zusammen mitaction(type="omfile" dynaFile="FernLog"). - Logrotation: Für
/var/log/hosts/*/*.logeine eigene logrotate-Regel anlegen, sonst wächst das Verzeichnis unbegrenzt.