Server Setup · 7 min read · Nov 15, 2025

Installieren eines zentralen Protokollservers mit Rsyslog in Debian 9

In Linux sind die Protokolldateien Dateien, die Nachrichten über die Systemfunktionen enthalten, die von Systemadministratoren verwendet werden, um eventuelle Probleme auf den Maschinen zu identifizieren. Die Protokolle helfen den Administratoren, die Ereignisse zu visualisieren, die im System über Zeiträume hinweg passiert sind. In der Regel werden alle Protokolldateien im Verzeichnis /var/log in Linux aufbewahrt. An diesem Ort gibt es verschiedene Arten von Protokolldateien zur Speicherung verschiedener Nachrichten, wie z.B. eine Protokolldatei zur Aufzeichnung von Systemereignissen, eine Protokolldatei für sicherheitsrelevante Nachrichten, andere Protokolldateien, die dem Kernel, Benutzern oder Cron-Jobs gewidmet sind. Der Hauptzweck von Protokolldateien besteht darin, Systemprobleme zu beheben. Die meisten Protokolldateien in Linux werden vom Dienst rsyslogd gesteuert. In neueren Versionen von Linux-Distributionen werden die Protokolldateien auch vom Journald-Systemdienst gesteuert und verwaltet, der Teil des Systemd-Initialisierungsprogramms ist. Die von dem Journal-Daemon gespeicherten Protokolle werden in einem binären Format geschrieben und sind hauptsächlich flüchtig, in RAM und in einem Ringpuffer in /run/log/journal/ gespeichert. Der Journald-Dienst kann jedoch auch so konfiguriert werden, dass die Syslog-Nachrichten dauerhaft gespeichert werden.

In Linux kann der Rsyslog-Server so konfiguriert werden, dass er einen zentralen Protokollmanager im Dienst-Client-Modell betreibt und Protokollnachrichten über das Netzwerk über TCP- oder UDP-Transportprotokolle sendet oder Protokolle von Netzwerkgeräten, Servern, Routern, Switches oder anderen Systemen oder eingebetteten Geräten empfängt, die Protokolle generieren.

Der Rsyslog-Daemon kann so eingerichtet werden, dass er gleichzeitig als Client und Server fungiert. Wenn er als Server konfiguriert ist, hört Rsyslog standardmäßig auf Port 514 TCP und UDP und beginnt, Protokollnachrichten zu sammeln, die über das Netzwerk von entfernten Systemen gesendet werden. Als Client sendet Rsyslog die internen Protokollnachrichten über das Netzwerk an einen entfernten Rsyslog-Server über dieselben TCP- oder UDP-Ports.

Rsyslog filtert Syslog-Nachrichten gemäß ausgewählten Eigenschaften und Aktionen. Die Rsyslog-Filter sind wie folgt:

  1. Facility- oder Prioritätsfilter
  2. Eigenschaftsbasierte Filter
  3. Ausdrucksbasierte Filter

Der Facility-Filter wird durch das interne Linux-Subsystem dargestellt, das die Protokolle erzeugt. Sie sind wie folgt kategorisiert:

  • auth/authpriv = Nachrichten, die von Authentifizierungsprozessen erzeugt werden
  • cron = Protokolle, die sich auf Cron-Aufgaben beziehen
  • daemon = Nachrichten, die sich auf laufende Systemdienste beziehen
  • kernel = Linux-Kernel-Nachrichten
  • mail = Nachrichten des Mailservers
  • syslog = Nachrichten, die sich auf Syslog oder andere Daemons beziehen (DHCP-Server sendet Protokolle hierhin)
  • lpr = Nachrichten von Druckern oder Druckservern
  • local0 - local7 = benutzerdefinierte Nachrichten unter der Kontrolle des Administrators

Die Prioritäts- oder Schweregrad-Levels werden einem Schlüsselwort und einer Zahl zugewiesen, wie unten beschrieben.

  • emerg = Notfall – 0
  • alert = Warnungen – 1
  • err = Fehler – 3
  • warn = Warnungen – 4
  • notice = Benachrichtigung – 5
  • info = Informationen – 6
  • debug = Debugging – 7 höchstes Niveau

Es gibt auch einige spezielle Rsyslog-Schlüsselwörter wie das Sternchen (*) Zeichen, um alle Facilities oder Prioritäten zu definieren, das Schlüsselwort none, das keine Prioritäten angibt, das Gleichheitszeichen (=), das nur diese Priorität auswählt, und das Ausrufezeichen (!), das eine Priorität negiert.

