Sett opp en sentralisert loggserver med Rsyslog i CentOS/RHEL 8


For at en systemadministrator skal gjenkjenne eller analysere problemer på en CentOS 8- eller RHEL 8-server, er det viktig å kjenne til og se hendelsene som skjedde på serveren i en bestemt tidsperiode fra loggfiler funnet i /var/log katalogen i systemet.

Syslog (System Logging Protocol)-systemet på serveren kan fungere som et sentralt loggovervåkingspunkt over et nettverk der alle servere, nettverksenheter, svitsjer, rutere og interne tjenester som opprette logger, enten knyttet til det bestemte interne problemet eller bare informative meldinger kan sende loggene sine.

På en CentOS/RHEL 8-server er Rsyslog-demonen den viktigste loggserveren som leveres forhåndsinstallert som standard, etterfulgt av Systemd Journal Daemon (journalført).

Rsyslog er et åpen kildekodeverktøy, utviklet som en klient-/serverarkitekturtjeneste og kan oppnå begge rollene uavhengig. Den kan kjøres som en server og samle alle logger som overføres av andre enheter over nettverket, eller den kan kjøres som en klient ved å sende alle interne systemhendelser som er logget til en ekstern Syslog-server.

Krav

  1. Installasjon av "CentOS 8.0" med skjermbilder
  2. Installasjon av RHEL 8 med skjermbilder

For å sette opp en sentralisert loggserver på en CentOS/RHEL 8-server, må du sjekke og bekrefte at /var-partisjonen har nok plass (minimum noen få GB ) for å lagre alle registrerte loggfiler på systemet som sendes av andre enheter på nettverket. Jeg anbefaler at du har en separat stasjon (LVM eller RAID) for å montere /var/log/-katalogen.

Hvordan konfigurere Rsyslog Server i CentOS/RHEL 8

1. Som jeg sa, Rsyslog-tjenesten er installert og kjører automatisk på CentOS/RHEL 8-serveren. For å verifisere at daemonen kjører i systemet, kjør følgende kommando.

systemctl status rsyslog.service

Hvis tjenesten ikke kjører som standard, kjør følgende kommando for å starte rsyslog daemon.

systemctl start rsyslog.service

2. Hvis Rsyslog-verktøyet ikke er installert som standard på systemet du planlegger å bruke som en sentralisert loggingsserver, kjør følgende dnf-kommando for å installere rsyslog-pakken og start demonen.


dnf install rsyslog
systemctl start rsyslog.service

3. Når Rsyslog-verktøyet er installert, kan du nå konfigurere rsyslog som en sentralisert loggingsserver ved å åpne hovedkonfigurasjonsfilen /etc/rsyslog.conf , for å motta loggmeldinger for eksterne klienter.

vi /etc/rsyslog.conf

I /etc/rsyslog.conf-konfigurasjonsfilen, finn og fjern kommentarene følgende linjer for å gi UDP-transportmottak til Rsyslog-serveren via 514-porten . Rsyslog bruker standard UDP-protokoll for loggoverføring.

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

4. UDP-protokollen har ikke TCP-overhead, og den gjør dataoverføring raskere enn TCP-protokollen. På den annen side garanterer ikke UDP-protokollen påliteligheten til overførte data.

Men hvis du ønsker å bruke TCP-protokollen for loggmottak, må du finne og fjerne kommentarene følgende linjer i /etc/rsyslog.conf konfigurasjonsfilen for å konfigurere Rsyslog daemon for å binde og lytte til en TCP-socket på 514-porten.

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

5. Lag nå en ny mal for mottak av eksterne meldinger, siden denne malen vil veilede den lokale Rsyslog-serveren hvor de mottatte meldingene som sendes av Syslog-nettverksklienter skal lagres.


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

$template RemoteLogs-direktivet veileder Rsyslog-demonen til å samle og skrive alle overførte loggmeldinger til distinkte filer, basert på klientnavnet og den eksterne klientapplikasjonen som opprettet meldingene basert på de skisserte egenskapene lagt til i malkonfigurasjon: %HOSTNAME% og %PROGRAMNAME%.

Alle mottatte loggfiler vil bli skrevet til det lokale filsystemet til en tildelt fil oppkalt etter klientmaskinens vertsnavn og lagret i katalogen /var/log/.

& ~ omdirigeringsregelen dirigerer den lokale Rsyslog-serveren til å slutte å behandle den mottatte loggmeldingen videre og fjerne meldingene (ikke skrive dem til interne loggfiler).

RemoteLogs er et vilkårlig navn gitt til dette maldirektivet. Du kan bruke hvilket navn du vil som passer best for malen din.

For å konfigurere mer komplekse Rsyslog-maler, les Rsyslog-konfigurasjonsfilhåndboken ved å kjøre kommandoen man rsyslog.conf eller se Rsyslog-dokumentasjonen på nett.

man rsyslog.conf

6. Etter å ha gjort konfigurasjonsendringene ovenfor, kan du starte Rsyslog-demonen på nytt for å bruke nylige endringer ved å kjøre følgende kommando.

service rsyslog restart

7. Når du har startet Rsyslog-serveren på nytt, skal den nå fungere som en sentralisert loggserver og registrere meldinger fra Syslog-klienter. For å bekrefte Rsyslog-nettverkskontaktene, kjør netstat-kommandoen og bruk grep-verktøyet til å filtrere rsyslog-strengen.

netstat -tulpn | grep rsyslog 

Hvis netstat-kommandoen ikke er installert på CentOS 8, kan du installere den ved å bruke følgende kommando.


dnf whatprovides netstat
dnf install net-tools

8. Hvis du har SELinux aktiv i CentOS/RHEL 8, kjør følgende kommando for å tillate rsyslog-trafikk avhengig av nettverkskontakttype.

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

Hvis semanage-kommandoen ikke installeres på CentOS 8, kan du installere den ved å bruke følgende kommando.


dnf whatprovides semanage
dnf install policycoreutils-python-utils

9. Hvis du har en brannmur aktiv på systemet, kjør følgende kommando for å legge til de nødvendige reglene for å tillate rsyslog-trafikk på porter i brannmuren.


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

Du kan også begrense innkommende tilkoblinger på port 514 fra hvitelistede IP-områder som vist.


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

Det er alt! Rsyslog er nå konfigurert som en sentraliseringsloggserver og kan samle inn logger fra eksterne klienter. I den neste artikkelen vil vi se hvordan du konfigurerer Rsyslog-klienten på CentOS/RHEL 8-serveren.