Wéi Setup Central Logging Server mat Rsyslog op Linux


Logbicher sinn e kriteschen Bestanddeel vun all Software oder Betribssystem. Logbicher notéieren normalerweis d'Aktiounen vum Benotzer, Systemevenementer, Netzwierkaktivitéit a sou vill méi, jee no wat se geduecht sinn. Ee vun de meescht benotzte Logsystemer op Linux Systemer ass rsyslog.

Rsyslog ass e mächtege, sécheren an héich performante Logveraarbechtungssystem deen Daten aus verschiddenen Aarte vu Quellen (Systemer/Uwendungen) akzeptéiert an se a verschidde Formater ausgëtt.

Et huet sech vun engem reguläre Syslog Daemon zu engem voll ausgestatteten, Enterprise-Niveau Logging System entwéckelt. Et ass an engem Client/Server Modell entworf, dofir kann et als Client an/oder als zentrale Logging Server fir aner Serveren, Netzwierkapparater a Fernapplikatiounen konfiguréiert ginn.

Fir den Zweck vun dësem Guide benotze mir déi folgend Hosten:

  • Server: 192.168.241.140
  • Client: 172.31.21.58

Wéi installéieren a konfiguréieren Rsyslog Server

Déi meescht Linux Verdeelunge kommen mam rsyslog Package virinstalléiert. Am Fall wou et net installéiert ass, kënnt Dir et mat Ärem Linux Package Manager Tool installéieren wéi gewisen.

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

Wann rsyslog installéiert ass, musst Dir de Service fir elo starten, aktivéiert et automatesch beim Boot ze starten a kontrolléiert de Status mam Systemctl Kommando.

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

D'Haaptkonfiguratiounsdatei vun rsyslog ass op /etc/rsyslog.conf, déi Moduler lued, definéiert déi global Direktiven, enthält Regele fir d'Veraarbechtung vu Log-Messagen an et enthält och all Configuratiounsdateien an /etc/rsyslog.d/ fir verschidden Uwendungen/Servicer .

$ sudo vim /etc/rsyslog.conf

Par défaut benotzt rsyslog d'imjournal- an imusock-Module fir strukturéiert Log-Messagen aus Systemd-Journal z'importéieren a fir Syslog-Messagen vun Uwendungen, déi um lokalen System iwwer Unix-Sockets lafen, z'akzeptéieren.

Fir rsyslog als Netz-/Zentralprotokollserver ze konfiguréieren, musst Dir de Protokoll (entweder UDP oder TCP oder béid) setzen, deen et fir Remote Syslog Empfang benotzt wéi och den Hafen op deen et lauschtert.

Wann Dir eng UDP Verbindung wëllt benotzen, déi méi séier awer onzouverlässeg ass, sicht an decommentéiert d'Linnen hei drënner (ersetzt 514 duerch den Hafen op deem Dir wëllt lauschteren, dëst sollt mat der Portadress passen, op déi d'Clientë Messagen schécken, mir kucken op dëst méi wann Dir e rsyslog Client konfiguréiert).

$ModLoad imudp
$UDPServerRun 514

Fir TCP Verbindung ze benotzen (déi méi lues awer méi zouverlässeg ass), sicht an decommentéiert d'Linnen hei ënnen.

$ModLoad imtcp
$InputTCPServerRun 514

An dësem Fall wëlle mir souwuel UDP an TCP Verbindungen zur selwechter Zäit benotzen.

Als nächst musst Dir d'Regeleet fir d'Veraarbechtung vu Remote Logbicher am folgende Format definéieren.

facility.severity_level	destination (where to store log)

Wou:

  • Facilitéit: ass Typ vu Prozess/Applikatioun generéiert Message, si enthalen auth, cron, daemon, kernel, local0..local7. Mat * heescht all Ariichtungen.
  • Severity_level: ass Typ vu Log Message: emerg-0, alert-1, crit-2, err-3, warn-4, notice-5, info-6, debug-7. Wann Dir * benotzt, heescht all Schwieregkeetsniveauen a keng implizéiert kee Schwieregkeetsniveau.
  • Destinatioun: ass entweder lokal Datei oder Remote rsyslog Server (definéiert an der Form IP:port).

Mir benotze de folgende Regeleset fir Logbicher vun Remote Hosten ze sammelen, mat der RemoteLogs Schabloun. Bedenkt datt dës Reegele virun all Regele fir d'Veraarbechtung vun lokalen Messagen musse kommen, wéi am Screenshot gewisen.

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

Wann Dir de uewe genannte Reegeleet kuckt, ass déi éischt Regel \$template RemoteLogs,/var/log/%HOSTNAME%/%PROGRAMNAME%log.