Der Aktionspart des Syslogs wird durch die destination-Anweisung dargestellt. Das Ziel einer Protokollnachricht kann eine Datei sein, die im Dateisystem gespeichert ist, eine Datei im Systempfad /var/log/, ein anderer lokaler Prozesseingang über eine benannte Pipe oder FIFO. Die Protokollnachrichten können auch an Benutzer gerichtet, in ein schwarzes Loch (/dev/null) verworfen oder an stdout oder an einen entfernten Syslog-Server über das TCP/UDP-Protokoll gesendet werden. Die Protokollnachrichten können auch in einer Datenbank wie MySQL oder PostgreSQL gespeichert werden.

Rsyslog als Server konfigurieren

Der Rsyslog-Daemon ist in den meisten Linux-Distributionen automatisch installiert. Wenn Rsyslog jedoch nicht auf Ihrem System installiert ist, können Sie einen der folgenden Befehle ausführen, um den Dienst zu installieren; Sie benötigen Root-Rechte, um die Befehle auszuführen.

In Debian-basierten Distributionen:

sudo apt-get install rsyslog

In RHEL-basierten Distributionen wie CentOS:

sudo yum install rsyslog

Um zu überprüfen, ob der Rsyslog-Daemon auf einem System gestartet ist, führen Sie die folgenden Befehle aus, abhängig von Ihrer Distributionsversion.

Auf neueren Linux-Distributionen mit systemd:

systemctl status rsyslog.service

Auf älteren Linux-Versionen mit init:

service rsyslog status
/etc/init.d/rsyslog status

Um den Rsyslog-Daemon zu starten, geben Sie den folgenden Befehl ein.

Auf älteren Linux-Versionen mit init:

service rsyslog start
/etc/init.d/rsyslog start

Auf den neuesten Linux-Distributionen:

systemctl start rsyslog.service

Um ein Rsyslog-Programm im Servermodus auszuführen, bearbeiten Sie die Hauptkonfigurationsdatei in /etc/rsyslog.conf. Nehmen Sie in dieser Datei die folgenden Änderungen wie im untenstehenden Beispiel gezeigt vor.

sudo vi /etc/rsyslog.conf

