So richten Sie den zentralen Protokollierungsserver mit Rsyslog unter Linux ein

Protokolle sind eine wichtige Komponente jeder Software oder jedes Betriebssystems. Protokolle zeichnen normalerweise Benutzeraktionen, Systemereignisse, Netzwerkaktivitäten und vieles mehr auf, je nachdem, wofür sie bestimmt sind. Eines der am häufigsten verwendeten Protokollierungssysteme auf Linux-Systemen ist rsyslog.

Rsyslog ist ein leistungsstarkes, sicheres und leistungsstarkes Protokollverarbeitungssystem, das Daten aus verschiedenen Quelltypen (Systeme / Anwendungen) akzeptiert und in mehreren Formaten ausgibt.

Es hat sich aus einem regulären entwickelt Syslog Daemon für ein voll funktionsfähiges Protokollierungssystem auf Unternehmensebene. Es ist in einem Client / Server-Modell konzipiert und kann daher als Client und / oder als zentraler Protokollierungsserver für andere Server, Netzwerkgeräte und Remoteanwendungen konfiguriert werden.

Testumgebung

Für den Zweck dieses Handbuchs verwenden wir die folgenden Hosts:

  • Server: 192.168.241.140
  • Klient: 172,31,21,58

So installieren und konfigurieren Sie Rsyslog Server

Die meisten Linux-Distributionen werden mit dem geliefert rsyslog Paket vorinstalliert. Falls es nicht installiert ist, können Sie es wie gezeigt mit Ihrem Linux-Paketmanager-Tool installieren.

$ sudo yum update && yum install rsyslog   #CentOS 7
$ sudo apt update && apt install rsyslog    #Ubuntu 16.04, 18.04


Einmal rsyslog installiert, müssen Sie den Dienst vorerst starten, ihn beim Booten automatisch starten lassen und seinen Status mit dem Befehl systemctl überprüfen.

$ sudo systemctl start rsyslog
$ sudo systemctl enable rsyslog
$ sudo systemctl status rsyslog

Die Hauptkonfigurationsdatei von rsyslog befindet sich unter /etc/rsyslog.conf, das Module lädt, die globalen Anweisungen definiert, Regeln für die Verarbeitung von Protokollnachrichten enthält und alle Konfigurationsdateien enthält /etc/rsyslog.d/ für verschiedene Anwendungen / Dienste.

$ sudo vim /etc/rsyslog.conf

Standardmäßig, rsyslog verwendet die imjournal und imusock Module zum Importieren strukturierter Protokollnachrichten aus systemd journal und zum Akzeptieren von Syslog-Nachrichten von Anwendungen, die auf dem lokalen System über Unix-Sockets ausgeführt werden.

Rsyslog-Module für die Protokollierung
Rsyslog-Module für die Protokollierung

Um rsyslog als Netzwerk- / zentralen Protokollierungsserver zu konfigurieren, müssen Sie das Protokoll festlegen (entweder UDP oder TCP oder beides) wird für den Remote-Syslog-Empfang sowie für den Port verwendet, den es überwacht.

