Zoeken op website

Hoe u een centrale logserver instelt met Rsyslog in Linux


Logboeken zijn een cruciaal onderdeel van elke software of besturingssysteem. Logboeken registreren doorgaans de acties van gebruikers, systeemgebeurtenissen, netwerkactiviteit en nog veel meer, afhankelijk van waarvoor ze bedoeld zijn. Een van de meest gebruikte logsystemen op Linux-systemen is rsyslog.

Rsyslog is een krachtig, veilig en krachtig logverwerkingssysteem dat gegevens van verschillende soorten bronnen (systemen/applicaties) accepteert en deze in meerdere formaten uitvoert.

Het is geëvolueerd van een gewone syslog-daemon naar een volledig uitgerust logsysteem op bedrijfsniveau. Het is ontworpen in een client/server-model en kan daarom worden geconfigureerd als client en/of als centrale logserver voor andere servers, netwerkapparaten en externe toepassingen.

Omgeving testen

Voor het doel van deze handleiding gebruiken we de volgende hosts:

  • Server: 192.168.241.140
  • Klant: 172.31.21.58

Hoe Rsyslog-server te installeren en configureren

Bij de meeste Linux-distributies is het rsyslog-pakket vooraf geïnstalleerd. Als het niet is geïnstalleerd, kunt u het installeren met behulp van uw Linux-pakketbeheertool, zoals weergegeven.

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

Zodra rsyslog is geïnstalleerd, moet u de service voorlopig starten, deze automatisch starten bij het opstarten inschakelen en de status ervan controleren met de opdracht systemctl.

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

Het belangrijkste rsyslog-configuratiebestand bevindt zich op /etc/rsyslog.conf, dat modules laadt, de globale richtlijnen definieert, regels bevat voor het verwerken van logberichten en het bevat ook alle configuratiebestanden in /etc /rsyslog.d/ voor verschillende applicaties/services.

sudo vim /etc/rsyslog.conf

Standaard gebruikt rsyslog de modules imjournal en imusock voor het importeren van gestructureerde logberichten uit systemd journal en voor het accepteren van syslog berichten van applicaties die respectievelijk op het lokale systeem draaien via Unix-sockets.

Om rsyslog te configureren als een netwerk/centrale logserver, moet u het protocol instellen (UDP of TCP of beide) dat het zal gebruiken voor externe syslog-ontvangst, evenals de poort waarop het luistert.

Als je een UDP-verbinding wilt gebruiken, die sneller maar onbetrouwbaar is, zoek dan de onderstaande regels op en verwijder de opmerkingen (vervang 514 door de poort waarop je wilt luisteren. Dit zou moeten overeenkomen met het poortadres waar de clients berichten naartoe sturen, we zullen hier meer naar kijken bij het configureren van een rsyslog-client).

$ModLoad imudp
$UDPServerRun 514

Om de TCP-verbinding te gebruiken (die langzamer maar betrouwbaarder is), doorzoekt u de onderstaande regels en verwijdert u de opmerkingen.

$ModLoad imtcp
$InputTCPServerRun 514

In dit geval willen we zowel UDP- als TCP-verbindingen tegelijkertijd gebruiken.

Vervolgens moet u de regelset definiëren voor het verwerken van externe logbestanden in de volgende indeling.

facility.severity_level	destination (where to store log)

Waar :

  • faciliteit: is een type bericht dat een proces/applicatie genereert, waaronder auth, cron, daemon, kernel, local0..local7. Met * worden alle faciliteiten bedoeld.
  • severity_level: is het type logbericht: Emerg-0, Alert-1, Crit-2, Err-3, Warning-4, Notice-5, Info-6, Debug-7. Het gebruik van * betekent alle ernstniveaus en geen betekent dat er geen ernstniveau is.
  • bestemming: is een lokaal bestand of een externe rsyslog-server (gedefinieerd in de vorm IP:poort).

We zullen de volgende regelset gebruiken voor het verzamelen van logs van externe hosts, met behulp van de RemoteLogs-sjabloon. Houd er rekening mee dat deze regels vóór alle regels voor het verwerken van lokale berichten moeten komen, zoals weergegeven in de schermafbeelding.

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

Als we naar de bovenstaande regelset kijken, is de eerste regel “$template RemoteLogs,”/var/log/%HOSTNAME%/%PROGRAMNAME%.log” ”.

