So erstellen Sie einen zentralisierten Protokollserver mit Rsyslog in CentOS / RHEL 7

Damit der Systemadministrator ein Problem auf einem CentOS 7- oder RHEL 7-Serversystem identifizieren oder beheben kann, muss er die Ereignisse, die in einem bestimmten Zeitraum auf dem System aufgetreten sind, aus Protokolldateien kennen und anzeigen, die im System im Verzeichnis / var /log gespeichert sind.

Der Syslog-Server auf einem Linux-Computer kann als zentraler Überwachungspunkt über ein Netzwerk fungieren, an den alle Server, Netzwerkgeräte, Router, Switches und die meisten ihrer internen Dienste, die Protokolle generieren, unabhängig davon, ob sie sich auf ein bestimmtes internes Problem beziehen oder nur informative Nachrichten können ihre Protokolle senden.

Auf einem CentOS / RHEL 7-System ist der Rsyslog-Daemon der vorinstallierte Hauptprotokollserver, gefolgt vom Systemd Journal Daemon (journald).

Rsyslog Server ist als Client / Server-Architekturdienst aufgebaut und kann beide Rollen gleichzeitig erfüllen. Es kann als Server ausgeführt werden und alle Protokolle sammeln, die von anderen Geräten im Netzwerk übertragen werden, oder es kann als Client ausgeführt werden, indem alle internen Systemereignisse an einen Remote-Endpunkt-Syslog-Server gesendet werden.

Wenn rsyslog als Client konfiguriert ist, können die Protokolle lokal in Dateien auf dem lokalen Dateisystem gespeichert oder remote gesendet werden, anstatt sie in Dateien zu schreiben, die auf dem Computer gespeichert sind, oder Ereignisprotokolldateien lokal schreiben und gleichzeitig an einen entfernten Syslog-Server senden.

Der Syslog-Server führt jede Protokollnachricht nach folgendem Schema aus:

type (facility).priority (severity) destination(where to send the log)

A. Die Einrichtungs- oder Typdaten werden durch die internen Systemprozesse dargestellt, die die Nachrichten generieren. In Linux sind interne Prozesse (Einrichtungen), die Protokolle generieren, wie folgt standardisiert:

  • auth = Nachrichten, die durch Authentifizierungsprozesse generiert werden (Login).
  • cron= Nachrichten, die von geplanten Prozessen generiert werden (crontab).
  • daemon = von Daemons generierte Nachrichten (interne Dienste).
  • kernel = Nachrichten, die vom Linux-Kernel selbst generiert werden.
  • mail = Nachrichten, die von einem Mailserver generiert werden.
  • syslog = Meldungen, die vom rsyslog-Daemon selbst generiert werden.
  • lpr = Nachrichten, die von lokalen Druckern oder einem Druckserver generiert werden.
  • local0 – local7 = benutzerdefinierte Nachrichten, die von einem Administrator definiert werden (local7 wird normalerweise für Cisco oder Windows zugewiesen).

B. Die Prioritätsstufen (Schweregrad) sind ebenfalls standardisiert. Jede Priorität wird wie unten beschrieben mit einer Standardabkürzung und einer Nummer versehen. Die 7. Priorität ist die höhere Ebene von allen.

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

Spezielle Rsyslog-Schlüsselwörter:

  • * = alle Einrichtungen oder Prioritäten
  • keine = die Einrichtungen haben keine vorgegebenen Prioritäten zB: mail.none

C. Der dritte Teil für das Syslog-Schema wird durch die Direktive destination dargestellt. Der Rsyslog-Daemon kann Protokollnachrichten senden, die in eine Datei im lokalen Dateisystem geschrieben werden (meistens in eine Datei im Verzeichnis / var / log /) oder an einen anderen lokalen Prozess weitergeleitet oder an eine lokale Benutzerkonsole (an stdout) gesendet werden. oder senden Sie die Nachricht über das TCP / UDP-Protokoll an einen entfernten Syslog-Server oder verwerfen Sie die Nachricht sogar an / dev / null.

