Zum Hauptinhalt springen

RFC 5424 - Das Syslog-Protokoll (The Syslog Protocol)

Internet Engineering Task Force (IETF)
Request for Comments: 5424
Kategorie: Standards Track
Ersetzt: RFC 3164

Autor:
R. Gerhards (Adiscon GmbH)

Veröffentlichungsdatum: März 2009


Zusammenfassung (Abstract)

Dieses Dokument beschreibt das Syslog-Protokoll (Syslog Protocol), das zur Übermittlung von Ereignisbenachrichtigungen verwendet wird. Dieses Protokoll nutzt eine geschichtete Architektur (Layered Architecture), die die Verwendung beliebig vieler Transportprotokolle für die Übertragung von Syslog-Nachrichten ermöglicht. Es bietet auch ein Nachrichtenformat, das herstellerspezifische Erweiterungen auf strukturierte Weise ermöglicht.

Das Syslog-Protokoll ist zum De-facto-Standard für Ereignisbenachrichtigungen geworden und wird weitgehend für Systemverwaltung, Sicherheitsaudits, Netzwerküberwachung und Protokollanalyse verwendet.


Status dieses Memorandums (Status of This Memo)

Dies ist ein Dokument der Internet-Standards-Track.


Inhaltsverzeichnis (Table of Contents)


1. Einführung

Das Syslog-Protokoll besteht aus vier Hauptkomponenten:

  1. Ursprung (Originator): Das Gerät oder die Anwendung, das/die Syslog-Nachrichten generiert
  2. Kollektor (Collector): Der Server, der Syslog-Nachrichten empfängt
  3. Relay (Relay): Ein zwischengeschaltetes Gerät, das Syslog-Nachrichten weiterleitet
  4. Transportprotokoll (Transport Protocol): UDP (RFC 5426), TCP (RFC 6587), TLS (RFC 5425)

Syslog-Architektur:

Anwendung/Gerät (Originator)
|
| Protokolle generieren
v
Syslog-Nachricht
|
| Transport (UDP/TCP/TLS)
v
Relay (Optional)
|
| Weiterleiten
v
Syslog-Server (Collector)
|
| Speichern/Analysieren
v
Protokollverwaltungssystem

2. In diesem Dokument verwendete Konventionen

Wichtige Terminologie:

Facility (Facility)
Der Typ der Nachrichtenquelle (Kernel, Mail, Authentifizierung usw.).

Schweregrad (Severity)
Die Wichtigkeitsstufe der Nachricht (Notfall, Warnung, Informativ usw.).

Priorität (Priority)
Eine Kombination aus Facility und Schweregrad: Priority = Facility * 8 + Severity

Strukturierte Daten (Structured Data)
Zusätzliche Informationen im Schlüssel-Wert-Paar-Format.

Zeitstempel (Timestamp)
Hochpräzise Zeit im ISO-8601-Format.

Schlüsselwörter:

Die Schlüsselwörter „muss" (MUST), „darf nicht" (MUST NOT), „erforderlich" (REQUIRED), „muss" (SHALL), „darf nicht" (SHALL NOT), „sollte" (SHOULD), „sollte nicht" (SHOULD NOT), „empfohlen" (RECOMMENDED), „kann" (MAY) und „optional" (OPTIONAL) in diesem Dokument sind wie in RFC 2119 beschrieben zu interpretieren.


3. Transportschicht-Mapping

Syslog unterstützt mehrere Transportprotokolle:

TransportRFCPortEigenschaften
UDPRFC 5426514Verbindungslos, Nachrichten können verloren gehen
TCPRFC 6587514/601Zuverlässige Übertragung
TLSRFC 54256514Verschlüsselt und authentifiziert
RELP-2514Zuverlässiges Ereignisprotokollieru ngsprotokoll

Empfehlung: In Produktionsumgebungen sollte TLS verwendet werden, um Sicherheit und Zuverlässigkeit zu gewährleisten.


4. Syslog-Nachrichtenformat

4.1 Vollständige Nachrichtenstruktur

<PRI>VERSION TIMESTAMP HOSTNAME APP-NAME PROCID MSGID [STRUCTURED-DATA] MSG

Feldbeschreibungen:

