Syslog

Das Syslog-Netzwerkprotokoll ermöglicht die Übermittlung von Logdateien in einem Rechnernetz. Der Begriff „syslog“ wird zudem auch für die Anwendungen oder die Bibliothek benutzt, die Syslog-Meldungen sendet und empfängt. Das Syslog-Protokoll spielt bei dem Computersystemmanagement und der Sicherheitsüberwachung eine wichtige Rolle. Syslog gehört zu der TCP/IP-Familie und benutzt den UDP-Port 514.

Funktion

Syslog ermöglicht die leichte Integration von verschiedenen Log-Quellen in ein zentrales Gesamtverzeichnis. Dafür sendet ein Syslog-Client eine Textnachricht an den Syslog-Empfänger. Der Empfänger wird dabei oft als Syslog-Server, „syslogd“ oder „syslog daemon“ bezeichnet.
Die Nachricht kann dabei über verschiedene Übertragungsprotokolle übermittel werden. Der Standard schreibt eine Implementierung von TLS vor, wobei zusätzlich eine Übertragung über UDP unterstützt werden sollte.

Wie sieht eine Syslog-Meldung aus?

Die Syslog-Meldung besteht aus drei Komponenten:
1. Selektor (Priority)
2. Header
3. Inhalt

1. Selektor

Bei dem Selektor handelt es sich um eine Ganzzahl. Die Binärrepresantation lässt sich dabei in das Facility-Feld und das Severity-Feld aufteilen. Durch die Zahlenkennung lässt sich die Herkunft der Nachricht und der Schweregrad klassifizieren.
Die letzten drei Bits des Priority-Selektors enthalten einen numerischen Wert zwischen 0 und 7, wobei 0 die kritischste und dringlichste Stufe ist. Mit zunehmender Zahl nimmt der Schweregrad ab.

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

Die ersten fünf Bits sind für die Dienst- und Komponentenangabe reserviert. RFC 3164 definiert dabei folgende Werte vor:

Facility-Feld Abkürzung
0 Kernel-Nachrichten kern (0)
1 Nutzerlevel-Nachrichten user (1)
2 Mailsystem mail (2)
3 System-Daemon daemon (3)
4/10 Security-Nachrichten auth (4) / authpriv (10)
5 Intern-generierte Nachrichten durch syslogd syslog (5)
6 Drucker Untersystem lpr (6)
7 Netzwerk Nachrichten Untersystem news (7)
8 UUCP Untersystem uucp (8)
9/15 Uhr-Daemon cron (9) / (15)
11 FTP-Daemon ftp (11)

Die Abkürzungen werden in der Syslog-Konfigurationsdatei genutzt. Die Werte 16 bis 23 sind dabei für allgemeine Nachrichten (local0 bis local7) vorgesehen. Die vordefinierten Werte von 0 bis 15 lassen sich jedoch auch für eigene Zwecke verwenden.

Der Priority-Selektor lässt sich gut für die Filterung von Protokolldateien nutzen. So können beispielsweise schnell alle Fehlermeldungen „Error“ von Mailservernachrichten rausgefiltert werden.

2. Header

Im Header sind Name und IP-Adresse des Absenders der Syslog-Nachricht enthalten. Beim Empfangen der Nachricht wird von dem Syslog-Server ein Zeitstempel mit Datum und der lokalen Uhrzeit eingefügt. Häufig wird auch das Datum und die Uhrzeit zum Absendezeitpunkt in der eigentlichen Meldung untergebracht.

3. Inhalt

Neben Selektor und Header folgt der eigentliche Inhalt der Syslog-Meldung. Dieser kurze Text ist dabei weniger als 1024 Byte groß und hängt von der spezifischen Gerätesituation und der Fehlermeldung ab. Der Inhalt wird dabei von Syslog-Diensten und Software in eine Logdatei geschrieben. Ein zentrales Gesamtverzeichnis von Logdateien wird dabei als Repository bezeichnet.


Entwicklung von Syslog

In den 80er Jahren wurde Syslog speziell für das Sendmail-Projekt von Eric Allman entwickelt. Syslog wurde daher ursprünglich ausschließlich für Sendmail genutzt. Das Protokoll stellte sich jedoch schnell als nützliches Werkzeug für das Datenlogging heraus. Heutzutage ist Syslog der standardmäßige Logging-Mechanismus unter Linux und Unix. Für andere Betriebssysteme wie Microsoft Windows gibt es weitere Implementierungen.

Schwachstellen von Syslog

Die verwendete Severity- und Facilitykennung sind uneinheitlich
Dies kann bei einer übergreifenden Nutzung von unterschiedlichen Geräten, Software und Systemen zu Fehlern und Kommunikationsproblemen führen.

Ursprüngliche Quelle wird nicht genannt
Bei einer Relay-Arbeitsweise und einer Weiterleitung über mehrere Loghosts kann die ursprüngliche Quellenangabe nicht mehr erkenntlich sein. Das korrekte Auslesen und die Behebung von Netzwerkproblemen kann somit schwerfallen.

Standardisierungsbestrebungen

Um den bekannten Problemen der Standardisierung entgegenzuwirken, bildete die Internet Engineering Task Force eine Arbeitsgruppe, um die Probleme zu beheben. Der erreichte Zustand wurde 2001 in RFC 3164 dokumentiert. Seitdem wird an zusätzlichen neuen Erweiterungen und Verbesserungen gearbeitet. Rsyslog und Syslog-ng sind zwei bekannte Versionen der Syslog-Protokollierung.

Open Source: Rsyslog

Bei der quelloffenen Implementierung Rsyslog für Unix und Unix-ähnliche Systeme wird das ursprüngliche Modell durch inhaltsbasierende Filterung sowie weiterer umfassender Filtermöglichkeiten erweiterter. Zusätzliche Konfigurationsoptionen und wichtige Merkmale wie TCP als Übermittlungsprotokoll gehören zu den Verbesserungen von Ryslog.

Industriestandard: Syslog-ng

Eine Weiterentwicklung von Syslog mit dem Ziel, die bekannten Schwachstellen zu beheben. Einheitliche Logging-Funktionen für eine Vielzahl von Plattformen sind der Fokus von Syslog-ng. Durch eine Installation von Syslog-ng kann ein homogenes Logging-System auf allen beteiligten Rechnern ermöglicht werden.
Diese Eigenschaften sind ein großer Anreiz und Grund für die Verbreitung des Programms. So kann die Erweiterung des Protokolls inzwischen als Industriestandard angesehen werden und wird auch bei anderen Syslog-Implementierungen als Referenz verwendet.