De richtlijn $template vertelt de rsyslog-daemon om alle ontvangen externe berichten te verzamelen en naar verschillende logs onder /var/log te schrijven, gebaseerd op de hostnaam (clientmachinenaam) en externe clientfaciliteit (programma/applicatie) die de berichten genereerde zoals gedefinieerd door de instellingen in de sjabloon RemoteLogs.

De tweede regel “*.* ?RemoteLogs ” betekent dat berichten van alle faciliteiten op alle ernstniveaus zijn opgenomen met behulp van de RemoteLogs sjabloonconfiguratie.

De laatste regel “& ~ ” instrueert rsyslog om te stoppen met het verwerken van de berichten zodra deze naar een bestand zijn geschreven. Als u “& ~” niet opgeeft, worden berichten in plaats daarvan naar de lokale bestanden geschreven.

Er zijn veel andere sjablonen die u kunt gebruiken. Voor meer informatie kunt u de manpagina van de rsyslog-configuratie raadplegen (man rsyslog.conf) of de online documentatie van Rsyslog raadplegen.

Dat is alles met het configureren van de rsyslog-server. Sla het configuratiebestand op en sluit het. Om de recente wijzigingen toe te passen, start u de rsyslog-daemon opnieuw op met de volgende opdracht.

sudo systemctl restart rsyslog

Controleer nu de rsyslog-netwerksockets. Gebruik de opdracht ss (of netstat met dezelfde vlaggen) en stuur de uitvoer naar grep om rsyslogd-verbindingen eruit te filteren.

sudo ss -tulnp | grep "rsyslog"

Vervolgens voer je op CentOS 7, als je SELinux hebt ingeschakeld, de volgende opdrachten uit om rsyslog-verkeer toe te staan op basis van het type netwerksocket.

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

Als op het systeem de firewall is ingeschakeld, moet u poort 514 openen om beide UDP/TCP-verbindingen met de rsyslog-server toe te staan, door deze uit te voeren.

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

Hoe Rsyslog Client te configureren om logboeken naar Rsyslog Server te verzenden

Controleer nu op het clientsysteem of de rsyslog-service actief is of niet met de volgende opdracht.

sudo systemctl status rsyslog

Als het niet is geïnstalleerd, installeer het dan en start de service zoals eerder weergegeven.

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

Zodra de rsyslog-service actief is, opent u het hoofdconfiguratiebestand waarin u wijzigingen in de standaardconfiguratie gaat aanbrengen.

sudo vim /etc/rsyslog.conf

Om de rsyslog-daemon te dwingen als logclient te fungeren en alle lokaal gegenereerde logberichten door te sturen naar de externe rsyslog-server, voegt u deze doorstuurregel toe aan het einde van het bestand, zoals weergegeven in de volgende schermafbeelding.

*. *  @@192.168.100.10:514

De bovenstaande regel verzendt berichten vanuit alle faciliteiten en op alle ernstniveaus. Als u berichten wilt verzenden vanuit een specifieke faciliteit, bijvoorbeeld auth, gebruikt u de volgende regel.

auth. *  @@192.168.100.10:514

Sla de wijzigingen op en sluit het configuratiebestand. Om de bovenstaande instellingen toe te passen, start u de rsyslog-daemon opnieuw op.

sudo systemctl restart rsyslog

Hoe u extern loggen op de Rsyslog-server kunt controleren

De laatste stap is het verifiëren of de rsyslog daadwerkelijk berichten van de client ontvangt en registreert, onder /var/log, in de vorm hostnaam/programmanaam.log.

Voer een ls-opdracht uit voor een lange lijst van de bovenliggende logmap en controleer of er een map is met de naam ip-172.31.21.58 (of wat de hostnaam van uw clientcomputer ook is).

 
ls -l /var/log/

Als de map bestaat, controleer dan de logbestanden daarin door deze uit te voeren.

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

Samenvatting

Rsyslog is een krachtig logverwerkingssysteem, ontworpen in een client/server-architectuur. We hopen dat u Rsyslog kunt installeren en configureren als centrale/netwerklogserver en als client, zoals gedemonstreerd in deze handleiding.

Mogelijk wilt u ook de relevante rsyslog-handleidingen raadplegen voor meer hulp. Geef ons gerust feedback of stel vragen.