FeldMax. LängeBeschreibungBeispiel
PRI-<Priorität><34>
VERSION-Syslog-Version1
TIMESTAMP-ISO-8601-Zeitstempel2024-12-21T10:30:00.123Z
HOSTNAME255Hostname oder IPwebserver01.example.com
APP-NAME48Anwendungsnamenginx
PROCID128Prozess-ID1234
MSGID32NachrichtentypID47
STRUCTURED-DATA-Strukturierte Daten[exampleSDID@32473 iut="3"]
MSG-NachrichteninhaltError: Connection timeout

4.2 Prioritätsberechnung (PRI)

PRI = Facility × 8 + Severity

Beispiel:

Facility: user (1)
Severity: notice (5)
PRI = 1 × 8 + 5 = 13
Nachricht beginnt mit: <13>

5. Schweregrad und Facility

5.1 Schweregrade (Severity Levels)

WertNameBeschreibungAnwendungsfall
0EmergencySystem ist unbenutzbarSystemabsturz
1AlertSofortige Maßnahme erforderlichDatenbankkorruption
2CriticalKritische BedingungenFestplattenspeicher erschöpft
3ErrorFehlerbedingungenDienststartfehler
4WarningWarnbedingungenWenig Festplattenspeicher
5NoticeNormale, aber wichtige BedingungKonfiguration neu geladen
6InformationalInformationsnachrichtenDienst erfolgreich gestartet
7DebugDebug-Level-NachrichtenDetaillierte Debug-Informationen

5.2 Facility-Codes (Facility Codes)

WertSchlüsselwortBeschreibung
0kernKernel-Nachrichten
1userBenutzerebenen-Nachrichten
2mailMail-System
3daemonSystem-Daemons
4authSicherheits-/Authentifizierungsnachrichten
5syslogInterne Syslog-Nachrichten
6lprZeilendrucker-Subsystem
7newsNetzwerknachrichten-Subsystem
8uucpUUCP-Subsystem
9cronCron-Daemon
10authprivSicherheits-/Authentifizierungsnachrichten (privat)
11ftpFTP-Daemon
12-15-Für Systemverwendung reserviert
16-23local0-local7Lokale Verwendung

6. Beispiele für Syslog-Nachrichten

Beispiel 1: Basisnachricht

<34>1 2024-12-21T10:30:00.123+08:00 webserver01 nginx 1234 - - User login successful

Analyse:

  • <34>: PRI = 34 (Facility: auth(4), Severity: critical(2))
  • 1: Version 1
  • 2024-12-21T10:30:00.123+08:00: Zeitstempel
  • webserver01: Hostname
  • nginx: Anwendungsname
  • 1234: Prozess-ID
  • -: Keine MSGID
  • -: Keine strukturierten Daten
  • User login successful: Nachricht

Beispiel 2: Mit strukturierten Daten

<165>1 2024-12-21T10:30:00Z mail.example.com postfix 5678 MSGID001 [origin software="postfix" swVersion="3.5.0"][meta sequenceId="123"] Email sent successfully

Analyse:

  • <165>: PRI = 165 (Facility: local4(20), Severity: notice(5))
  • Enthält zwei SD-ELEMENT:
    • [origin software="postfix" swVersion="3.5.0"]
    • [meta sequenceId="123"]

Beispiel 3: Minimale Nachricht

<13>1 2024-12-21T10:30:00Z server01 - - - - Test message

Analyse: Nur erforderliche Felder enthalten, andere mit - dargestellt.


7. Strukturierte Daten

7.1 Format strukturierter Daten

[SD-ID@PEN param1="value1" param2="value2"]

Komponenten:

  • SD-ID: Strukturierte Daten-Kennung (Structured Data Identifier)
  • PEN: Private Unternehmensnummer (Private Enterprise Number, von IANA zugewiesen)
  • param: Parametername
  • value: Parameterwert

7.2 Standard-SD-IDs

timeQuality - Zeitqualitätsinformationen:

[timeQuality tzKnown="1" isSynced="1" syncAccuracy="60000"]

origin - Informationen zur Nachrichtenherkunft:

[origin ip="192.168.1.100" enterpriseId="32473" software="myApp" swVersion="1.2.3"]

meta - Metadaten:

[meta sequenceId="1234" sysUpTime="12345" language="en-US"]

7.3 Benutzerdefinierte strukturierte Daten

Organisationen können eigene SD-IDs definieren:

[exampleSDID@32473 eventSource="Application" eventID="1011"]

8. Sicherheitsüberlegungen

