Notwendigkeit eines zentralisierten Rsyslog-Servers
Jedes *NIX-System verfügt über eine Art Protokollierungsfunktion, die Textprotokolle erstellt, die an einen beliebigen Ort auf einem Speichergerät geschrieben werden können (normalerweise standardmäßig auf eine lokale Festplattenpartition). Das ist zwar wichtig, kann aber auch zu folgenden Problemen führen:
- Sie benötigen ausreichend Speicherplatz auf dem lokalen Server, um die Protokolle zu speichern.
- Sie müssen eine Rotation einrichten, damit sie nicht zu groß werden.
- Wenn die Protokolle vertrauliche Informationen wie Kreditkartennummern enthalten, möchten Sie, dass sie an einem sicheren Ort gespeichert werden, vorzugsweise nicht auf dem lokalen Server.
- Sie können die Protokolle verlieren, wenn es auf dem Server zu einem Notfall kommt und die Daten nicht wiederhergestellt werden können.
Um all diese Probleme zu vermeiden, können wir einen zentralisierten Syslog-Server verwenden. Der zentralisierte Syslog-Server bietet Sicherheit, angemessenen Speicherplatz, zentralisierte Backup-Möglichkeiten usw.
Der Beitrag beschreibt die Schritte zum Konfigurieren von Rsyslog, um Protokolldateien sowohl über TCP als auch über UDP an einen Remote-Server zu senden.
Zentralisierten Rsyslog-Server konfigurieren
1. Bearbeiten Sie /etc/rsyslog.conf und kommentieren Sie die folgenden Zeilen aus:
Für TCP;
# vi /etc/rsyslog.conf $ModLoad imtcp $InputTCPServerRun 514
Für UDP;
# vi /etc/rsyslog.conf $ModLoad imudp $UDPServerRun 514Hinweis :Sie können sowohl den TCP- als auch den UDP-Modus verwenden, um Protokolle an den Remote-rsyslog-Server zu übertragen. Ich würde jedoch die Verwendung von UDP empfehlen, da dies für den Client-Server in Bezug auf die Leistung sehr einfach ist. Der einzige Nachteil bei der Verwendung von UDP ist, dass einige Protokollmeldungen verloren gehen können, wenn der Server zu beschäftigt ist, um die UDP-Pakete zu empfangen. Verwenden Sie TCP, wenn Ihre Protokolle kritisch sind; Andernfalls bleiben Sie bei UDP.
2. Speichern Sie die Datei und starten Sie den rsyslog-Dienst neu.
# service rsyslog restart ### CentOS/RHEL 6 # systemctl restart rsyslog ### CentOS/RHEL 7
Rsyslog-Client konfigurieren
1. Bearbeiten Sie /etc/rsyslog.conf auf dem Client-Server und fügen Sie die folgenden Zeilen hinzu. Wenn Sie Ihrem Remote-Host ein einzelnes @ voranstellen Symbol, verwenden Sie UDP. Um TCP zu verwenden, verwenden Sie @@ stattdessen.
Für UDP
# vi /etc/rsyslog.conf # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional #*.* @remote-host:514 *.* @x.x.x.x:514
Für TCP
# vi /etc/rsyslog.conf # remote host is: name/ip:port, e.g. 192.168.0.1:514, port optional #*.* @@remote-host:514 *.* @@x.x.x.x:514
Ersetzen Sie hier x.x.x.x durch Ihren zentralisierten rsyslog-Server. Wenn Sie keine Protokolle mit allen enthaltenen Schweregraden (*.*) senden möchten, können Sie die letzte Zeile mit etwas wie:
bearbeiten*.info @x.x.x.x:514
2. Speichern Sie die Datei und starten Sie den rsyslog-Dienst neu.
# service rsyslog restart ### CentOS/RHEL 6 # systemctl restart rsyslog ### CentOS/RHEL 7
Überprüfen der Konfiguration
Sie können den „Logger verwenden ” Befehl, um manuell eine Protokollnachricht zu generieren und zu sehen, ob der Remote-Syslog-Server sie korrekt empfängt.
Auf dem Client-Server:
# logger "Test message from the system `hostname`"
Auf dem zentralisierten rsyslog-Server:
# tail /var/log/messages June 15 12:32:01 geeklab root: Test message from the system geeklab
Rsyslog auf einem Nicht-Standard-Port ausführen
Wenn Sie rsyslog auf einem anderen Port als dem Standardport 514 ausführen möchten, müssen Sie zusätzliche Selinux-Änderungen vornehmen. So zeigen Sie die aktuellen SELinux-Porteinstellungen für rsyslog an:
# semanage port -l| grep syslog syslog_tls_port_t tcp 6514, 10514 syslog_tls_port_t udp 6514, 10514 syslogd_port_t tcp 601, 20514 syslogd_port_t udp 514, 601, 20514
Um einen UDP-Port 541 zu SELinux hinzuzufügen, verwenden Sie den Befehl:
# semanage port -a -t syslogd_port_t -p udp 541
Überprüfen Sie, ob der Port zu den SELinux-Einstellungen hinzugefügt wurde:
# semanage port -l| grep syslog syslog_tls_port_t tcp 6514, 10514 syslog_tls_port_t udp 6514, 10514 syslogd_port_t tcp 601, 20514 syslogd_port_t udp 541, 514, 601, 20514