Suchen Sie die folgenden Zeilen und entfernen Sie das Hashtag (#), um den Empfang von UDP-Protokollnachrichten auf Port 514 zu ermöglichen. Standardmäßig wird der UDP-Port von Syslog verwendet, um Nachrichten zu senden und zu empfangen.

$ModLoad imudp   
$UDPServerRun 514

Da das UDP-Protokoll nicht zuverlässig ist, um Daten über ein Netzwerk auszutauschen, können Sie Rsyslog so einrichten, dass Protokollnachrichten an einen entfernten Server über das TCP-Protokoll ausgegeben werden. Um das TCP-Empfangsprotokoll zu aktivieren, öffnen Sie die Datei /etc/rsyslog.conf und entfernen Sie das Kommentarzeichen vor den folgenden Zeilen, wie unten gezeigt. Dies ermöglicht es dem Rsyslog-Daemon, an einem TCP-Socket auf Port 514 zu binden und zuzuhören.

$ModLoad imtcp   
$InputTCPServerRun 514 

Beide Protokolle können in Rsyslog gleichzeitig aktiviert werden.

Wenn Sie angeben möchten, welchen Sendern Sie den Zugriff auf den Rsyslog-Daemon erlauben, fügen Sie die folgende Zeile nach den aktivierten Protokollzeilen hinzu:

$AllowedSender TCP, 127.0.0.1, 10.110.50.0/24, *.yourdomain.com

Sie müssen auch eine neue Vorlage erstellen, die vom Rsyslog-Daemon vor dem Empfang der eingehenden Protokolle geparst wird. Die Vorlage sollte dem lokalen Rsyslog-Server anweisen, wo die eingehenden Protokollnachrichten gespeichert werden sollen. Definieren Sie die Vorlage direkt nach der $AllowedSender-Zeile, wie im folgenden Beispiel gezeigt.

$template Incoming-logs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"  
**.*  *?Incoming-logs  
& ~

** Um nur die Nachrichten zu protokollieren, die von der Kern-Facility erzeugt werden, verwenden Sie die folgende Syntax.

kern.*   ?Incoming-logs

Die empfangenen Protokolle werden von der obigen Vorlage geparst und im lokalen Dateisystem im Verzeichnis /var/log/ gespeichert, in Dateien, die nach dem Hostnamen des Clients benannt sind, der die Nachrichten erzeugt hat: %HOSTNAME% und %PROGRAMNAME% Variablen.

Die unten stehende & ~ Umleitungsregel konfiguriert den Rsyslog-Daemon so, dass die eingehenden Protokollnachrichten nur in den oben angegebenen Dateien gespeichert werden, die durch die Variablenamen angegeben sind. Andernfalls werden die empfangenen Protokolle weiter verarbeitet und auch im Inhalt lokaler Protokolle, wie z.B. der /var/log/syslog-Datei, gespeichert.

Um eine Regel hinzuzufügen, die alle damit verbundenen Protokollnachrichten zu Mail verwirft, können Sie die folgende Anweisung verwenden.

mail.* ~

Andere Variablen, die verwendet werden können, um Dateinamen auszugeben, sind: %syslogseverity%, %syslogfacility%, %timegenerated%, %HOSTNAME%, %syslogtag%, %msg%, %FROMHOST-IP%, %PRI%, %MSGID%, %APP-NAME%, %TIMESTAMP%, %$year%, %$month%, %$day%

Beginnend mit Rsyslog-Version 7 kann ein neues Konfigurationsformat verwendet werden, um eine Vorlage in einem Rsyslog-Server zu deklarieren.

Ein Beispiel für eine Vorlage der Version 7 kann wie folgt aussehen:

template(name="MyTemplate" type="string"  
         string="/var/log/%FROMHOST-IP%/%PROGRAMNAME:::secpath-replace%.log"  
        )

Eine andere Möglichkeit, die obige Vorlage zu schreiben, kann auch wie folgt aussehen:

template(name="MyTemplate" type="list") {  
    constant(value="/var/log/")  
    property(name="fromhost-ip")  
    constant(value="/")  
    property(name="programname" SecurePath="replace")  
    constant(value=".log")  
    } *  
***

Um Änderungen an der Rsyslog-Konfigurationsdatei anzuwenden, müssen Sie den Daemon neu starten, um die neue Konfiguration zu laden.

sudo service rsyslog restart
sudo systemctl restart rsyslog

Um zu überprüfen, welche Rsyslog-Sockets im Listening-Zustand auf einem Debian-Linux-System geöffnet sind, können Sie den netstat-Befehl mit Root-Rechten ausführen. Leiten Sie die Ergebnisse über ein Filter-Utility wie grep.

sudo netstat –tulpn | grep rsyslog

Seien Sie sich bewusst, dass Sie auch die Rsyslog-Ports in der Firewall öffnen müssen, um eingehende Verbindungen zuzulassen.

In RHEL-basierten Distributionen mit aktivierter Firewalld geben Sie die folgenden Befehle ein:

firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/tcp
firewall-cmd –reload

In Debian-basierten Distributionen mit aktivierter UFW-Firewall geben Sie die folgenden Befehle ein:

ufw allow 514/tcp
ufw allow 514/udp

Iptables-Firewall-Regeln:

iptables -A INPUT -p tcp -m tcp --dport 514 -j ACCEPT
iptables -A INPUT -p udp --dport 514 -j ACCEPT

Rsyslog als Client konfigurieren

Um den Rsyslog-Daemon im Clientmodus auszuführen und lokale Protokollnachrichten an einen entfernten Rsyslog-Server auszugeben, bearbeiten Sie die Datei /etc/rsyslog.conf und fügen Sie eine der folgenden Zeilen hinzu:

*. *  @IP_REMOTE_RSYSLOG_SERVER:514
*. *  @FQDN_RSYSLOG_SERVER:514

Diese Zeile ermöglicht es dem Rsyslog-Dienst, alle internen Protokolle an einen entfernten Rsyslog-Server über den UDP-Port 514 auszugeben.

Um die Protokolle über das TCP-Protokoll zu senden, verwenden Sie die folgende Vorlage:

*. *  @@IP_reomte_syslog_server:514

Um nur cron-bezogene Protokolle mit allen Prioritäten an einen Rsyslog-Server auszugeben, verwenden Sie die folgende Vorlage:

cron.* @ IP_reomte_syslog_server:514

In Fällen, in denen der Rsyslog-Server über das Netzwerk nicht erreichbar ist, fügen Sie die folgenden Zeilen zur Datei /etc/rsyslog.conf auf der Client-Seite hinzu, um die Protokolle vorübergehend in einer datengestützten Datei zu speichern, bis der Server online kommt.

$ActionQueueFileName queue  
$ActionQueueMaxDiskSpace 1g  
$ActionQueueSaveOnShutdown on  
$ActionQueueType LinkedList  
$ActionResumeRetryCount -1

Um die obigen Regeln anzuwenden, muss der Rsyslog-Daemon neu gestartet werden, um als Client zu fungieren.

Share: X/Twitter LinkedIn

Erhalte neue Beiträge in deinem Posteingang.

Kein Spam. Jederzeit abmelden.