Netzwerk-Protokollierung: Einführung in das Syslog-Protokoll
Wenn Sie Dutzende oder Hunderte von Servern betreiben, wird die Überwachung jeder einzelnen separat unmöglich. Die Lösung ist die zentralisierte Protokollsammlung mithilfe des Syslog-Protokolls. In diesem Artikel werfen wir einen detaillierten Blick darauf, wie es funktioniert und wie man es konfiguriert.
Was ist Syslog?
Syslog ist ein Standardprotokoll für die Übertragung von systembezogenen Protokollmeldungen über ein Netzwerk. Es ermöglicht die Sammlung von Protokollen verschiedener Geräte und Systeme auf einem einzigen zentralen Server. Dies ist besonders wichtig für:
- Unternehmensnetzwerke
- Verteilte Systeme
- Cloud-Infrastrukturen
- Sicherheitsüberwachung
Geschichte von Syslog
Das Syslog-Protokoll wurde in den 1980er Jahren von Eric Allman für BSD Unix entwickelt. Seitdem ist es der De-facto-Standard für die Übertragung von Protokollmeldungen in IP-Netzwerken geworden. Im Jahr 2009 wurde RFC 5424 angenommen, welches die moderne Version des Protokolls definiert.
Syslog-Architektur
Ein Syslog-System besteht aus drei Hauptkomponenten:
- Syslog-Client (Ursprung) — Gerät oder Anwendung, die Meldungen generiert
- Syslog-Server (Sammler) — Meldungsempfänger
- Netzwerk — Übertragungskanal (normalerweise UDP oder TCP)
Syslog-Nachrichtenformat
Jede Syslog-Nachricht besteht aus drei Teilen:
PRI (Priorität)
Enthält Informationen über die Nachrichtenpriorität:
<PRI>
PRI wird mit der Formel berechnet: facility * 8 + severity, wobei:
- facility — Nachrichtenquelle (0-23)
- severity — Nachrichtenwichtigkeit (0-7)
HEADER
Enthält: - TIMESTAMP — Ereigniszeit - HOSTNAME — Sender-Hostname - APP-NAME — Anwendungsname - PROCID — Prozess-ID - MSGID — Nachrichten-ID
MSG
Enthält: - STRUCTURED-DATA — strukturierte Parameter - MESSAGE — Nachrichtentext
Beispiel einer vollständigen Nachricht:
<34>1 2026-03-03T15:00:00.123Z myserver app 12345 ID47 [exampleSD@32473 iut="3" event="start"] Starte...
Schweregrade
Syslog definiert 8 Schweregrade:
- 0 — Emergency (Notfallsituation)
- 1 — Alert (erfordert sofortiges Eingreifen)
- 2 — Critical (kritischer Fehler)
- 3 — Error (Fehler)
- 4 — Warning (Warnung)
- 5 — Notice (normales, aber bedeutendes Ereignis)
- 6 — Informational (informative Meldung)
- 7 — Debug (Debug-Meldung)
Facility-Codes
Facility definiert die Quelle der Meldung:
- 0 — Kernel-Meldungen
- 1 — Benutzerebene Meldungen
- 2 — Mail-System
- 3 — System-Daemons
- 4 — Sicherheits-/Autorisierungsmeldungen
- 5 — interne Meldungen von syslogd
- 6 — Zeilendruckersubsystem
- 7 — Netzwerk-News-Subsystem
- 8 — UUCP-Subsystem
- 9 — Uhr-Daemon
- 10 — Sicherheits-/Autorisierungsmeldungen
- 11 — FTP-Daemon
- 12 — NTP-Subsystem
- 13 — Protokoll-Audit
- 14 — Protokoll-Alarm
- 15 — Uhr-Daemon
- 16-23 — lokale Nutzungs-Facilities
Konfiguration des Syslog-Servers
In Linux
rsyslog
Rsyslog ist eine verbesserte Version des klassischen Syslog. Installieren Sie es:
```bash
Ubuntu/Debian
sudo apt-get install rsyslog
CentOS/RHEL
sudo yum install rsyslog ```
Aktivieren Sie den Empfang von Netzwerknachrichten durch Bearbeiten von /etc/rsyslog.conf:
```
UDP-Modul aktivieren
module(load="imudp") input(type="imudp" port="514")
TCP-Modul aktivieren
module(load="imtcp") input(type="imtcp" port="514") ```
Erstellen Sie eine separate Datei für Netzwerknachrichten: ```
Alle Netzwerknachrichten in separate Datei
. @remote-server-ip:514 ```
Starten Sie den Dienst neu:
bash
sudo systemctl restart rsyslog
syslog-ng
Alternative Option:
bash
sudo apt-get install syslog-ng
Konfigurationsdatei /etc/syslog-ng/syslog-ng.conf:
``` source s_network { udp(port(514)); tcp(port(514)); };
destination d_remote_logs { file("/var/log/remote/${FULLHOST}/messages.log"); };
log { source(s_network); destination(d_remote_logs); }; ```
In Windows
Windows unterstützt Syslog nicht standardmäßig, aber es gibt mehrere Lösungen:
NXLog Community Edition
- Laden Sie NXLog herunter und installieren Sie es
- Konfigurieren Sie die Konfigurationsdatei
/conf/nxlog.conf:
``` Module im_udp Host 0.0.0.0 Port 514 Protocol udp ParseFormat syslog
Kiwi Syslog Server
Beliebte kommerzielle Lösung mit grafischer Benutzeroberfläche.
Konfiguration der Clients
Linux-Clients
Um Nachrichten an einen entfernten Server zu senden, fügen Sie eine Zeile zu /etc/rsyslog.conf hinzu:
```
Alle Nachrichten an entfernten Server senden
. @@remote-server-ip:514 ```
Für bestimmte Nachrichtentypen: ```
Nur Fehler
*.err @@remote-server-ip:514
Nur Kernel-Nachrichten
kern.* @@remote-server-ip:514 ```
Konfiguration von Anwendungen
Viele Anwendungen können Protokolle über Syslog senden. Beispiel für Apache:
```
In der Apache-Konfigurationsdatei
LogLevel warn ErrorLog "| /usr/bin/logger -t httpd -p local6.error" ```
Windows-Clients
Um Protokolle von Windows-Rechnern zu senden, können Sie Folgendes verwenden:
- NXLog — Senden von Ereignissen aus dem Ereignisprotokoll
- SolarWinds Free Syslog Sender
- Benutzerdefinierte PowerShell-Skripte
Syslog-Sicherheit
Traditionelles Syslog verwendet UDP ohne Verschlüsselung, was Risiken birgt:
- Nachrichtenabfangen
- Quellentäuschung
- Verletzung der Datenintegrität
Um diese Probleme zu beheben:
- Verwenden Sie TCP statt UDP
- Implementieren Sie TLS-Verschlüsselung (RFC 5425)
- Wenden Sie Quellauthentifizierung an
- Verwenden Sie VPN für die Protokollübertragung
Praktische Empfehlungen
Auswahl der richtigen Lösung
- Für kleine Netzwerke: rsyslog oder syslog-ng
- Für Unternehmensumgebungen: Splunk, ELK Stack, Graylog
- Für Cloud: Cloud-Protokollmanagement-Lösungen
Leistungsüberwachung
- Überwachen Sie das Volumen der übertragenen Daten
- Überwachen Sie die Netzwerkschnittstellenbelastung
- Prüfen Sie die Leistung des Protokollservers
Hochverfügbarkeitsarchitektur
- Konfigurieren Sie mehrere Protokollserver
- Verwenden Sie Lastverteilung
- Implementieren Sie Protokollsicherung
Fazit
Syslog ist ein leistungsfähiges Werkzeug für die zentralisierte Protokollsammlung. Durch ordnungsgemäße Konfiguration dieses Systems können Sie Ereignisse in Ihrer Infrastruktur effektiv überwachen und analysieren. Denken Sie an Sicherheit und Skalierbarkeit, wenn Sie Ihre Protokollsystemarchitektur planen.