Installer en centraliseret logserver med Rsyslog i Debian 9

I Linux er logfilerne filer, der indeholder meddelelser om systemfunktionerne, som systemadministratorer bruger til at identificere eventuelle problemer på maskinerne. Logfilerne hjælper administratorer med at visualisere de hændelser, der skete i systemet over tidsperioder. Normalt holdes alle logfiler under /var/log bibliotek i Linux. På denne placering er der flere typer logfiler til opbevaring af forskellige meddelelser, som f.eks. En logfil til optagelse af systemhændelser, en logfil for sikkerhedsrelaterede meddelelser, andre logfiler dedikeret til kerne-, brugere- eller cron-job. Hovedformålet med logfiler er at fejle systemproblemer. De fleste logfiler i Linux styres af rsyslogd service. På nyere udgivelser af Linux-distributioner styres og styres logfilerne også af journalsystemtjenesten, som er en del af systemd-initialiseringsprogrammet. Loggene gemt af journal daemon er skrevet i et binært format og er hovedsageligt volatile, gemt i RAM og i en ringbuffer i / run / log / journal /. Journaltjenesten kan dog også konfigureres til permanent at gemme Syslog-meddelelserne.

I Linux kan rsyslog-serveren konfigureres til at køre en central logleder på en modtager af modtagermoduler og sende logmeddelelser via netværket via TCP- eller UDP-transportprotokoller eller modtage logfiler fra netværksenheder, servere, routere, switche eller andre systemer eller indlejrede enheder, der genererer logfiler.

Rsyslog-dæmon kan opsættes til at køre som klient og server på samme tid. Konfigureres til at køre som en server, vil Rsyslog lytte på standard port 514 TCP og UDP og begynder at indsamle logmeddelelser, der sendes via netværket via fjernsystemer. Som klient sender Rsyslog via internettet de interne logbeskeder til en ekstern Ryslog-server via de samme TCP- eller UDP-porte.

Rsyslog vil filtrere syslog meddelelser i henhold til udvalgte egenskaber og handlinger. Rsyslog filtre er som følger:

  1. Facilitet eller prioriteret filers
  2. Ejendomsbaserede filtre
  3. Ekspressionsbaserede filtre

Den facilitet filter er repræsenteret af det Linux interne delsystem, der producerer logfilerne. De er kategoriseret som præsenteret nedenfor:

  • auth / authPriv = Meddelelser produceret af godkendelsesprocesser
  • cron= logs relateret til cron opgaver
  • daemon = Meddelelser relateret til kørende systemtjenester
  • kerne = Linux kernel meddelelser
  • post = mail server meddelelser
  • syslog = Meddelelser relateret til syslog eller andre dæmoner (DHCP server sender logfiler her)
  • lpr = printere eller udskriftsserver meddelelser
  • local0 - local7 = brugerdefinerede meddelelser under administratorkontrol

Den prioritet eller sværhedsgrad niveauer er tildelt et søgeord og et tal som beskrevet nedenfor.

  • Emerg = Nødsituation - 0
  • alert = Alarmer - 1
  • err = Fejl - 3
  • advare = Advarsler - 4
  • meddelelse = Meddelelse - 5
  • info = Information - 6
  • debug = Fejlfinding - 7 højeste niveau

Der er også nogle specielle Rsyslog søgeord til rådighed, såsom asterisken (*) tegn for at definere alle
faciliteter eller prioriteter, ingen søgeord, der ikke angiver nogen prioriteter, ligesignalet (=), der kun vælger den prioritet og udråbstegnet (!) som negerer en prioritet.

Handlingsdelen af ​​syslog er repræsenteret af destination udmelding. Destinationen for en logbesked kan være en fil, der er gemt i filsystemet, en fil i / var / log / systembane, en anden lokal procesindgang via et navngivet rør eller FIFO. Logbeskederne kan også rettes til brugere, kasseres til et sort hul (/ dev / null) eller sendes til stdout eller til en ekstern syslog-server via TCP / UDP-protokollen. Logbeskederne kan også gemmes i en database, f.eks. MySQL eller PostgreSQL.

