Website-Suche

Richten Sie einen zentralen Protokollserver mit Rsyslog in CentOS/RHEL 8 ein


Damit Systemadministratoren Probleme auf einem CentOS 8- oder RHEL 8-Server erkennen oder analysieren können, ist es wichtig, die auf dem Server aufgetretenen Ereignisse zu kennen und anzuzeigen bestimmten Zeitraum aus Protokolldateien im Verzeichnis /var/log im System.

Das Syslog-System (System Logging Protocol) auf dem Server kann als zentraler Protokollüberwachungspunkt über ein Netzwerk fungieren, an dem alle Server, Netzwerkgeräte, Switches, Router und internen Dienste beteiligt sind Sie können Protokolle erstellen, unabhängig davon, ob sie mit dem jeweiligen internen Problem verknüpft sind oder nur informative Nachrichten senden.

Auf einem CentOS/RHEL 8-Server ist der Rsyslog-Daemon der wichtigste Protokollserver, der standardmäßig vorinstalliert ist, gefolgt vom Systemd Journal Daemon (< starkes>Journal).

Rsyslog ist ein Open-Source-Dienstprogramm, das als Client/Server-Architekturdienst entwickelt wurde und beide Rollen unabhängig voneinander übernehmen kann. Es kann als Server ausgeführt werden und alle von anderen Geräten über das Netzwerk übertragenen Protokolle sammeln, oder es kann als Client ausgeführt werden, indem es alle protokollierten internen Systemereignisse an einen Remote-Syslog-Server sendet.

Anforderungen

  1. Installation von „CentOS 8.0“ mit Screenshots
  2. Installation von RHEL 8 mit Screenshots

Um einen zentralen Protokollserver auf einem CentOS/RHEL 8-Server einzurichten, müssen Sie überprüfen und bestätigen, dass die /var-Partition über genügend Speicherplatz verfügt (mindestens einige GB). ), um alle aufgezeichneten Protokolldateien auf dem System zu speichern, die von anderen Geräten im Netzwerk gesendet werden. Ich empfehle Ihnen, über ein separates Laufwerk (LVM oder RAID) zu verfügen, um das Verzeichnis /var/log/ bereitzustellen.

So konfigurieren Sie den Rsyslog-Server in CentOS/RHEL 8

1. Wie gesagt, der Rsyslog-Dienst wird automatisch auf dem CentOS/RHEL 8-Server installiert und ausgeführt. Um zu überprüfen, ob der Daemon im System ausgeführt wird, führen Sie den folgenden Befehl aus.

systemctl status rsyslog.service

Wenn der Dienst nicht standardmäßig ausgeführt wird, führen Sie den folgenden Befehl aus, um den rsyslog-Daemon zu starten.

systemctl start rsyslog.service

2. Wenn das Dienstprogramm Rsyslog nicht standardmäßig auf dem System installiert ist, das Sie als zentralen Protokollierungsserver verwenden möchten, führen Sie den folgenden DNF-Befehl aus, um das Rsyslog-Paket zu installieren Starten Sie den Daemon.


dnf install rsyslog
systemctl start rsyslog.service

3. Sobald das Dienstprogramm Rsyslog installiert ist, können Sie rsyslog jetzt als zentralen Protokollierungsserver konfigurieren, indem Sie die Hauptkonfigurationsdatei /etc/rsyslog.conf öffnen , um Protokollmeldungen für externe Clients zu empfangen.

vi /etc/rsyslog.conf

Suchen Sie in der Konfigurationsdatei /etc/rsyslog.conf die folgenden Zeilen und kommentieren Sie sie aus, um dem Rsyslog-Server den UDP-Transportempfang über den Port 514 zu gewähren . Rsyslog verwendet das Standardprotokoll UDP für die Protokollübertragung.

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

4. Das UDP-Protokoll hat keinen TCP-Overhead und ermöglicht eine schnellere Datenübertragung als das TCP-Protokoll. Andererseits garantiert das UDP-Protokoll nicht die Zuverlässigkeit der übertragenen Daten.

