Central Logging Serverin määrittäminen Rsyslogilla Linuxissa


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

Rsyslog on tehokas, turvallinen ja suorituskykyinen lokinkäsittelyjärjestelmä, joka hyväksyy tiedot eri lähteistä (järjestelmät/sovellukset) ja tulostaa ne useisiin muotoihin.

Se on kehittynyt tavallisesta syslog-daemonista täysin varustelluksi, yritystason lokijärjestelmäksi. Se on suunniteltu asiakas/palvelin-malliksi, joten se voidaan konfiguroida asiakkaaksi ja/tai keskuslokipalvelimeksi muille palvelimille, verkkolaitteille ja etäsovelluksille.

Testausympäristö

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

Useimmissa Linux-jakeluissa on rsyslog-paketti esiasennettuna. Jos sitä ei ole asennettu, voit asentaa sen käyttämällä Linux-paketinhallintatyökalua kuvan mukaisesti.

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 sen automaattinen käynnistyminen käynnistyksen yhteydessä ja tarkistettava sen tila systemctl-komennolla.

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

Pääasiallinen rsyslog-määritystiedosto sijaitsee osoitteessa /etc/rsyslog.conf, joka lataa moduuleja, määrittelee yleiset käskyt, sisältää säännöt lokiviestien käsittelyyn ja se sisältää myös kaikki konfiguraatiotiedostot tiedostossa /etc. /rsyslog.d/ eri sovelluksille/palveluille.

sudo vim /etc/rsyslog.conf

Oletusarvoisesti rsyslog käyttää imjournal- ja imusock-moduuleja strukturoitujen lokiviestien tuomiseen systemd journalista ja syslogin hyväksymiseen. viestit paikallisessa järjestelmässä toimivista sovelluksista Unix-liitäntöjen kautta.

Jos haluat määrittää rsyslogin verkko-/keskuslokipalvelimeksi, sinun on asetettava 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 alla olevat rivit ja poista kommentit (korvaa 514 portilla, jota haluat sen kuuntelevan, tämän pitäisi täsmää portin osoite, johon asiakkaat lähettävät viestejä, tarkastelemme tätä tarkemmin määrittäessämme rsyslog-asiakasta).

$ModLoad imudp
$UDPServerRun 514

Jos haluat käyttää TCP-yhteyttä (joka on hitaampi mutta luotettavampi), etsi alla olevat rivit ja poista kommentit.

$ModLoad imtcp
$InputTCPServerRun 514

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

Seuraavaksi sinun on määritettävä sääntöjoukko etälokien käsittelyä varten seuraavassa muodossa.

facility.severity_level	destination (where to store log)

Missä :

  • facility: on prosessin/sovelluksen luovan viestin tyyppi. Niihin kuuluvat auth, cron, daemon, kernel, local0..local7. * tarkoittaa kaikkia toimintoja.
  • vakavuustaso: on lokiviestin tyyppi: emerg-0, alert-1, crit-2, err-3, warn-4, notice-5, info-6, debug-7. *-koodin käyttäminen tarkoittaa kaikkia vakavuustasoja ja mikään ei tarkoita, että vakavuustasoa ei ole.
  • kohde: on joko paikallinen tiedosto tai etä-rsyslog-palvelin (määritetty muodossa IP:portti).

Käytämme seuraavaa sääntöjoukkoa kerätäksemme lokeja etäisänniltä RemoteLogs-mallin avulla. Huomaa, että näiden sääntöjen on oltava ennen paikallisten viestien käsittelyä koskevia sääntöjä, kuten kuvakaappauksessa näkyy.

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

Yllä 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 kohdassa /var/log isäntänimen perusteella. > (asiakaskoneen nimi) ja etäasiakastoiminto (ohjelma/sovellus), joka loi viestit mallin RemoteLogs asetusten mukaisesti.

Toinen rivi "*.* ?RemoteLogs" tarkoittaa viestien tallentamista kaikista laitoksista kaikilla vakavuustasoilla käyttämällä RemoteLogs-mallin määritystä.

