Sådan oprettes en central logserver med Rsyslog i CentOS/RHEL 7


For at systemadministrator kan identificere eller foretage fejlfinding af et problem på et CentOS 7- eller RHEL 7-serversystem, skal den kende og se de hændelser, der skete på systemet i en bestemt periode fra logfiler, der er gemt i systemet i/var/log-bibliotek.

Syslog-serveren på en Linux-maskine kan fungere som et centralt overvågningspunkt over et netværk, hvor alle servere, netværksenheder, routere, switche og de fleste af deres interne tjenester, der genererer logfiler, uanset om de er relateret til et specifikt internt problem eller bare informative meddelelser, kan sende deres logfiler .

På et CentOS/RHEL 7-system er Rsyslog-dæmonen den vigtigste logserver, der er forudinstalleret, efterfulgt af Systemd Journal Daemon (journald).

Rsyslog-server er bygget som en klient/server-arkitekturtjeneste og kan opnå begge roller samtidigt. Det kan køre som en server og samle alle logfiler, der transmitteres af andre enheder i netværket, eller det kan køre som en klient ved at sende alle interne systemhændelser, der er logget til en ekstern slutpunktsslogserver.

Når rsyslog er konfigureret som en klient, kan logfilerne gemmes lokalt i filer på det lokale filsystem eller kan sendes eksternt i stedet for at skrive dem i filer, der er gemt på maskinen eller skrive begivenhedslogfiler lokalt og sende dem til en ekstern syslog-server på den samme tid.

Syslog-serveren styrer enhver logmeddelelse ved hjælp af følgende skema:

type (facility).priority (severity)  destination(where to send the log)

A. Anlægs- eller typedataene er repræsenteret af de interne systemprocesser, der genererer meddelelserne. I Linux er interne processer (faciliteter), der genererer logfiler, standardiseret som følger:

  • auth = meddelelser genereret af godkendelsesprocesser (login).
  • cron = meddelelser genereret af planlagte processer (crontab).
  • daemon = meddelelser genereret af dæmoner (interne tjenester).
  • kerne = meddelelser genereret af selve Linux-kernen.
  • mail = meddelelser genereret af en mailserver.
  • syslog = meddelelser genereret af selve rsyslog-dæmonen.
  • lpr = meddelelser genereret af lokale printere eller en printerserver.
  • local0 - local7 = brugerdefinerede meddelelser defineret af en administrator (local7 tildeles normalt til Cisco eller Windows).

B. Prioritetsniveauerne (sværhedsgraden) er også standardiserede. Hver prioritet tildeles en standardforkortelse og et tal som beskrevet nedenfor. Den 7. prioritet er det højere niveau af alle.

  • Emer = Emergency - 0
  • alarm = Alarmer - 1
  • err = Fejl - 3
  • advarsel = Advarsler - 4
  • meddelelse = Underretning - 5
  • info = Information - 6
  • debug = debugging - 7

Specielle Rsyslog nøgleord:

  • * = alle faciliteter eller prioriteter
  • none = faciliteterne har ingen givne prioriteter F.eks .: mail.none

C. Den tredje del for syslog-skemaet er repræsenteret af destinationsdirektivet. Rsyslog-dæmonen kan sende logbeskeder, der skal skrives i en fil på det lokale filsystem (hovedsagelig i en fil i/var/log/bibliotek) eller til piping til en anden lokal proces eller sendes til en lokal brugerkonsol (til stdout) eller send beskeden til en ekstern syslog-server via TCP/UDP-protokol, eller kassér meddelelsen til/dev/null.

For at konfigurere CentOS/RHEL 7 som en central logserver skal vi først kontrollere og sikre, at/var-partitionen, hvor alle logfiler er optaget, er stor nok (et par GB minimum) for at kunne gemme alle logfiler, der sendes af andre enheder. Det er en god beslutning at bruge et separat drev (LVM, RAID) til at montere/var/log/biblioteket.

  1. CentOS 7.3 Installationsprocedure
  2. RHEL 7.3 Installationsprocedure

Sådan konfigureres Rsyslog i CentOS/RHEL 7 Server

1. Som standard installeres Rsyslog-tjenesten automatisk og skal køre i CentOS/RHEL 7. For at kontrollere, om dæmonen er startet i systemet, skal du udstede følgende kommando med root-rettigheder.

# systemctl status rsyslog.service

Hvis tjenesten ikke kører som standard, skal du udføre nedenstående kommando for at starte rsyslog-dæmonen.

# systemctl start rsyslog.service

2. Hvis rsyslog-pakken ikke er installeret på det system, som du vil bruge som en central logningsserver, skal du udstede følgende kommando for at installere rsyslog-pakken.

# yum install rsyslog

3. Det første trin, vi skal udføre på systemet for at konfigurere rsyslog-dæmonen som en central log-server, så den kan modtage logbeskeder til eksterne klienter, er at åbne og redigere ved hjælp af din foretrukne teksteditor, hovedkonfigurationen fil fra /etc/rsyslog.conf, som præsenteret i nedenstående uddrag.

