Zoeken op website

Stel een gecentraliseerde logserver in met Rsyslog in CentOS/RHEL 8


Om ervoor te zorgen dat systeembeheerders problemen op een CentOS 8- of RHEL 8-server kunnen herkennen of analyseren, is het belangrijk om de gebeurtenissen die op de server hebben plaatsgevonden te kennen en te bekijken in een bepaalde tijdsperiode uit logbestanden gevonden in /var/log de map in het systeem.

Het Syslog (System Logging Protocol) systeem op de server kan fungeren als een centraal logbewakingspunt over een netwerk waar alle servers, netwerkapparaten, switches, routers en interne services die logbestanden maken, ongeacht of deze verband houden met het specifieke interne probleem of alleen informatieve berichten kunnen hun logbestanden verzenden.

Op een CentOS/RHEL 8-server is de Rsyslog-daemon de belangrijkste logserver die standaard vooraf is geïnstalleerd, gevolgd door Systemd Journal Daemon (< sterk>journaal).

Rsyslog is een open-source hulpprogramma, ontwikkeld als een client/server-architectuurservice en kan beide rollen onafhankelijk vervullen. Het kan als server draaien en alle logbestanden verzamelen die door andere apparaten via het netwerk worden verzonden, of het kan als client draaien door alle interne systeemgebeurtenissen naar een externe Syslog-server te sturen.

Vereisten

  1. Installatie van “CentOS 8.0″ met screenshots
  2. Installatie van RHEL 8 met screenshots

Om een gecentraliseerde logserver op een CentOS/RHEL 8-server in te stellen, moet u controleren en bevestigen dat de /var-partitie voldoende ruimte heeft (minimaal een paar GB ) om alle opgenomen logbestanden op het systeem op te slaan die door andere apparaten in het netwerk worden verzonden. Ik raad u aan een aparte schijf (LVM of RAID) te hebben om de map /var/log/ te mounten.

Hoe Rsyslog-server te configureren in CentOS/RHEL 8

1. Zoals ik al zei, wordt de Rsyslog-service automatisch geïnstalleerd en uitgevoerd op de CentOS/RHEL 8-server. Om te controleren of de daemon in het systeem actief is, voert u de volgende opdracht uit.

systemctl status rsyslog.service

Als de service niet standaard actief is, voert u de volgende opdracht uit om de rsyslog daemon te starten.

systemctl start rsyslog.service

2. Als het hulpprogramma Rsyslog niet standaard is geïnstalleerd op het systeem dat u als gecentraliseerde logserver wilt gebruiken, voert u de volgende dnf-opdracht uit om het rsyslog-pakket te installeren en start de daemon.


dnf install rsyslog
systemctl start rsyslog.service

3. Nadat het hulpprogramma Rsyslog is geïnstalleerd, kunt u rsyslog nu configureren als een gecentraliseerde logserver door het hoofdconfiguratiebestand /etc/rsyslog.conf te openen , om logberichten voor externe clients te ontvangen.

vi /etc/rsyslog.conf

Zoek in het /etc/rsyslog.conf configuratiebestand de volgende regels en verwijder de commentaar om UDP-transportontvangst naar de Rsyslog-server toe te staan via de 514-poort . Rsyslog gebruikt het standaard UDP protocol voor logverzending.

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

4. Het UDP-protocol heeft geen TCP overhead en maakt de gegevensoverdracht sneller dan het TCP-protocol. Aan de andere kant garandeert het UDP-protocol de betrouwbaarheid van de verzonden gegevens niet.

Als u echter het TCP-protocol wilt gebruiken voor log-ontvangst, moet u de volgende regels in /etc/rsyslog.conf het configuratiebestand zoeken en verwijderen om Rsyslog te configureren daemon om een TCP-socket op de 514-poort te binden en ernaar te luisteren.

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

5. Maak nu een nieuwe sjabloon voor het ontvangen van externe berichten, aangezien deze sjabloon de lokale Rsyslog-server zal begeleiden, waar de ontvangen berichten moeten worden opgeslagen die door Syslog-netwerkclients zijn verzonden.


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

De $template RemoteLogs richtlijn begeleidt de Rsyslog-daemon bij het verzamelen en schrijven van alle verzonden logberichten naar afzonderlijke bestanden, gebaseerd op de clientnaam en de externe clienttoepassing die de berichten heeft gemaakt op basis van de geschetste eigenschappen die zijn toegevoegd in de sjabloonconfiguratie: %HOSTNAME% en %PROGRAMNAME%.

Alle ontvangen logbestanden worden naar het lokale bestandssysteem geschreven naar een toegewezen bestand met de naam van de hostnaam van de clientcomputer en bewaard in de map /var/log/.

De & ~ omleidingsregel zorgt ervoor dat de lokale Rsyslog-server stopt met het verder verwerken van het ontvangen logbericht en de berichten verwijdert (niet naar interne logbestanden schrijft).

De RemoteLogs is een willekeurige naam die aan deze sjabloonrichtlijn wordt gegeven. U kunt elke gewenste naam gebruiken die het beste bij uw sjabloon past.

Om complexere Rsyslog-sjablonen te configureren, leest u de handleiding van het Rsyslog-configuratiebestand door de opdracht man rsyslog.conf uit te voeren of raadpleegt u de online documentatie van Rsyslog.

man rsyslog.conf

6. Nadat u de bovenstaande configuratiewijzigingen heeft aangebracht, kunt u de Rsyslog-daemon opnieuw opstarten om recente wijzigingen toe te passen door de volgende opdracht uit te voeren.

service rsyslog restart

7. Nadat u de Rsyslog-server opnieuw heeft opgestart, zou deze nu moeten fungeren als een gecentraliseerde logserver en berichten van Syslog-clients moeten opnemen. Om de Rsyslog-netwerksockets te bevestigen, voert u de opdracht netstat uit en gebruikt u het grep-hulpprogramma om de rsyslog-reeks te filteren.

netstat -tulpn | grep rsyslog 

Als netstat command niet wordt geïnstalleerd op CentOS 8, kunt u het installeren met de volgende opdracht.


dnf whatprovides netstat
dnf install net-tools

8. Als je SELinux actief hebt in CentOS/RHEL 8, voer dan de volgende opdracht uit om rsyslog-verkeer toe te staan, afhankelijk van het type netwerksocket.

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

Als semanage command niet op CentOS 8 wordt geïnstalleerd, kunt u het installeren met behulp van de volgende opdracht.


dnf whatprovides semanage
dnf install policycoreutils-python-utils

9. Als er een firewall actief is op het systeem, voer dan de volgende opdracht uit om de benodigde regels toe te voegen voor het toestaan van rsyslog-verkeer op poorten in Firewalld.


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

U kunt ook inkomende verbindingen op poort 514 beperken vanuit IP-bereiken op de witte lijst, zoals weergegeven.


firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="udp" accept'
firewall-cmd --reload

Dat is alles! Rsyslog is nu geconfigureerd als een gecentraliseerde logserver en kan logs verzamelen van externe clients. In het volgende artikel zullen we zien hoe u de Rsyslog-client op de CentOS/RHEL 8-server kunt configureren.