Syslog Grundlagen

Ich beschränke mich auf der MSXFAQ auf die "einfache" Form des Syslog über UDP ohne SSL, Absicherungen o.ä. Die meisten "einfachen Router" und Gateways nutzen einfach diesen Weg und auch als Windows Administrator sollten Sie das Protokoll zumindest können.

Syslog-Meldungen sind faktisch einfach Text-Strings, die in UDP-Paketen an vordefinierte Ziele auf Port 514 gesendet werden. Über UDP sollten die Pakete klein sein, und Verluste dürfen nicht kritisch sein, da keine Flusskontrolle vorhanden ist. Es gibt auf dem Sender daher auch keine Queue und wenn der Empfänger "offline" ist, dann gehen die Meldungen verloren. Es gibt auch keine Authentifizierung, Verschlüsselung, Sicherstellung der Reihenfolge oder Schutz gegen Veränderungen . Auch "Fälschungen" sind einfach möglich, wenn der Angreifer den Syslog-Server erreichen kann. All diese Kritikpunkte sind in der RFC5426 ebenfalls aufgeführt.

Entsprechend einfach ist auch der Paketaufbau. Er besteht aus einem UDP-Paket und der Nutzlast als einfacher String. Hier habe ich mit Wireshark mal solche Meldungen von zwei Systemen mitgeschnitten:

Beide Systeme senden UDP-Pakete aber nur eines davon nutzt die ersten 5 Byte zur Übermittlung standardisierter Daten.

  • 192.168.100.107 - Audiocodes Mediant
    Hier beginnt das UDP-Paket mit einem besonderen String "<xxx>", in dem weitergehende Informationen codiert sind, die ein SYSLOG-Server auswerten kann. Wireshark wertet die "<133>" z.B. als "Local0:Notice" aus.
  • 192.168.99.14 Grandstream GXV3140-Telefon
    Diese Telefon sendet einfach nur einen String. Das ist durchaus legitim, wenn der Syslog-Service einfach nur zum Protokollieren gedacht ist. für Debug-Funktionen ist das sicher i.O. aber schöner wäre es schon, wenn das Gerät eine Einordnung und Gewichtung der Meldungen vornehmen würde.

Facility, Severity und Zeit

Beim Design von Syslog hat man etwas mehr im Hinterkopf gehabt als einfach nur einen Textstring per UDP an einem Server zuzuwerfen, der diesen denn irgendwie protokolliert. Der Server "sieht" vom Absender neben der IP-Adresse und der Message auch noch zwei weitere Klassifizierungen, die am Anfang des Texts mit "<" und ">" eingerahmt stehen müssen. Diese Prefix gibt eine Facility und eine Severity vor.

  • Facility
    Die Facility ist ein Wert zwischen 0 und 23
    • 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-23  local10 - local17
      Allgemeine Meldungen sollten diesen Bereich nutzen.
  • Severity = Schweregrad
    Dieser kann einen Wert von (0..7 annehmen)
    • 0 Emergency
    • 1 Alert
    • 2 Critical
    • 3 Error
    • 4 Warning
    • 5 Notice
    • 6 Informational
    • 7 Debug

Eine Nummer wird daraus, indem man die Facility mit 8 multipliziert (und damit die 5 Bits um 3 Stellen nach rechts schiebt und dann die Severity addiert. Der alte BSD Syslog Standard (RFC3164) schreibt dann vor, dass ein Zeitstempel und dann die Message gesendet wird.

Weitere Links