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
- 2. In diesem Dokument verwendete Konventionen
- 3. Transportschicht-Mapping
- 4. Syslog-Nachrichtenformat
- 5. Schweregrad und Facility
- 6. Beispiele für Syslog-Nachrichten
- 7. Strukturierte Daten
- 8. Sicherheitsüberlegungen
- 9. IANA-Überlegungen
- 10. Referenzen
1. Einführung
Das Syslog-Protokoll besteht aus vier Hauptkomponenten:
- Ursprung (Originator): Das Gerät oder die Anwendung, das/die Syslog-Nachrichten generiert
- Kollektor (Collector): Der Server, der Syslog-Nachrichten empfängt
- Relay (Relay): Ein zwischengeschaltetes Gerät, das Syslog-Nachrichten weiterleitet
- 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:
| Transport | RFC | Port | Eigenschaften |
|---|---|---|---|
| UDP | RFC 5426 | 514 | Verbindungslos, Nachrichten können verloren gehen |
| TCP | RFC 6587 | 514/601 | Zuverlässige Übertragung |
| TLS | RFC 5425 | 6514 | Verschlüsselt und authentifiziert |
| RELP | - | 2514 | Zuverlä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:
| Feld | Max. Länge | Beschreibung | Beispiel |
|---|---|---|---|
| PRI | - | <Priorität> | <34> |
| VERSION | - | Syslog-Version | 1 |
| TIMESTAMP | - | ISO-8601-Zeitstempel | 2024-12-21T10:30:00.123Z |
| HOSTNAME | 255 | Hostname oder IP | webserver01.example.com |
| APP-NAME | 48 | Anwendungsname | nginx |
| PROCID | 128 | Prozess-ID | 1234 |
| MSGID | 32 | Nachrichtentyp | ID47 |
| STRUCTURED-DATA | - | Strukturierte Daten | [exampleSDID@32473 iut="3"] |
| MSG | - | Nachrichteninhalt | Error: 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)
| Wert | Name | Beschreibung | Anwendungsfall |
|---|---|---|---|
| 0 | Emergency | System ist unbenutzbar | Systemabsturz |
| 1 | Alert | Sofortige Maßnahme erforderlich | Datenbankkorruption |
| 2 | Critical | Kritische Bedingungen | Festplattenspeicher erschöpft |
| 3 | Error | Fehlerbedingungen | Dienststartfehler |
| 4 | Warning | Warnbedingungen | Wenig Festplattenspeicher |
| 5 | Notice | Normale, aber wichtige Bedingung | Konfiguration neu geladen |
| 6 | Informational | Informationsnachrichten | Dienst erfolgreich gestartet |
| 7 | Debug | Debug-Level-Nachrichten | Detaillierte Debug-Informationen |
5.2 Facility-Codes (Facility Codes)
| Wert | Schlüsselwort | Beschreibung |
|---|---|---|
| 0 | kern | Kernel-Nachrichten |
| 1 | user | Benutzerebenen-Nachrichten |
| 2 | Mail-System | |
| 3 | daemon | System-Daemons |
| 4 | auth | Sicherheits-/Authentifizierungsnachrichten |
| 5 | syslog | Interne Syslog-Nachrichten |
| 6 | lpr | Zeilendrucker-Subsystem |
| 7 | news | Netzwerknachrichten-Subsystem |
| 8 | uucp | UUCP-Subsystem |
| 9 | cron | Cron-Daemon |
| 10 | authpriv | Sicherheits-/Authentifizierungsnachrichten (privat) |
| 11 | ftp | FTP-Daemon |
| 12-15 | - | Für Systemverwendung reserviert |
| 16-23 | local0-local7 | Lokale 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 12024-12-21T10:30:00.123+08:00: Zeitstempelwebserver01: Hostnamenginx: Anwendungsname1234: Prozess-ID-: Keine MSGID-: Keine strukturierten DatenUser 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