Central Logging Serverin asennus Rsyslogilla Linuxissa


Lokit ovat minkä tahansa ohjelmiston tai käyttöjärjestelmän kriittinen osa. Lokit tallentavat yleensä käyttäjän toimet, järjestelmätapahtumat, verkkotoiminnan ja paljon muuta sen mukaan, mihin ne on tarkoitettu. Yksi Linux-järjestelmien yleisimmin käytetyistä kirjausjärjestelmistä on rsyslog.

Rsyslog on tehokas, turvallinen ja suorituskykyinen lokinkäsittelyjärjestelmä, joka hyväksyy tietoja erityyppisistä lähteistä (järjestelmistä/sovelluksista) ja tuottaa ne useisiin muotoihin.

Se on kehittynyt tavallisesta syslog-demonista täysin varustelluksi, yritystason kirjausjärjestelmäksi. Se on suunniteltu asiakas-/palvelinmalliksi, joten se voidaan määrittää asiakkaaksi ja/tai keskuspalvelimeksi muille palvelimille, verkkolaitteille ja etäsovelluksille.

Tässä oppaassa käytämme seuraavia isäntiä:

  • Palvelin: 192.168.241.140
  • Asiakas: 172.31.21.58

Kuinka asentaa ja määrittää Rsyslog Server

Useimpien Linux-jakelujen mukana on esiasennettu rsyslog-paketti. Jos sitä ei ole asennettu, voit asentaa sen Linux-paketinhallintatyökalulla kuvan osoittamalla tavalla.

$ sudo yum update && yum install rsyslog 	#CentOS 7
$ sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04

Kun rsyslog on asennettu, sinun on käynnistettävä palvelu toistaiseksi, sallittava se käynnistymään automaattisesti käynnistyksen yhteydessä ja tarkistaa sen tila systemctl-komennolla.

$ sudo systemctl start rsyslog
$ sudo systemctl enable rsyslog
$ sudo systemctl status rsyslog

Rsyslog-pääasetustiedosto sijaitsee osoitteessa /etc/rsyslog.conf, joka lataa moduulit, määrittelee globaalit ohjeet, sisältää säännöt lokiviestien käsittelystä ja sisältää myös kaikki asetustiedostot /etc/rsyslog.d/ eri sovelluksille/palveluille .

$ sudo vim /etc/rsyslog.conf

Oletuksena rsyslog käyttää imjournal- ja imusock-moduuleja jäsenneltyjen lokiviestien tuomiseen systemd-päiväkirjasta ja syslog-viestien vastaanottamiseen paikallisessa järjestelmässä toimivista sovelluksista Unix-pistorasioiden kautta.

Jos haluat määrittää rsyslogin verkoksi/keskitetyksi lokipalvelimeksi, sinun on määritettävä protokolla (joko UDP tai TCP tai molemmat), jota se käyttää syslogin etävastaanottoon, sekä portti, jota se kuuntelee.

Jos haluat käyttää UDP-yhteyttä, joka on nopeampi mutta epäluotettava, etsi ja poista kommentit alla olevista riveistä (korvaa 514 portilla, jota haluat sen kuuntelevan, tämän tulisi vastata porttiosoitetta, johon asiakkaat lähettävät viestejä. tässä enemmän määritettäessä rsyslog-asiakasta).

$ModLoad imudp
$UDPServerRun 514

Jos haluat käyttää TCP-yhteyttä (joka on hitaampaa, mutta luotettavampaa), etsi ja poista kommentit alla olevista riveistä.

$ModLoad imtcp
$InputTCPServerRun 514

Tässä tapauksessa haluamme käyttää sekä UDP- että TCP-yhteyksiä samanaikaisesti.

Seuraavaksi sinun on määritettävä sääntöryhmä etälokien käsittelemiseksi seuraavassa muodossa.

facility.severity_level	destination (where to store log)

Missä:

  • laitos: on prosessia/sovellusta tuottavan viestin tyyppi, ne sisältävät auth, cron, daemon, kernel, local0..local7. * -toiminnon käyttäminen tarkoittaa kaikkia toimintoja.
  • vakavuustaso: on lokiviestin tyyppi: emerg-0, hälytys-1, crit-2, virhe-3, varoitus-4, huomautus-5, info-6, virheenkorjaus-7. * -toiminnon käyttäminen tarkoittaa kaikkia vakavuustasoja eikä mikään merkitse vakavuusastetta.
  • kohde: on joko paikallinen tiedosto tai etäinen rsyslog-palvelin (määritetty muodossa IP: portti).

Käytämme seuraavaa sääntöjoukkoa lokien keräämiseksi etäisänteistä RemoteLogs-mallin avulla. Huomaa, että näiden sääntöjen on oltava ennen kaikkia paikallisten viestien käsittelyä koskevia sääntöjä, kuten kuvakaappauksessa esitetään.

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

Edellä olevaa sääntöjoukkoa tarkasteltaessa ensimmäinen sääntö on\"$template RemoteLogs",/var/log /% HOSTNAME% /% PROGRAMNAME% .log "".