Konfigurer Rsyslog som server

Rsyslog-dæmonen installeres automatisk i de fleste Linux-distributioner. Men hvis Rsyslog ikke er installeret på dit system, kan du udstede en af ​​nedenstående kommandoer for at installere tjenesten. Du skal bruge root privilegier til at køre kommandoer.

I Debians baserede distros:

sudo apt-get install rsyslog

I RHEL-baserede distros som CentOS:

sudo yum installer rsyslog

For at kontrollere om Rsyslog-dæmonen er startet på et system, udfør nedenstående kommandoer afhængigt af din distributionsversion.

På nyere Linux distros med systemd:

systemctl status rsyslog.service

På ældre Linux versioner med init:

service rsyslog status

/etc/init.d/rsyslog status

For at starte rsyslog daemon udsted følgende kommando.

På ældre Linux versioner med init:

service rsyslog start

/etc/init.d/rsyslog start

På nyeste Linux distros:

systemctl start rsyslog.service

Hvis du vil konfigurere et rsyslog-program til at køre i servertilstand, skal du redigere hovedkonfigurationsfilen /etc/rsyslog.conf. I denne fil gøres følgende ændringer som vist i nedenstående eksempel.

sudo vi /etc/rsyslog.conf

Find og uncomment ved at fjerne hashtag (#) følgende linjer for at tillade UDP logbesked modtagelse på 514 port. Som standard bruges UDP-porten af ​​syslog til at sende modtagne meddelelser.

$ ModLoad imudp $ UDPServerRun 514

Da UDP-protokollen ikke er pålidelig til at udveksle data via et netværk, kan du konfigurere Rsyslog til at sende logmeddelelser til en fjernserver via TCP-protokollen. For at aktivere TCP-modtagelsesprotokol, skal du åbne /etc/rsyslog.conf fil og uncomment følgende linjer som vist nedenfor. Dette vil gøre det muligt for rsyslog-dæmmen at binde og lytte på en TCP-stik på port 514.

$ ModLoad imtcp $ InputTCPServerRun 514

Begge protokoller kan aktiveres i rsyslog for at køre på samme tid.

Hvis du vil angive, hvilke afsendere du tillader adgang til rsyslog-dæmon, skal du tilføje følgende linje efter de aktiverede protokollinjer:

$ AllowedSender TCP, 127.0.0.1, 10.110.50.0 / 24, * .dindomæne.com

Du skal også oprette en ny skabelon, der vil blive analyseret af rsyslog-dæmon, inden du modtager de indgående logfiler. Skabelonen skal instruere den lokale Rsyslog-server, hvor de indgående logbeskeder skal gemmes. Definer skabelonen lige efter $ AllowedSender linje som vist i nedenstående prøve.

$ template Indkommende logfiler, "/ var / log /% HOSTNAME% /% PROGRAMNAME% .log" 
*. *  ? Indgående logfiler & ~

Hvis du kun logger på de meddelelser, der genereres af kernen, skal du bruge nedenstående syntaks.

kernen. *? Indkommende logfiler

De modtagne logfiler analyseres af ovenstående skabelon og gemmes i det lokale filsystem i / var / log / directory, i filer opkaldt efter klientens værtsnavn klientfacilitet, der producerede meddelelserne: %VÆRTSNAVN% og % PROGRAMNAME% variabler.

Den nedenstående & ~ omdirigeringsregel konfigurerer Rsyslog-dæmonen til kun at gemme de indgående logbeskeder til de ovennævnte filer, der er angivet af variablernes navne. Ellers vil de modtagne logfiler blive behandlet yderligere og også gemt i indholdet af lokale logfiler, f.eks. / Var / log / syslog-fil.

For at tilføje en regel til at fjerne alle relaterede logmeddelelser til mail, kan du bruge følgende erklæring.

mail. * ~

Andre variabler, der kan bruges til at udstille filnavne, er:% syslogseverity%,% syslogfacility%,% timegenereret%,% HOSTNAME%,% syslogtag%,% msg%,% FROMHOST-IP%,% PRI%,% MSGID% % APP-NAME%,% TIMESTAMP%,% $ år%,% $ måned%,% $ dag%

Fra og med Rsyslog version 7 kan et nyt konfigurationsformat bruges til at erklære en skabelon på en Rsyslog-server.

En version 7 skabeloneksempel kan se ud som vist i nedenstående linjer.

skabelon (name = "MyTemplate" type = "string" string = "/ var / log /% FROMHOST-IP% /% PROGRAMNAME ::: secpath-erstatte% .log")

En anden tilstand, du kan skrive ovenstående skabelon, kan også være som vist nedenfor:

skabelon (navn = "MyTemplate" type = "liste") {konstant (værdi = "/ var / log /") egenskab (navn = "fromhost-ip") konstant (værdi = "/") egenskab (navn = "programnavn "SecurePath =" erstatte ") konstant (værdi =". Log ")} 

For at kunne foretage ændringer i rsyslog-konfigurationsfilen skal du genstarte dæmonen for at indlæse den nye konfiguration.

sudo service rsyslog genstart

sudo systemctl genstart rsyslog

For at kontrollere, hvilke rsyslog sockets i lytte tilstand der åbnes på et Debian Linux system, kan du udføre netstat kommando med root privilegier. Send resultaterne via et filterværktøj, f.eks grep.

sudo netstat -tulpn | grep rsyslog

Vær opmærksom på, at du også skal åbne Rsyslog-porte i firewall for at muliggøre indgående forbindelser.

I RHEL-baserede distros med Firewalld-aktiveret problem er nedenstående kommandoer:

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

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

firewall-cmd-reload

I Debian-baserede distroer med UFW-firewall-aktive problem er nedenstående kommandoer:

ufw tillade 514 / tcp

ufw tillade 514 / udp

Iptables firewall regler:

iptables -A INPUT -p tcp -m tcp -port 514 -J ACCEPT

iptables -A INPUT -p udp -port 514 -J ACCEPT

Konfigurer Rsyslog som kunde

Hvis du vil aktivere rsyslog-dæmonen til at køre i klienttilstand og sende lokale logmeddelelser til en ekstern Rsyslog-server, skal du redigere /etc/rsyslog.conf fil og tilføj en af ​​følgende linjer:

*. * @IP_REMOTE_RSYSLOG_SERVER: 514

*. * @FQDN_RSYSLOG_SERVER: 514

Denne linje gør det muligt for Rsyslog-tjenesten at sende alle interne logfiler til en fjern Rsyslog-server på UDP-port 514.

For at sende logfilerne over TCP-protokollen skal du bruge følgende skabelon:

*. * @@ IP_reomte_syslog_server: 514

Hvis du kun vil sende cron-relaterede logfiler med alle prioriteter til en rsyslog-server, skal du bruge nedenstående skabelon:

cron. * @ IP_reomte_syslog_server: 514

I tilfælde, hvor Rsyslog-serveren ikke kan nås via netværk, tilføj nedenstående linjer til /etc/rsyslog.conf-filen på klientsiden for midlertidigt at gemme logfilerne i en diskbufferfil, indtil serveren kommer online.

$ ActionQueueFileName kø $ ActionQueueMaxDiskSpace 1g $ ActionQueueSaveOnShutdown på $ ActionQueue Type TypeListe $ ActionResumeRetryCount -1

For at anvende ovenstående regler skal Rsyslog-dæmonen genstartes for at kunne fungere som klient.

Kilde

Spred kærligheden

Giv en kommentar

Din e-mail adresse vil ikke blive offentliggjort. Krævede felter er markeret *