syslog

Standard zur Übermittlung von Log-Meldungen in Netzwerken
syslog
Familie: TCP/IP
Einsatzgebiet: Übermittlung von Log-Meldungen
in einem IP-Rechnernetz
Ports: 514/UDP
syslog im TCP/IP-Protokollstapel:
Anwendung syslog
Transport UDP
Internet IP (IPv4, IPv6)
Netzzugang Ethernet Token
Bus
Token
Ring
FDDI
Standards:

RFC 3195 (2001)[1]
RFC 5424 (2009)[2]
RFC 5426 (2009)[3]

syslog ist ein Standard zur Übermittlung von Log-Meldungen in einem IP-Rechnernetz. Der Begriff „syslog“ wird oft sowohl für das eigentliche syslog-Netzwerkprotokoll als auch für die Anwendung oder Bibliothek benutzt, die syslog-Meldungen sendet oder empfängt. Der Begriff leitet sich von „System Logging Protocol“ ab.[4]

Das syslog-Protokoll ist sehr einfach aufgebaut – der syslog-Client sendet eine kurze Textnachricht (weniger als 1024 Byte) an den syslog-Empfänger, welche aus einem wenige Worte großen Header und der eigentlichen Nachricht besteht. Der Empfänger wird oft als „syslogd“, „syslog daemon“ oder „syslog server“ bezeichnet. Ein syslog-Server kann auch als Relay arbeiten und empfangene Nachrichten an weitere Server übermitteln.

Die Nachrichten können mittels verschiedener Übertragungsprotokolle übermittelt werden. Der Standard schreibt Implementierungen des syslog-Protokolls als zu unterstützendes Übertragungsprotokoll TLS vor. Darüber hinaus sollte laut Standard eine syslog-Implementierung das UDP unterstützen.

Syslog wird typischerweise für Computersystem-Management und Sicherheits-Überwachung benutzt. Wird syslog über ein Netzwerk verwendet, benutzt es eine Client-Server-Architektur, wobei ein Server auf Meldungen von seinen Clients wartet und diese protokolliert. Es besitzt einige Schwachstellen, steht aber auf einer Vielzahl von Geräten zur Verfügung. Damit ermöglicht es die leichte Integration von verschiedensten Log-Quellen in ein zentrales Repository (Gesamtverzeichnis).

Aufbau einer Syslog-Meldung

Bearbeiten

Eine syslog-Meldung besteht aus drei Komponenten: Einem Selektor – Priority genannt –, einem Header und dem eigentlichen Inhalt.

Der Priority-Selektor ist eine Ganzzahl, deren Binärrepräsentation sich in zwei Teile zerlegen lässt: dem Facility-Feld und dem Severity-Feld. Damit lassen sich die Syslog-Meldungen entsprechend ihrer Herkunft und ihres Schweregrades klassifizieren. Das die letzten drei Bits der Priority umfassende Severity-Feld enthält einen numerischen Wert zwischen 0 und 7, wobei 0 die kritischste oder dringlichste Stufe ist:

0  Emergency
1  Alert
2  Critical
3  Error
4  Warning
5  Notice
6  Informational
7  Debug

Das die ersten fünf Bits der Priority umfassende Facility-Feld enthält einen numerischen Wert, der den Dienst oder die Komponente angibt, der die syslog-Nachricht erzeugt hat. Die folgenden Werte sind laut RFC 3164[5] vordefiniert:

 0  kernel messages
 1  user-level messages
 2  mail system
 3  system daemons
 4  security/authorization messages
 5  messages generated internally by syslogd
 6  line printer subsystem
 7  network news subsystem
 8  UUCP subsystem
 9  clock daemon
10  security/authorization messages
11  FTP daemon
12  NTP subsystem
13  log audit
14  log alert
15  clock daemon
16  local0
17  local1
18  local2
19  local3
20  local4
21  local5
22  local6
23  local7

In der Syslog-Konfigurationsdatei werden die Namen wie folgt abgekürzt: kern (0), user (1), mail (2), daemon (3), auth (4), syslog (5), lpr (6), news (7), uucp (8), cron (9), authpriv (10), ftp (11).

Für allgemeine syslog-Nachrichten sind die Werte 16 – 23 vorgesehen (local0 bis local7). Es ist aber durchaus zulässig, auch die vordefinierten Werte 0 bis 15 für eigene Zwecke zu verwenden. Mit Hilfe des Priority-Selektors kann leicht nach bestimmten Meldungen gefiltert werden, wie beispielsweise: "Erfasse alle Mailserver-Nachrichten vom Schweregrad error".

Der Header enthält einen Zeitstempel sowie Name oder IP-Adresse des Absenders der syslog-Nachricht. Der Zeitstempel wird vom Empfänger, also dem Syslog-Server, eingefügt. Er enthält das Datum und die lokale Uhrzeit zum Empfangszeitpunkt. Häufig wird zusätzlich Absendedatum und -uhrzeit in der eigentlichen Meldung untergebracht.