Um CentOS / RHEL 7 als zentralen Protokollserver zu konfigurieren, müssen wir zunächst überprüfen und sicherstellen, dass die /var-Partition, auf der alle Protokolldateien aufgezeichnet werden, groß genug ist (mindestens einige GB), um alle Protokolldateien speichern zu können, die von anderen Geräten gesendet werden. Es ist eine gute Entscheidung, ein separates Laufwerk (LVM, RAID) zu verwenden, um das Verzeichnis / var /log / einzuhängen.

Anforderungen

  1. CentOS 7.3 Installationsverfahren
  2. RHEL 7.3 Installationsverfahren

So konfigurieren Sie Rsyslog in CentOS/RHEL 7 Server

1. Standardmäßig wird der Rsyslog-Dienst automatisch installiert und sollte in CentOS / RHEL 7 ausgeführt werden. Geben Sie den folgenden Befehl mit Root-Rechten aus, um zu überprüfen, ob der Dämon im System gestartet wurde.

# systemctl status rsyslog.service
 Check Rsyslog Service
Check 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 rsyslog-Paket nicht auf dem System installiert ist, das Sie als zentralen Protokollierungsserver verwenden möchten, geben Sie den folgenden Befehl ein, um das rsyslog-Paket zu installieren.

# yum install rsyslog

3. Der erste Schritt, den wir auf dem System ausführen müssen, um den rsyslog-Daemon als zentralen Protokollserver zu konfigurieren, damit er Protokollnachrichten für externe Clients empfangen kann, besteht darin, die Hauptkonfigurationsdatei mit Ihrem bevorzugten Texteditor zu öffnen und zu bearbeiten von /etc / rsyslog.conf, wie im folgenden Auszug dargestellt.

# vi /etc/rsyslog.conf