Viimeinen rivi “& ~ ” kehottaa rsyslogia lopettamaan viestien käsittelyn, kun se on kirjoitettu tiedostoon. Jos et sisällytä sanaa "& ~", viestit sen sijaan kirjoitetaan paikallisiin tiedostoihin.

Voit käyttää monia muita malleja. Saat lisätietoja rsyslogin määritysmanuaalisivulta (man rsyslog.conf) tai Rsyslogin online-dokumentaatiosta.

Siinä se rsyslog-palvelimen määrittämisessä. Tallenna ja sulje asetustiedosto. Ota viimeisimmät muutokset käyttöön käynnistämällä rsyslog-daemon uudelleen seuraavalla komennolla.

sudo systemctl restart rsyslog

Tarkista nyt rsyslog-verkkopistokkeet. Käytä ss-komentoa (tai netstat-komentoa samoilla lipuilla) ja suodata rsyslogd-yhteydet ohjaamalla tulos grep-muotoon.

sudo ss -tulnp | grep "rsyslog"

Seuraavaksi CentOS 7 -käyttöjärjestelmässä, jos SELinux on käytössä, suorita seuraavat komennot salliaksesi rsyslog-liikenne verkkopistorasian tyypin 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ä, sinun on avattava portti 514, jotta molemmat UDP/TCP-yhteydet rsyslog-palvelimeen voidaan muodostaa suorittamalla.

------------- 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äärittää Rsyslog Client lähettämään lokeja Rsyslog-palvelimelle

Tarkista nyt asiakasjärjestelmässä, onko rsyslog-palvelu käynnissä vai ei seuraavalla komennolla.

sudo systemctl status rsyslog

Jos sitä ei ole asennettu, asenna se ja käynnistä palvelu edellä kuvatulla tavalla.

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äytössä, avaa päämääritystiedosto, jossa teet muutoksia oletuskokoonpanoon.

sudo vim /etc/rsyslog.conf

Jos haluat pakottaa rsyslog-daemonin toimimaan lokiasiakkaana ja välittämään kaikki paikallisesti luodut lokiviestit edelleen rsyslog-etäpalvelimelle, lisää tämä edelleenlähetyssääntö tiedoston loppuun seuraavan kuvakaappauksen mukaisesti.

*. *  @@192.168.100.10:514

Yllä oleva sääntö lähettää viestejä kaikista tiloista ja kaikilla vakavuustasoilla. Käytä seuraavaa sääntöä lähettääksesi viestejä tietystä toiminnosta, esimerkiksi auth.

auth. *  @@192.168.100.10:514

Tallenna muutokset ja sulje asetustiedosto. Ota yllä olevat asetukset käyttöön käynnistämällä rsyslog-daemon uudelleen.

sudo systemctl restart rsyslog

Kuinka seurata etäkirjausta Rsyslog-palvelimella

Viimeinen vaihe on tarkistaa, vastaanottaako rsyslog todella asiakkaalta viestejä ja kirjaa niitä lokiin kohdassa /var/log muodossa isäntänimi/ohjelmannimi.log.

Suorita ls-komento, joka luettelee pitkään ylätason lokihakemiston ja tarkista, onko olemassa hakemistoa nimeltä ip-172.31.21.58 (tai mikä tahansa asiakaskoneen isäntänimi).

 
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/

Yhteenveto

Rsyslog on tehokas lokinkäsittelyjärjestelmä, joka on suunniteltu asiakas/palvelin-arkkitehtuuriin. Toivomme, että pystyt asentamaan ja määrittämään Rsyslogin keskus-/verkkolokipalvelimeksi ja asiakkaaksi tässä oppaassa esitetyllä tavalla.

Saatat myös haluta hakea lisäapua asiaankuuluvilta rsyslog-käsikirjasivuilta. Voit vapaasti antaa meille palautetta tai esittää kysymyksiä.