# vi /etc/rsyslog.conf

I rsyslog-hovedkonfigurationsfilen skal du søge og fjerne kommentarer fra følgende linjer (fjern hashtagget # -tegnet ved linjens begyndelse) for at give UDP-transportmodtagelse til Rsyslog-server via 514-port. UDP er standardprotokollen, der bruges til logtransmission af Rsyslog.

$ModLoad imudp 
$UDPServerRun 514

4. UDP-protokollen har ikke TCP-omkostningerne, hvilket gør det hurtigere til transmission af data end TCP-protokollen. På den anden side sikrer UDP-protokol ikke pålideligheden af transmitterede data.

Men hvis du har brug for TCP-protokol til logmodtagelse, skal du søge og fjerne kommentarer fra følgende linjer fra /etc/rsyslog.conf-filen for at konfigurere Rsyslog-dæmonen til at binde og lytte til en TCP-stikket på 514-porten. TCP- og UDP-lyttestik til modtagelse kan konfigureres på en Rsyslog-server samtidigt.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. På det næste trin skal du ikke lukke filen endnu, opret en ny skabelon, der skal bruges til modtagelse af fjernbeskeder. Denne skabelon vil instruere den lokale Rsyslog-server, hvor de modtagne meddelelser skal sendes af syslog-netværksklienter. Skabelonen skal tilføjes inden begyndelsen af GLOBAL DIRECTIVES-blokken som illustreret i nedenstående uddrag.

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

Ovenstående $ -skabelon RemoteLogs-direktiv instruerer Rsyslog-dæmonen om at indsamle og skrive alle de modtagne logmeddelelser til forskellige filer, baseret på klientmaskinnavnet og fjernklientfaciliteten (applikation), der genererede meddelelserne baseret på de definerede egenskaber, der præsenteres i skabelonkonfigurationen :% HOSTNAME% og% PROGRAMNAME%.

Alle disse logfiler skrives til lokalt filsystem til en dedikeret fil opkaldt efter klientmaskinens værtsnavn og gemmes i/var/log/bibliotek.

& ~ Omdirigeringsreglen beder den lokale Rsyslog-server om at stoppe behandlingen af den modtagne logmeddelelse yderligere og kassere meddelelserne (ikke skrive dem til interne logfiler).

RemoteLogs-navnet er et vilkårligt navn, der er givet til denne skabelondirektiv. Du kan bruge det navn, du kan finde bedst egnet til din skabelon.

For at skrive alle modtagne meddelelser fra klienter i en enkelt logfil opkaldt efter IP-adressen til fjernklienten uden at filtrere den facilitet, der genererede meddelelsen, skal du bruge nedenstående uddrag.

$template FromIp,"/var/log/%FROMHOST-IP%.log" 
. ?FromIp & ~ 

Et andet eksempel på en skabelon, hvor alle meddelelser med godkendelsesflag logges til en skabelon med navnet “TmplAuth“.

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

Nedenfor er et uddrag fra en skabelondefinition fra Rsyslog 7-server:

template(name="TmplMsg" type="string"
         string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
        )

Ovenstående skabelonuddrag kan også skrives som:

template(name="TmplMsg" type="list") {
    constant(value="/var/log/remote/msg/")
    property(name="hostname")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

For at skrive komplekse Rsyslog-skabeloner, skal du læse Rsyslog-konfigurationsfilmanualen ved at udstede man rsyslog.conf-kommandoen eller se Rsyslog online-dokumentation.

6. Når du har redigeret Rsyslog-konfigurationsfilen med dine egne indstillinger som forklaret ovenfor, skal du genstarte Rsyslog-dæmonen for at anvende ændringer ved at udstede følgende kommando:

# service rsyslog restart

7. På nuværende tidspunkt skal Rsyslog-serveren være konfigureret til at fungere som en central log-server og registrere meddelelser fra syslog-klienter. For at bekræfte Rsyslog-netværkssockets skal du køre netstat-kommandoen med root-rettigheder og bruge grep til at filtrere rsyslog-streng.

# netstat -tulpn | grep rsyslog 

8. Hvis du har SELinux aktiveret i CentOS/RHEL 7, skal du udstede følgende kommando for at konfigurere SELinux til at tillade rsyslog-trafik afhængigt af netværksstiktypen.

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

9. Hvis firewallen er aktiveret og aktiv, skal du køre kommandoen nedenfor for at tilføje de nødvendige regler for åbning af rsyslog-porte i Firewalld.

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

Det er alt! Rsyslog er nu konfigureret i servertilstand og kan centralisere logfiler fra fjernklienter. I næste artikel vil vi se, hvordan du konfigurerer Rsyslog-klient på CentOS/RHEL 7-serveren.

Ved hjælp af Rsyslog-server som et centralt overvågningspunkt for eksterne logbeskeder kan du inspicere logfiler og observere klienters sundhedsstatus eller fejlretningsproblemer lettere, når systemer går ned eller er under en slags angreb.