Beispiel einer syslog-Nachricht

Bearbeiten
<165>1 2003-10-11T22:14:15.003Z mymachine.example.com su - ID47 [exampleSDID@32473 iut="3" eventSource=" eventID="1011"] BOMAn application log entry...
Bedeutung der Nachricht[4]
Bestandteil Wert Information
PRI 165 =20×8+5
Ursprung: 20, Schweregrad: 5
VERSION 1 Version: 1
TIMESTAMP 2003-10-11T22:14:15.003Z Meldung erstellt am 11. Oktober 2003 um 22:14:15 Uhr und 3 Millisekunden
HOSTNAME mymachine.example.com Die Meldung kam vom Host "mymachine.example.com"
APP-NAME su App-Name: "su"
PROCID PROCID: unbekannt
MSGID ID47 Meldungs-ID: "47"
STRUCTURED-DATA [exampleSDID@32473 iut="3" eventSource=" eventID="1011"] Strukturiertes Datenelement mit nicht durch die IANA geregelter SD-ID vom Typ "exampleSDID@32473" mit drei Parametern
MSG BOMAn application log entry... BOM gibt die UTF-8-Codierung an, die Meldung selbst ist "An application log entry..."

Geschichte

Bearbeiten

Syslog wurde von Eric Allman als Teil des Sendmail-Projektes entwickelt. Ursprünglich (in den frühen 1980er Jahren) wurde es ausschließlich für Sendmail entwickelt und genutzt. Es stellte sich jedoch rasch als nützliches Werkzeug heraus, das dann auch von anderen Anwendungen genutzt wurde. Heute ist syslog der standardmäßige Logging-Mechanismus unter Unix und Linux. Außerdem existieren syslog-Implementierungen unter anderen Betriebssystemen wie Microsoft Windows.[6]

Syslog wurde zunächst nicht standardisiert. Um die Sicherheit des Protokolls zu erhöhen, bildete die Internet Engineering Task Force eine Arbeitsgruppe. 2001 wurde der erreichte Zustand in RFC 3164[5] dokumentiert. Seitdem wird an neuen Erweiterungen gearbeitet.

Ausblick

Bearbeiten

Es bestehen neue Anwendungsgebiete und steigendes Interesse an syslog. Vor kurzem wurde syslog standardisiert bzw. empfohlen für eine Anzahl von Auditierungs-Anwendungen, z. B. das "health care environment" (IHE) in den USA.[7] Die Standardisierungsbestrebungen dauern im Rahmen der IETF noch an.

Schwachstellen

Bearbeiten

Das syslog-Protokoll besitzt einige Schwachstellen:

  • Verwendet Severity und Facility uneinheitlich
  • Manche Implementierungen nennen die ursprüngliche Quelle nicht (beim Weiterleiten einer Meldung über mehrere Loghosts)

Diese Schwachstellen waren der Auslöser für die zuvor beschriebenen Standardisierungsbestrebungen. Außerdem existieren in der Praxis viele Implementierungen, die diese Schwachstellen ganz oder teilweise beheben. Solche Implementierungen sind für alle gängigen Betriebssysteme zu finden. Die Lösungen verschiedener Hersteller sind jedoch nur bedingt untereinander kompatibel. Eine sehr verbreitete Implementierung ist syslog-ng, deren Erweiterungen des Syslog-Protokolls mittlerweile als Industriestandard angesehen werden können.

Siehe auch

Bearbeiten
  • RFC 3164 – The BSD syslog Protocol. 2001 (aktualisiert durch RFC 5424, englisch).
  • RFC 3195 – Reliable Delivery for syslog. 2001 (englisch).
  • RFC 5424 – The syslog Protocol. 2009 (englisch).
  • RFC 5425 – Transport Layer Security (TLS) Transport Mapping for syslog. 2009 (englisch).
  • RFC 5426 – Transmission of syslog Messages over UDP. 2009 (englisch).
Bearbeiten

Einzelnachweise

Bearbeiten
  1. RFC 3195 – Reliable Delivery for syslog. 2001 (englisch).
  2. RFC 5424 – The syslog Protocol. 2009 (englisch).
  3. RFC 5426 – Transmission of syslog Messages over UDP. 2009 (englisch).
  4. a b Syslog – Definition and Details. In: de.paessler.com. Abgerufen am 16. Februar 2021 (deutsch).
  5. a b RFC 3164 – The BSD syslog Protocol. 2001 (aktualisiert durch RFC 5424, englisch).
  6. Syslog; Geschichte; Aussichten; Facility Levels; Schweregrade; Format eines Syslog-Paket. In: lebendom.com. Abgerufen am 23. Oktober 2018 (deutsch).
  7. Healthcare Exchange Standards: ATNA + SYSLOG is good enough. In: Healthcare Exchange Standards. 2. Januar 2012, abgerufen am 17. November 2020.