Logfiler er en kritisk komponent i enhver software eller operativsystem. Logfiler registrerer normalt brugerens handlinger, systemhændelser, netværksaktivitet og meget mere, afhængigt af hvad de er beregnet til. Et af de mest anvendte logningssystemer på Linux -systemer er rsyslog.
Rsyslog er et kraftfuldt, sikkert og højtydende logbehandlingssystem, der accepterer data fra forskellige typer kilder (systemer/applikationer) og sender det til flere formater.
Det har udviklet sig fra en almindelig syslog dæmon til et fuldt udstyret logningssystem på virksomhedsniveau. Det er designet i en klient/server -model, derfor kan det konfigureres som en klient og/eller som en central logningsserver til andre servere, netværksenheder og eksterne applikationer.
I forbindelse med denne vejledning vil vi bruge følgende værter:
De fleste Linux -distributioner følger med rsyslog pakke forudinstalleret. Hvis det ikke er installeret, kan du installere det ved hjælp af dit Linux -pakkehåndteringsværktøj som vist.
$ sudo yum opdatering && yum install rsyslog #CentOS 7. $ sudo apt update && apt install rsyslog #Ubuntu 16.04, 18.04.
Enkelt gang rsyslog installeret, skal du starte tjenesten for nu, aktivere den til at starte automatisk ved opstart og kontrollere dens status med systemctl kommando.
$ sudo systemctl start rsyslog. $ sudo systemctl aktiver rsyslog. $ sudo systemctl status rsyslog.
Den vigtigste rsyslog -konfigurationsfil er placeret på /etc/rsyslog.conf, der indlæser moduler, definerer de globale direktiver, indeholder regler for behandling af logbeskeder, og det indeholder også alle konfigurationsfiler i /etc/rsyslog.d/ til forskellige applikationer/tjenester.
$ sudo vim /etc/rsyslog.conf.
Som standard, rsyslog bruger imjournal og imusock moduler til import af strukturerede logbeskeder fra systemd journal og for at acceptere syslog -beskeder fra henholdsvis applikationer, der kører på det lokale system via Unix -sockets.
For at konfigurere rsyslog som et netværk/central logningsserver skal du indstille protokollen (enten UDP eller TCP eller begge dele) den vil bruge til fjern syslog -modtagelse såvel som til den port, den lytter til.
Hvis du vil bruge en UDP forbindelse, som er hurtigere, men upålidelig, søg og kommenter linjerne herunder (erstat 514 med den port, du vil have den til at lytte til, skal denne matche den portadresse, som klienterne sender meddelelser til, vi vil se mere på dette, når du konfigurerer en rsyslog -klient).
$ ModLoad imudp. $ UDPServerRun 514.
At bruge TCP forbindelse (som er langsommere, men mere pålidelig), skal du søge og kommentere linjerne herunder.
$ ModLoad imtcp. $ InputTCPServerRun 514.
I dette tilfælde vil vi bruge både UDP- og TCP -forbindelser på samme tid.
Dernæst skal du definere regelsæt til behandling af fjernlogfiler i følgende format.
facility.severity_level destination (hvor gemmes log)
Hvor:
*
betyder alle faciliteter.*
betyder alle sværhedsgrader og ingen indebærer ingen sværhedsgrad.Vi vil bruge følgende regelsæt til indsamling af logfiler fra eksterne værter ved hjælp af RemoteLogs skabelon. Bemærk, at disse regler skal komme før regler for behandling af lokale meddelelser, som vist på skærmbilledet.
$ skabelon RemoteLogs, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" *.*? RemoteLogs & ~
Ser man på ovenstående regelsæt, den første regel er “$ Template RemoteLogs,”/var/log/%HOSTNAME%/%PROGRAMNAME%.log ””.
Direktivet $ skabelon fortæller rsyslog -dæmon at samle og skrive alle de modtagne fjernmeddelelser til forskellige logfiler under /var/log, baseret på værtsnavn (navn på klientmaskine) og fjernklientfacilitet (program/applikation), der genererede meddelelserne som defineret af indstillingerne i skabelonen RemoteLogs.
Den anden linje “*.*? RemoteLogs” betyder at optage beskeder fra alle faciliteter på alle sværhedsgrader ved hjælp af RemoteLogs skabelon konfiguration.
Den sidste linje “& ~” instruerer rsyslog om at stoppe behandlingen af beskederne, når de er skrevet til en fil. Hvis du ikke inkluderer “& ~”, vil beskeder i stedet blive skrevet til de lokale filer.
Der er mange andre skabeloner, du kan bruge. For mere information, se rsyslog -konfigurationsmandsiden (mand rsyslog.conf) eller henvises til Rsyslog online dokumentation.
Det er det med at konfigurere rsyslog -serveren. Gem og luk konfigurationsfilen. For at anvende de seneste ændringer skal du genstarte rsyslog -dæmonen med følgende kommando.
$ sudo systemctl genstart rsyslog.
Kontroller nu rsyslog -netværksstikkene. Brug ss kommando (eller netstat med de samme flag) kommando og rør output til grep for at filtrere ud rsyslogd -forbindelser.
$ sudo ss -tulnp | grep "rsyslog"
Dernæst CentOS 7, hvis du har SELinux aktiveret, skal du køre følgende kommandoer for at tillade rsyslog -trafik baseret på netværksstikketypen.
$ sudo semanage -a -t syslogd_port_t -p udp 514. $ sudo semanage -a -t syslogd_port_t -p tcp 514
Hvis systemet har firewall aktiveret, skal du åbne porten 514 at tillade begge UDP/TCP forbindelser til rsyslog -serveren ved at køre.
På CentOS $ sudo firewall-cmd --permanent --add-port = 514/udp. $ sudo firewall-cmd --permanent --add-port = 514/tcp. $ sudo firewall-cmd-genindlæs På Ubuntu $ sudo ufw tillader 514/udp. $ sudo ufw tillader 514/tcp. $ sudo ufw genindlæsning
Nu på klientsystemet skal du kontrollere, om rsyslog -tjenesten kører eller ej, med følgende kommando.
$ sudo systemctl status rsyslog.
Hvis det ikke er installeret, skal du installere det og starte tjenesten som vist tidligere.
$ sudo yum opdatering && yum install rsyslog #CentOS 7. $ sudo apt update && apt install rsyslog #Ubuntu 16.04, 18.04. $ sudo systemctl start rsyslog. $ sudo systemctl aktiver rsyslog. $ sudo systemctl status rsyslog.
Når rsyslog -tjenesten er i gang, skal du åbne hovedkonfigurationsfilen, hvor du vil foretage ændringer af standardkonfigurationen.
$ sudo vim /etc/rsyslog.conf.
At tvinge rsyslog -dæmonen til at fungere som en logklient og videresende alle lokalt genererede logmeddelelser til ekstern rsyslog -server, tilføj denne videresendelsesregel i slutningen af filen som vist i det følgende skærmbillede.
*. * @@192.168.100.10:514.
Ovenstående regel sender beskeder fra alle faciliteter og på alle sværhedsgrader. For eksempel at sende beskeder fra en bestemt facilitet aut, brug følgende regel.
aut. * @@192.168.100.10:514.
Gem ændringerne, og luk konfigurationsfilen. For at anvende ovenstående indstillinger skal du genstarte rsyslog -dæmonen.
$ sudo systemctl genstart rsyslog.
Det sidste trin er at kontrollere, om rsyslog faktisk modtager og logger beskeder fra klienten, under /var/log, i formen værtsnavn/programnavn.log.
Kør a ls kommando til en lang liste over overordnede logbøger og kontroller, om der er et bibliotek, der hedder ip-172.31.21.58 (eller hvad din klientmaskins værtsnavn er).
$ ls -l/var/log/
Hvis biblioteket findes, skal du kontrollere logfilerne inde i det ved at køre.
$ sudo ls -l/var/log/ip-172-31-21-58/
Rsyslog er et højtydende logbehandlingssystem, designet i en klient/server-arkitektur. Vi håber, at du kan installere og konfigurere Rsyslog som en central/netværkslogningsserver og som en klient som vist i denne vejledning.
Du kan også henvise til relevante rsyslog -manuelle sider for mere hjælp. Giv os gerne feedback eller stil spørgsmål.