Wenn Sie eine verwenden möchten UDP Verbindung, die schneller, aber unzuverlässig ist, suchen und kommentieren Sie die folgenden Zeilen (ersetzen 514 Mit dem Port, den es abhören soll, sollte dies mit der Portadresse übereinstimmen, an die die Clients Nachrichten senden. Wir werden dies bei der Konfiguration eines rsyslog-Clients genauer untersuchen.

$ModLoad imudp
$UDPServerRun 514

Benutzen TCP Verbindung (die langsamer, aber zuverlässiger ist), suchen und kommentieren Sie die folgenden Zeilen.

$ModLoad imtcp
$InputTCPServerRun 514

In diesem Fall möchten wir gleichzeitig UDP- und TCP-Verbindungen verwenden.

Konfigurieren Sie den Rsyslog-Protokollierungsserver
Konfigurieren Sie den Rsyslog-Protokollierungsserver

Als nächstes müssen Sie die definieren Regelsatz zum Verarbeiten von Remote-Protokollen im folgenden Format.

facility.severity_level    destination (where to store log)

Wo:

  • Einrichtung: ist die Art der prozess- / anwendungsgenerierenden Nachricht. Dazu gehören auth, cron, daemon, kernel, local0..local7. Verwenden von * bedeutet alle Einrichtungen.
  • Schweregrad: ist der Typ der Protokollnachricht: emerg-0, alert-1, krit-2, err-3, warn-4, Notice-5, info-6, debug-7. Verwenden von * bedeutet alle Schweregrade und keiner impliziert keinen Schweregrad.
  • Ziel: ist entweder eine lokale Datei oder ein entfernter rsyslog-Server (definiert in der Form IP: port).

Wir werden Folgendes verwenden Regelsatz Zum Sammeln von Protokollen von Remote-Hosts verwenden Sie die RemoteLogs Vorlage. Beachten Sie, dass diese Regeln vor allen Regeln für die Verarbeitung lokaler Nachrichten stehen müssen, wie im Screenshot gezeigt.

$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log"
*.* ?RemoteLogs 
& ~
Definieren Sie den Regelsatz für die Rsyslog-Protokollierung
Definieren Sie den Regelsatz für die Rsyslog-Protokollierung

Betrachtet man das Obige Regelsatzist die erste Regel “$ Template RemoteLogs”, / var / log /% HOSTNAME% /% PROGRAMNAME% .log “”.

Die Richtlinie $ template Weist den rsyslog-Daemon an, alle empfangenen Remote-Nachrichten zu sammeln und in verschiedene Protokolle unter zu schreiben / Var / log, basierend auf Hostname (Client-Computername) und Remote-Client-Funktion (Programm / Anwendung), die die Nachrichten gemäß den Einstellungen in der Vorlage generiert hat RemoteLogs.

Die zweite Zeile “*. *? RemoteLogs” bedeutet, dass Nachrichten von allen Einrichtungen mit allen Schweregraden mithilfe von aufgezeichnet werden RemoteLogs Vorlagenkonfiguration.

Die letzte Zeile “& ~” weist rsyslog an, die Verarbeitung der Nachrichten zu beenden, sobald sie in eine Datei geschrieben wurden. Wenn Sie nicht einschließen “& ~”Stattdessen werden Nachrichten in die lokalen Dateien geschrieben.

Es gibt viele andere Vorlagen, die Sie verwenden können. Weitere Informationen finden Sie in der Manpage zur rsyslog-Konfiguration (man rsyslog.conf) oder beziehen Sie sich auf die Rsyslog Online-Dokumentation.

Das war’s mit der Konfiguration des rsyslog-Servers. Speichern und schließen Sie die Konfigurationsdatei. Starten Sie den rsyslog-Daemon mit dem folgenden Befehl neu, um die letzten Änderungen zu übernehmen.

$ sudo systemctl restart rsyslog

Überprüfen Sie nun die rsyslog-Netzwerksockets. Verwenden Sie die ss Befehl (oder netstat mit denselben Flags) Befehl und leiten Sie die Ausgabe an grep weiter, um rsyslogd-Verbindungen herauszufiltern.

$ sudo ss -tulnp | grep "rsyslog"
Überprüfen Sie den Rsyslog-Netzwerkstatus
Überprüfen Sie den Rsyslog-Netzwerkstatus

Als nächstes weiter CentOS 7, Wenn Sie haben SELinux Wenn aktiviert, führen Sie die folgenden Befehle aus, um den Rsyslog-Verkehr basierend auf dem Netzwerk-Socket-Typ zuzulassen.

$ sudo semanage -a -t syslogd_port_t -p udp 514
$ sudo semanage -a -t syslogd_port_t -p tcp 514 

Wenn auf dem System die Firewall aktiviert ist, müssen Sie den Port öffnen 514 beides zulassen UDP / TCP Verbindungen zum rsyslog-Server durch Ausführen.

------------- On CentOS ------------- 
$ sudo firewall-cmd --permanent --add-port=514/udp
$ sudo firewall-cmd --permanent --add-port=514/tcp
$ sudo firewall-cmd --reload

------------- On Ubuntu -------------
$ sudo ufw allow 514/udp
$ sudo ufw allow 514/tcp
$ sudo ufw reload 

So konfigurieren Sie den Rsyslog-Client zum Senden von Protokollen an den Rsyslog-Server

Überprüfen Sie nun auf dem Client-System mit dem folgenden Befehl, ob der rsyslog-Dienst ausgeführt wird oder nicht.

$ sudo systemctl status rsyslog

Wenn es nicht installiert ist, installieren Sie es und starten Sie den Dienst wie oben gezeigt.

$ sudo yum update && yum install rsyslog   #CentOS 7
$ sudo apt update && apt install rsyslog    #Ubuntu 16.04, 18.04
$ sudo systemctl start rsyslog
$ sudo systemctl enable rsyslog
$ sudo systemctl status rsyslog

Sobald der rsyslog-Dienst ausgeführt wird, öffnen Sie die Hauptkonfigurationsdatei, in der Sie Änderungen an der Standardkonfiguration vornehmen.

$ sudo vim /etc/rsyslog.conf

Fügen Sie diese Weiterleitungsregel am Ende der Datei hinzu, um den rsyslog-Dämon zu zwingen, als Protokollclient zu fungieren und alle lokal generierten Protokollnachrichten an den Remote-rsyslog-Server weiterzuleiten (siehe folgenden Screenshot).

*. *  @@192.168.100.10:514
Konfigurieren Sie den Rsyslog-Client
Konfigurieren Sie den Rsyslog-Client

Die obige Regel sendet Nachrichten von allen Einrichtungen und mit allen Schweregraden. Zum Beispiel zum Senden von Nachrichten von einer bestimmten Einrichtung authVerwenden Sie die folgende Regel.

auth. *  @@192.168.100.10:514

Speichern Sie die Änderungen und schließen Sie die Konfigurationsdatei. Starten Sie den rsyslog-Daemon neu, um die obigen Einstellungen zu übernehmen.

$ sudo systemctl restart rsyslog

Überwachen der Remote-Protokollierung auf dem Rsyslog-Server

Der letzte Schritt besteht darin, zu überprüfen, ob das rsyslog tatsächlich Nachrichten vom Client empfängt und protokolliert / Var / log, in der Form Hostname / Programmname.log.

Führen Sie einen ls-Befehl aus, um das übergeordnete Protokollverzeichnis lange aufzulisten, und überprüfen Sie, ob ein Verzeichnis mit dem Namen vorhanden ist ip-172.31.21.58 (oder wie auch immer der Hostname Ihres Client-Computers lautet).

 
$ ls -l /var/log/
Überprüfen Sie die Rsyslog-Client-Protokollierung
Überprüfen Sie die Rsyslog-Client-Protokollierung

Wenn das Verzeichnis vorhanden ist, überprüfen Sie die darin enthaltenen Protokolldateien, indem Sie ausführen.

$ sudo ls -l /var/log/ip-172-31-21-58/
Überprüfen Sie die Rsyslog-Client-Protokolle
Überprüfen Sie die Rsyslog-Client-Protokolle
Zusammenfassung

Rsyslog ist ein leistungsstarkes Protokollverarbeitungssystem, das in einer Client / Server-Architektur entwickelt wurde. Wir hoffen, dass Sie installieren und konfigurieren können Rsyslog als zentraler / Netzwerk-Protokollierungsserver und als Client, wie in diesem Handbuch gezeigt.

Weitere Hilfe finden Sie auch in den entsprechenden rsyslog-Handbuchseiten. Sie können uns gerne Feedback geben oder Fragen stellen.

Similar Posts

Leave a Reply

Your email address will not be published. Required fields are marked *