Opsæt en central logserver med Rsyslog i CentOS / RHEL 8


For at systemadministratorer kan genkende eller analysere problemer på en CentOS 8- eller RHEL 8-server, er det vigtigt at kende og se de hændelser, der opstod på serveren i en bestemt periode fra logfiler, der findes i /var/log biblioteket i systemet.

Syslog-systemet (System Logging Protocol) på serveren kan fungere som et centralt logovervågningspunkt over et netværk, hvor alle servere, netværksenheder, switche, routere og interne tjenester, der opretter logfiler, hvad enten de er knyttet til det særlige interne problem eller bare informative meddelelser kan sende deres logfiler.

På en CentOS/RHEL 8-server er Rsyslog-dæmonen den vigtigste log-server, der kommer forudinstalleret som standard efterfulgt af Systemd Journal Daemon (journald).

Rsyslog er et open source-værktøj, udviklet som en klient/server-arkitekturtjeneste og kan opnå begge roller uafhængigt. Det kan køre som en server og samle alle logfiler, der transmitteres af andre enheder via netværket, eller det kan køre som en klient ved at sende alle interne systemhændelser, der er logget til en ekstern Syslog-server.

  1. Installation af “CentOS 8.0 ″ med skærmbilleder
  2. Installation af RHEL 8 med skærmbilleder

For at oprette en central log-server på en CentOS/RHEL 8-server skal du kontrollere, om /var -partitionen har plads nok (et par GB minimum) til at gemme alle indspillede logfiler på systemet, der sendes af andre enheder på netværket. Jeg anbefaler dig at have et separat drev (LVM eller RAID) til at montere mappen /var/log/.

Sådan konfigureres Rsyslog Server i CentOS / RHEL 8

1. Som jeg sagde, installeres Rsyslog-tjenesten automatisk i CentOS/RHEL 8-serveren. For at kontrollere, at dæmonen kører i systemet, skal du køre følgende kommando.

# systemctl status rsyslog.service

Hvis tjenesten ikke kører som standard, skal du køre følgende kommando for at starte rsyslog-dæmonen.

# systemctl start rsyslog.service

2. Hvis hjælpeprogrammet Rsyslog ikke er installeret som standard på det system, som du planlægger at bruge som en central logningsserver, skal du køre følgende dnf-kommando for at installere rsyslog-pakken og starte dæmonen.

# dnf install rsyslog
# systemctl start rsyslog.service

3. Når først Rsyslog-værktøjet er installeret, kan du nu konfigurere rsyslog som en central logningsserver ved at åbne hovedkonfigurationsfilen /etc/rsyslog.conf for at modtage logbeskeder til eksterne klienter.

# vi /etc/rsyslog.conf

I /etc/rsyslog.conf-konfigurationsfilen skal du finde og fjerne kommentarer fra følgende linjer for at give UDP-transportmodtagelse til Rsyslog-serveren via 514-porten. Rsyslog bruger UDP-standardprotokollen til logtransmission.

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

4. UDP-protokollen har ikke TCP-omkostningerne, og det gør dataoverførsel hurtigere end TCP-protokollen. På den anden side garanterer UDP-protokollen ikke pålideligheden af transmitterede data.

Men hvis du vil bruge TCP-protokol til logmodtagelse, skal du finde og fjerne kommentarer fra følgende linjer i /etc/rsyslog.conf konfigurationsfilen for at konfigurere Rsyslog-dæmonen til at binde og lytte til et TCP-stik på 514-porten.

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

5. Opret nu en ny skabelon til modtagelse af fjernmeddelelser, da denne skabelon vil guide den lokale Rsyslog-server, hvor de modtagne meddelelser, der sendes af Syslog-netværksklienter, skal gemmes.

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

Direktivet RemoteLogs guider Rsyslog-dæmonen til at samle og skrive alle de transmitterede logmeddelelser til forskellige filer, baseret på klientnavnet og fjernklientapplikationen, der oprettede meddelelserne baseret på de skitserede egenskaber tilføjet i skabelonkonfigurationen : % HOSTNAME% og% PROGRAMNAME% .

Alle modtagne logfiler skrives til det lokale filsystem til en allokeret fil opkaldt efter klientmaskinens værtsnavn og opbevares i/var/log/bibliotek.

& ~ omdirigeringsreglen leder den lokale Rsyslog-server til at stoppe behandlingen af den modtagne logmeddelelse yderligere og fjerne meddelelserne (ikke skrive dem til interne logfiler).

RemoteLogs er et vilkårligt navn givet til denne skabelondirektiv. Du kan bruge det navn, du ønsker, der bedst passer til din skabelon.

For at konfigurere mere komplekse Rsyslog-skabeloner skal du læse Rsyslog-konfigurationsfilmanualen ved at køre man rsyslog.conf-kommandoen eller se Rsyslog online-dokumentation.

# man rsyslog.conf

6. Når du har foretaget ovenstående konfigurationsændringer, kan du genstarte Rsyslog-dæmonen for at anvende de seneste ændringer ved at køre følgende kommando.

# service rsyslog restart

7. Når du har genstartet Rsyslog-serveren, skal den nu fungere som en central log-server og registrere meddelelser fra Syslog-klienter. For at bekræfte Rsyslog-netværksstikkene skal du køre netstat-kommandoen og bruge grep-værktøjet til at filtrere rsyslog-strengen.

# netstat -tulpn | grep rsyslog 

Hvis netstat-kommandoen ikke er på CentOS 8, kan du installere den ved hjælp af følgende kommando.

# dnf whatprovides netstat
# dnf install net-tools

8. Hvis du har SELinux aktiv i CentOS/RHEL 8, skal du køre følgende kommando for at tillade rsyslog-trafik afhængigt af netværksstikstypen.

# 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 hjælp af følgende kommando.

# dnf whatprovides semanage
# dnf install policycoreutils-python-utils

9. Hvis du har en firewall aktiv på systemet, skal du køre følgende kommando for at tilføje de nødvendige regler for at tillade rsyslog-trafik på porte i Firewalld.

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

Du kan også begrænse indgående forbindelser på port 514 fra hvidlistede IP-intervaller 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 nu konfigureret som en centraliseringslogserver og kan indsamle logfiler fra fjernklienter. I den næste artikel vil vi se, hvordan du konfigurerer Rsyslog-klient på CentOS/RHEL 8-serveren.