Wenn Sie jedoch das TCP-Protokoll für den Protokollempfang verwenden möchten, müssen Sie die folgenden Zeilen in der Konfigurationsdatei /etc/rsyslog.conf suchen und auskommentieren, um Rsyslog zu konfigurieren Daemon zum Binden und Abhören eines TCP-Sockets am Port 514.

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

5. Erstellen Sie nun eine neue Vorlage für den Empfang von Remote-Nachrichten, da diese Vorlage den lokalen Rsyslog-Server anleitet, wo die von Syslog-Netzwerk-Clients gesendeten empfangenen Nachrichten gespeichert werden sollen.


$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.* ?RemoteLogs

Die $template RemoteLogs-Direktive leitet den Rsyslog-Daemon an, alle übertragenen Protokollnachrichten zu sammeln und in verschiedene Dateien zu schreiben, basierend auf dem Clientnamen und der Remote-Clientanwendung, die die Nachrichten erstellt hat, basierend auf den beschriebenen Eigenschaften, die in hinzugefügt wurden Vorlagenkonfiguration: %HOSTNAME% und %PROGRAMNAME%.

Alle empfangenen Protokolldateien werden im lokalen Dateisystem in eine zugewiesene Datei geschrieben, die nach dem Hostnamen des Client-Computers benannt und im Verzeichnis /var/log/ gespeichert ist.

Die Umleitungsregel & ~ weist den lokalen Rsyslog-Server an, die weitere Verarbeitung der empfangenen Protokollnachricht zu stoppen und die Nachrichten zu entfernen (sie nicht in interne Protokolldateien zu schreiben).

RemoteLogs ist ein willkürlicher Name, der dieser Vorlagenanweisung gegeben wird. Sie können einen beliebigen Namen verwenden, der am besten zu Ihrer Vorlage passt.

Um komplexere Rsyslog-Vorlagen zu konfigurieren, lesen Sie das Handbuch zur Rsyslog-Konfigurationsdatei, indem Sie den Befehl man rsyslog.conf ausführen, oder konsultieren Sie die Rsyslog-Onlinedokumentation.

man rsyslog.conf

6. Nachdem Sie die oben genannten Konfigurationsänderungen vorgenommen haben, können Sie den Rsyslog-Daemon neu starten, um die letzten Änderungen zu übernehmen, indem Sie den folgenden Befehl ausführen.

service rsyslog restart

7. Sobald Sie den Rsyslog-Server neu gestartet haben, sollte er nun als zentraler Protokollserver fungieren und Nachrichten von Syslog-Clients aufzeichnen. Um die Rsyslog-Netzwerk-Sockets zu bestätigen, führen Sie den Befehl netstat aus und verwenden Sie das Dienstprogramm grep, um die Rsyslog-Zeichenfolge zu filtern.

netstat -tulpn | grep rsyslog 

Wenn der netstat-Befehl unter CentOS 8 nicht installiert ist, können Sie ihn mit dem folgenden Befehl installieren.


dnf whatprovides netstat
dnf install net-tools

8. Wenn SELinux in CentOS/RHEL 8 aktiv ist, führen Sie den folgenden Befehl aus, um rsyslog-Verkehr je nach Netzwerk-Socket-Typ zuzulassen.

semanage port -a -t syslogd_port_t -p udp 514
semanage port -a -t syslogd_port_t -p tcp 514

Wenn semanage command nicht unter CentOS 8 installiert werden kann, können Sie es mit dem folgenden Befehl installieren.


dnf whatprovides semanage
dnf install policycoreutils-python-utils

9. Wenn auf dem System eine Firewall aktiv ist, führen Sie den folgenden Befehl aus, um die erforderlichen Regeln zum Zulassen von Rsyslog-Verkehr auf Ports in Firewalld hinzuzufügen.


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

Sie können auch eingehende Verbindungen auf Port 514 aus IP-Bereichen auf der Whitelist einschränken, wie gezeigt.


firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="udp" accept'
firewall-cmd --reload

Das ist alles! Rsyslog ist jetzt als zentraler Protokollserver konfiguriert und kann Protokolle von Remote-Clients sammeln. Im nächsten Artikel erfahren Sie, wie Sie den Rsyslog-Client auf dem CentOS/RHEL 8-Server konfigurieren.