8.1 Transportsicherheit

Bedrohungen:

  • 🔓 Abhören (Eavesdropping): UDP/TCP-Klartextübertragung kann abgefangen werden
  • 🎭 Spoofing: Bösartige Geräte können Protokollnachrichten fälschen
  • 💥 DoS: Große Mengen gefälschter Protokolle können den Server überlasten
  • ✂️ Manipulation (Tampering): Nachrichten können während der Übertragung geändert werden

Gegenmaßnahmen:

TLS verwenden (RFC 5425):

  • Verschlüsselte Übertragung
  • Server-Authentifizierung
  • Optionale Client-Authentifizierung

Signierung: Digitale Signaturen verwenden, um die Nachrichtenintegrität zu schützen

Zugriffskontrolle: Zulässige Quell-IPs für Protokollübertragung einschränken

8.2 Protokollintegrität

Empfehlungen:

  • Nur-Anhängen-Protokolldateien verwenden
  • Regelmäßige Archivierung und Sicherung
  • Protokollintegritätsprüfung implementieren (z. B. Hash-Ketten)
  • Blockchain-Technologie für Audit-Protokollschutz in Betracht ziehen

8.3 Datenschutzüberlegungen

Protokolle können sensible Informationen enthalten:

  • Benutzeranmeldeinformationen (sollten NICHT protokolliert werden!)
  • IP-Adressen
  • Personenbezogene Daten (PII, Personally Identifiable Information)

Empfehlung: Protokolldaten-Maskierungsrichtlinien implementieren.


9. IANA-Überlegungen

Die IANA pflegt mehrere Register für Syslog:

  • Syslog-Facility-Codes
  • Syslog-Schweregrade
  • Strukturierte Daten-IDs (SD-ID)
  • Syslog-Versionsnummern

10. Referenzen

10.1 Normative Referenzen

  • [RFC2119] - Schlüsselwörter zur Verwendung in RFCs zur Angabe von Anforderungsstufen
  • [RFC5234] - Erweiterte BNF für Syntaxspezifikationen: ABNF
  • [RFC5425] - Transport Layer Security (TLS) Transport-Mapping für Syslog
  • [RFC5426] - Übertragung von Syslog-Nachrichten über UDP

10.2 Informative Referenzen

  • [RFC3164] - Das BSD-Syslog-Protokoll (von dieser RFC ersetzt)
  • [RFC6587] - Übertragung von Syslog-Nachrichten über TCP
  • [ISO8601] - Datenelemente und Austauschformate

Syslog ist das Standardprotokoll für Unix/Linux-Systemprotokollierung. RFC 5424 ist eine moderne Verbesserung des traditionellen BSD Syslog (RFC 3164).

Hauptverbesserungen:

Strukturierte Daten: Unterstützt Schlüssel-Wert-Paar-Format
Hochpräzise Zeit: ISO-8601-Zeitstempel, genau auf Millisekunden
Explizite Felder: Anwendungsname, Prozess-ID, Nachrichten-ID usw.
Internationalisierung: Unterstützt UTF-8-Kodierung

Gängige Syslog-Tools:

Linux-Befehle:

# Systemprotokolle anzeigen
journalctl -f

# Testnachricht senden
logger -p user.notice "Test message"

# Protokolle für bestimmte Facility anzeigen
journalctl -t kernel

# Protokolle in Echtzeit überwachen
tail -f /var/log/syslog

Konfigurationsdatei (/etc/rsyslog.conf):

# Alle Protokolle an Remote-Server senden
*.* @@log-server.example.com:514

# Nach Facility klassifizieren
mail.* /var/log/mail.log
kern.* /var/log/kern.log
auth,authpriv.* /var/log/auth.log

# Nach Schweregrad filtern
*.err /var/log/error.log
*.warn /var/log/warn.log

Beliebte Syslog-Server:

  • rsyslog: Hochleistungsfähig, funktionsreich
  • syslog-ng: Flexibles Filtern und Routing
  • fluentd: Moderner Log-Kollektor
  • Graylog: Zentralisierte Protokollverwaltungsplattform
  • Splunk: Enterprise-Protokollanalyse

Verwandte RFCs:

  • RFC 3164 - BSD Syslog (veraltet)
  • RFC 5425 - TLS-Transport
  • RFC 5426 - UDP-Transport
  • RFC 6587 - TCP-Transport