Käsky $template käskee rsyslog-daemonia keräämään ja kirjoittamaan kaikki vastaanotetut etäviestit erillisiin lokeihin/var/log -tietokoneen nimen (asiakaskoneen nimi) ja etäasiakassovelluksen (ohjelma/sovellus) perusteella, jotka luovat viestit määritelmän mukaisesti. RemoteLogs-mallipohjassa olevilla asetuksilla.

Toinen rivi\"*. *? RemoteLogs" tarkoittaa kaikkien tilojen viestien tallentamista kaikilla vakavuustasoilla RemoteLogs-mallin kokoonpanolla.

Viimeinen rivi\"& ~" kehottaa rsyslogia lopettamaan viestien käsittelyn, kun se on kirjoitettu tiedostoon. Jos et lisää & ~ -merkkiä, viestit kirjoitetaan sen sijaan paikallisiin tiedostoihin.

On monia muita malleja, joita voit käyttää, katso lisätietoja rsyslog-määritysten man -sivulta (man rsyslog.conf) tai tutustu Rsyslogin online-ohjeisiin.

Siinä se on, kun määrität rsyslog-palvelimen. Tallenna ja sulje määritystiedosto. Jos haluat ottaa käyttöön viimeisimmät muutokset, käynnistä rsyslog-demoni uudelleen seuraavalla komennolla.

$ sudo systemctl restart rsyslog

Tarkista nyt rsyslog-verkon pistorasiat. Käytä ss-komentoa (tai grep suodattaa rsyslogd-yhteydet.

$ sudo ss -tulnp | grep "rsyslog"

Seuraavaksi CentOS 7: ssä, jos SELinux on käytössä, suorita seuraavat komennot salliaksesi rsyslog-liikenteen verkkopistoketyypin perusteella.

$ sudo semanage -a -t syslogd_port_t -p udp 514
$ sudo semanage -a -t syslogd_port_t -p tcp 514 

Jos järjestelmässä on palomuuri käytössä, joudut avaamaan portin 514, jotta molemmat UDP/TCP-yhteydet sallitaan rsyslog-palvelimelle.

------------- On CentOS ------------- 
$ sudo firewall-cmd --permanent --add-port=514/udp
$ sudo firewall-cmd --permanent --add-port=514/tcp
$ sudo firewall-cmd --reload

------------- On Ubuntu -------------
$ sudo ufw allow 514/udp
$ sudo ufw allow 514/tcp
$ sudo ufw reload 

Kuinka määritetään Rsyslog Client lähettämään lokeja Rsyslog Serverille

Tarkista nyt asiakasjärjestelmässä, toimiiko rsyslog-palvelu seuraavalla komennolla.

$ sudo systemctl status rsyslog

Jos sitä ei ole asennettu, asenna se ja käynnistä palvelu aiemmin esitetyn mukaisesti.

$ sudo yum update && yum install rsyslog 	#CentOS 7
$ sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04
$ sudo systemctl start rsyslog
$ sudo systemctl enable rsyslog
$ sudo systemctl status rsyslog

Kun rsyslog-palvelu on käynnissä, avaa pääasetustiedosto, jossa teet muutoksia oletusasetuksiin.

$ sudo vim /etc/rsyslog.conf

Jos haluat pakottaa rsyslog-daemon toimimaan lokiasiakkaana ja välittämään kaikki paikallisesti luodut lokiviestit etä-rsyslog-palvelimelle, lisää tämä edelleenlähetyssääntö tiedoston loppuun, kuten seuraavassa kuvakaappauksessa näytetään.

*. *  @@192.168.100.10:514

Yllä oleva sääntö lähettää viestejä kaikista tiloista ja kaikilla vakavuustasoilla. Jos haluat lähettää viestejä tietystä laitoksesta, esimerkiksi todennuksesta, käytä seuraavaa sääntöä.

auth. *  @@192.168.100.10:514

Tallenna muutokset ja sulje määritystiedosto. Jos haluat käyttää yllä olevia asetuksia, käynnistä rsyslog-demoni uudelleen.

$ sudo systemctl restart rsyslog

Kuinka seurata etälokia Rsyslog-palvelimella

Viimeinen vaihe on tarkistaa, onko rsyslog todella vastaanottanut ja kirjautumassa viestejä asiakkaalta, kohdassa/var/log, muodossa isäntänimi/ohjelmanimi.log.

Suorita ls-komento vanhempien lokihakemistojen pitkään luetteloon ja tarkista, onko hakemistoa nimeltä ip-172.31.21.58 (tai mikä tahansa asiakkaan koneen isäntänimi on).

 
$ ls -l /var/log/

Jos hakemisto on olemassa, tarkista sen sisällä olevat lokitiedostot suorittamalla.

$ sudo ls -l /var/log/ip-172-31-21-58/

Rsyslog on korkean suorituskyvyn lokinkäsittelyjärjestelmä, joka on suunniteltu asiakas/palvelinarkkitehtuuriin. Toivomme, että pystyt asentamaan ja konfiguroimaan Rsyslogin keskus-/verkon kirjauspalvelimeksi ja asiakkaaksi, kuten tässä oppaassa on esitetty.

Saatat myös haluta katsoa lisätietoja asiaankuuluvista rsyslog-käyttöoppaista. Anna meille palautetta tai kysy kysymyksiä.