D'Direktiv $Template seet dem rsyslog Daemon fir all déi erhéngte Fernmeldungen ze sammelen an ze schreiwen op verschidde Logbicher ënner /var/log, baséiert op dem Hostnumm (Client Machine Numm) an Remote Client Facility (Programm/Applikatioun) déi d'Messagen generéiert hunn wéi definéiert duerch d'Astellunge präsent an der Schabloun RemoteLogs.

Déi zweet Zeil \*.* ?RemoteLogs heescht Rekord Messagen vun all Ariichtungen op all Gravitéit Niveauen benotzt RemoteLogs Schabloun Konfiguratioun.

Déi lescht Zeil \& ~ instruéiert rsyslog fir d'Veraarbechtung vun de Messagen ze stoppen wann se an eng Datei geschriwwe sinn. Wann Dir net & ~ enthält, ginn d'Messagen amplaz op déi lokal Dateie geschriwwe ginn.

Et gi vill aner Templates déi Dir benotze kënnt, fir méi Informatioun, kuckt d'rsyslog Konfiguratioun Man Säit (man rsyslog.conf) oder kuckt op d'Rsyslog Online Dokumentatioun.

Dat ass et mat der Konfiguratioun vum rsyslog Server. Späichert an zou der Konfiguratiounsdatei. Fir déi rezent Ännerungen z'applizéieren, start rsyslog Daemon mat dem folgenden Kommando.

$ sudo systemctl restart rsyslog

Elo kontrolléiert d'rsyslog Netzwierk Sockets. Benotzt de ss Kommando (oder grep fir rsyslogd Verbindungen ze filteren.

$ sudo ss -tulnp | grep "rsyslog"

Als nächst, op CentOS 7, wann Dir SELinux aktivéiert hutt, lafen déi folgend Befehle fir rsyslog Traffic op Basis vum Netzwierk Socket Typ z'erméiglechen.

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

Wann de System Firewall aktivéiert huet, musst Dir den Hafen 514 opmaachen fir béid UDP/TCP Verbindungen op den rsyslog Server z'erméiglechen, andeems Dir lafen.

------------- 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 

Wéi konfiguréiert de Rsyslog Client fir Logbicher op Rsyslog Server ze schécken

Elo op de Client System, kontrolléiert ob de rsyslog Service leeft oder net mat dem folgenden Kommando.

$ sudo systemctl status rsyslog

Wann et net installéiert ass, installéiert et a start de Service wéi virdru gewisen.

$ 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

Wann de rsyslog Service op a leeft, öffnen d'Haaptkonfiguratiounsdatei wou Dir Ännerungen un der Standardkonfiguratioun ausféiert.

$ sudo vim /etc/rsyslog.conf

Fir den rsyslog-Daemon ze zwéngen als Log-Client ze handelen an all lokal generéiert Log-Messagen op den Fern-rsyslog-Server weiderzebréngen, füügt dës Forwarding-Regel un, um Enn vun der Datei, wéi am folgende Screenshot gewisen.

*. *  @@192.168.100.10:514

Déi uewe Regel schéckt Messagen vun all Ariichtungen an op all Schwieregkeetsniveauen. Fir Messagen vun enger spezifescher Ariichtung ze schécken, zum Beispill Auth, benotzt déi folgend Regel.

auth. *  @@192.168.100.10:514

Späichert d'Ännerungen a schléisst d'Konfiguratiounsdatei. Fir déi uewe genannten Astellungen z'applizéieren, start den rsyslog Daemon nei.

$ sudo systemctl restart rsyslog

Wéi Monitor Remote Logging um Rsyslog Server

De leschte Schrëtt ass fir z'iwwerpréiwen ob den rsyslog tatsächlech Messagen vum Client kritt a protokolléiert, ënner /var/log, an der Form Hostname/programname.log.

Fëllt e ls Kommando fir eng laang Oplëschtung vum Elterenlogverzeechnes a kontrolléiert ob et e Verzeechnes mam Numm ip-172.31.21.58 gëtt (oder wat och ëmmer den Hostnumm vun Ärem Client ass).

 
$ ls -l /var/log/

Wann de Verzeechnes existéiert, kontrolléiert d'Logdateien dobannen, andeems Dir lafen.

$ sudo ls -l /var/log/ip-172-31-21-58/

Rsyslog ass en High-Performance Log Veraarbechtungssystem, entworf an enger Client/Server Architektur. Mir hoffen, datt Dir fäeg sidd Rsyslog als zentrale/Netzwierkprotokollserver an als Client z'installéieren an ze konfiguréieren wéi an dësem Guide demonstréiert.

Dir wëllt och op relevant rsyslog Handbuch Säite fir méi Hëllef verweisen. Fillt eis gratis all Feedback ze ginn oder Froen ze stellen.