Suchen und kommentieren Sie in der rsyslog-Hauptkonfigurationsdatei die folgenden Zeilen aus (entfernen Sie das Hashtag-Zeichen # am Zeilenanfang), um den UDP-Transportempfang zum Rsyslog-Server über den Port 514 bereitzustellen. UDP ist das Standardprotokoll für die Protokollübertragung von Rsyslog.

$ModLoad imudp $UDPServerRun 514
 Rsyslog-Server konfigurieren
Rsyslog-Server konfigurieren

4. Das UDP-Protokoll hat keinen TCP-Overhead, wodurch die Datenübertragung schneller ist als das TCP-Protokoll. Andererseits gewährleistet das UDP-Protokoll keine Zuverlässigkeit der übertragenen Daten.

Wenn Sie jedoch das TCP-Protokoll für den Protokollempfang verwenden müssen, müssen Sie die folgenden Zeilen in /etc/rsyslog suchen und auskommentieren.conf-Datei, um den Rsyslog-Daemon so zu konfigurieren, dass er einen TCP-Socket am 514-Port bindet und abhört. TCP- und UDP-Listening-Sockets für den Empfang können gleichzeitig auf einem Rsyslog-Server konfiguriert werden.

$ModLoad imtcp $InputTCPServerRun 514 

5. Schließen Sie die Datei im nächsten Schritt noch nicht, erstellen Sie eine neue Vorlage, die zum Empfangen von Remotenachrichten verwendet wird. Diese Vorlage weist den lokalen Rsyslog-Server an, wo die empfangenen Nachrichten gespeichert werden sollen, die von Syslog-Netzwerkclients gesendet werden. Die Vorlage muss vor dem Beginn des GLOBALEN DIREKTIVEN-Blocks hinzugefügt werden, wie im folgenden Auszug dargestellt.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" . ?RemoteLogs & ~
 Create Rsyslog Template
Create Rsyslog Template

Die obige Direktive $template RemoteLogs weist den Rsyslog-Daemon an, alle empfangenen Protokollnachrichten zu sammeln und in verschiedene Dateien zu schreiben, basierend auf dem Namen des Client-Computers und der Remote-Client-Einrichtung (Anwendung), die die Nachrichten basierend auf den in der Vorlagenkonfiguration definierten Eigenschaften generiert hat: %HOSTNAME% und %PROGRAMNAME%.

Alle diese Protokolldateien werden in das lokale Dateisystem in eine dedizierte Datei geschrieben, die nach dem Hostnamen des Client-Computers benannt und im Verzeichnis /var/log/ gespeichert wird.

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

Der RemoteLogs-Name ist ein beliebiger Name, der dieser Template-Direktive gegeben wird. Sie können den Namen verwenden, der für Ihre Vorlage am besten geeignet ist.

Um alle empfangenen Nachrichten von Clients in eine einzige Protokolldatei zu schreiben, die nach der IP-Adresse des Remote-Clients benannt ist, ohne die Einrichtung zu filtern, die die Nachricht generiert hat, verwenden Sie den folgenden Auszug.

$template FromIp,"/var/log/%FROMHOST-IP%.log" . ?FromIp & ~ 

Ein weiteres Beispiel für eine Vorlage, bei der alle Nachrichten mit auth Facility-Flag in einer Vorlage mit dem Namen „TmplAuth“ protokolliert werden.

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

Unten finden Sie einen Auszug aus einer Vorlagendefinition von Rsyslog 7 Server:

template(name="TmplMsg" type="string" string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log" )

Der obige Vorlagenauszug kann auch geschrieben werden als:

template(name="TmplMsg" type="list") { constant(value="/var/log/remote/msg/") property(name="hostname") constant(value="/") property(name="programname" SecurePath="replace") constant(value=".log") }

Um komplexe Rsyslog-Vorlagen zu schreiben, lesen Sie das Handbuch zur Rsyslog-Konfigurationsdatei, indem Sie man rsyslog ausgeben.conf-Befehl oder konsultieren Sie die Rsyslog-Online-Dokumentation.

6. Nachdem Sie die Rsyslog-Konfigurationsdatei wie oben beschrieben mit Ihren eigenen Einstellungen bearbeitet haben, starten Sie den Rsyslog-Daemon neu, um die Änderungen zu übernehmen, indem Sie den folgenden Befehl ausführen:

# service rsyslog restart

7. Inzwischen sollte Rsyslog Server so konfiguriert sein, dass er als zentraler Protokollserver fungiert und Nachrichten von Syslog-Clients aufzeichnet. Um Rsyslog-Netzwerk-Sockets zu überprüfen, führen Sie den Befehl netstat mit Root-Rechten aus und verwenden Sie grep, um die rsyslog-Zeichenfolge zu filtern.

# netstat -tulpn | grep rsyslog 
 Überprüfen Sie den Rsyslog-Netzwerksocket
Überprüfen Sie den Rsyslog-Netzwerksocket

8. Wenn Sie SELinux in CentOS / RHEL 7 aktiviert haben, geben Sie den folgenden Befehl aus, um SELinux so zu konfigurieren, dass rsyslog-Datenverkehr abhängig vom Netzwerk-Socket-Typ zulässig ist.

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

9. Wenn die Firewall aktiviert und aktiv ist, führen Sie den folgenden Befehl aus, um die erforderlichen Regeln zum Öffnen von rsyslog-Ports in Firewalld hinzuzufügen.

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

Das ist alles! Rsyslog ist jetzt im Servermodus konfiguriert und kann Protokolle von Remote-Clients zentralisieren. Im nächsten Artikel erfahren Sie, wie Sie den Rsyslog-Client auf dem CentOS / RHEL 7-Server konfigurieren.

Wenn Sie Rsyslog Server als zentralen Überwachungspunkt für Remote-Protokollmeldungen verwenden, können Sie Protokolldateien überprüfen und den Status des Clients beobachten oder Probleme des Clients leichter beheben, wenn Systeme abstürzen oder angegriffen werden.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht.