Kako nastaviti osrednji strežnik za beleženje z Rsyslogom v Linuxu


Dnevniki so kritična sestavina katere koli programske opreme ali operacijskega sistema. Dnevniki običajno beležijo dejanja uporabnika, sistemske dogodke, omrežno dejavnost in še veliko več, odvisno od tega, čemu so namenjeni. Eden najpogosteje uporabljenih sistemov za beleženje v sistemih Linux je rsyslog.

Rsyslog je zmogljiv, varen in zmogljiv sistem za obdelavo dnevnikov, ki sprejema podatke iz različnih vrst virov (sistemov/aplikacij) in jih oddaja v več formatov.

Iz običajnega demona syslog se je razvil v popolnoma opremljen sistem beleženja na ravni podjetja. Zasnovan je v modelu odjemalec/strežnik, zato ga je mogoče konfigurirati kot odjemalca in/ali kot osrednji strežnik za beleženje za druge strežnike, omrežne naprave in oddaljene aplikacije.

V tem priročniku bomo uporabljali naslednje gostitelje:

  • Strežnik: 192.168.241.140
  • Odjemalec: 172.31.21.58

Kako namestiti in konfigurirati strežnik Rsyslog

Večina distribucij Linuxa ima vnaprej nameščen paket rsyslog. Če ni nameščen, ga lahko namestite z orodjem za upravljanje paketov Linux, kot je prikazano.

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

Ko je rsyslog nameščen, morate za zdaj zagnati storitev, omogočiti samodejni zagon ob zagonu in preveriti njeno stanje z ukazom systemctl.

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

Glavna konfiguracijska datoteka rsyslog se nahaja na /etc/rsyslog.conf, ki nalaga module, opredeljuje globalne direktive, vsebuje pravila za obdelavo dnevniških sporočil in vključuje tudi vse konfiguracijske datoteke v /etc/rsyslog.d/ za različne aplikacije/storitve .

$ sudo vim /etc/rsyslog.conf

Rsyslog privzeto uporablja module imjournal in imusock za uvoz strukturiranih dnevniških sporočil iz sistemskega dnevnika in za sprejemanje sistemskih sporočil iz aplikacij, ki se izvajajo v lokalnem sistemu prek vtičnic Unix.

Če želite rsyslog konfigurirati kot omrežni/centralni strežnik za beleženje, morate nastaviti protokol (UDP ali TCP ali oboje), ki ga bo uporabljal za oddaljeni sprejem sistemskega dnevnika, in vrata, na katerih posluša.

Če želite uporabiti povezavo UDP, ki je hitrejša, vendar nezanesljiva, poiščite in razkomentirajte spodnje vrstice (zamenjajte 514 z vrati, na katerih želite, da poslušajo, to bi se moralo ujemati z naslovom vrat, na katera odjemalci pošiljajo sporočila, bomo pogledali pri konfiguraciji odjemalca rsyslog).

$ModLoad imudp
$UDPServerRun 514

Če želite uporabiti povezavo TCP (ki je počasnejša, vendar bolj zanesljiva), poiščite in razkomentirajte spodnje vrstice.

$ModLoad imtcp
$InputTCPServerRun 514

V tem primeru želimo hkrati uporabljati povezave UDP in TCP.

Nato morate določiti niz pravil za obdelavo oddaljenih dnevnikov v naslednji obliki.

facility.severity_level	destination (where to store log)

Kje:

  • objekt: je vrsta sporočila, ki ustvarja proces/aplikacijo, vključuje auth, cron, daemon, kernel, local0..local7. Uporaba * pomeni vse zmogljivosti.
  • resnost_nivo: je vrsta sporočila dnevnika: emerg-0, alert-1, crit-2, err-3, warn-4, notice-5, info-6, debug-7. Uporaba * pomeni vse stopnje resnosti in nobena ne pomeni stopnje resnosti.
  • destinacija: je lokalna datoteka ali oddaljeni strežnik rsyslog (določeno v obliki IP: vrata).

Naslednji nabor pravil bomo uporabili za zbiranje dnevnikov z oddaljenih gostiteljev z uporabo predloge RemoteLogs. Upoštevajte, da morajo biti ta pravila pred vsemi pravili za obdelavo lokalnih sporočil, kot je prikazano na posnetku zaslona.

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

Če pogledamo zgornji niz pravil, je prvo pravilo\"$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log ””.

Direktiva $template pove demonu rsyslog, naj zbere in napiše vsa prejeta oddaljena sporočila v ločene dnevnike pod/var/log, na podlagi imena gostitelja (ime računalnika odjemalca) in oddaljenega odjemalca (program/aplikacija), ki je ustvaril sporočila, kot je opredeljeno z nastavitvami v predlogi RemoteLogs.

Druga vrstica\"*.*? RemoteLogs" pomeni snemanje sporočil iz vseh naprav na vseh stopnjah resnosti z uporabo konfiguracije predloge RemoteLogs.

Zadnja vrstica\"& ~" naroči rsyslogu, naj preneha obdelati sporočila, ko so zapisana v datoteko. Če ne vključite "& ~", bodo sporočila zapisana v lokalne datoteke.

Uporabite lahko še veliko drugih predlog, če želite več informacij, si oglejte stran s konfiguracijo rsyslog (man rsyslog.conf) ali si oglejte spletno dokumentacijo Rsyslog.

To je to s konfiguracijo strežnika rsyslog. Shranite in zaprite konfiguracijsko datoteko. Če želite uporabiti nedavne spremembe, znova zaženite demon rsyslog z naslednjim ukazom.

$ sudo systemctl restart rsyslog

Zdaj preverite omrežne vtičnice rsyslog. Uporabite ukaz ss (ali grep za filtriranje povezav rsyslogd.

$ sudo ss -tulnp | grep "rsyslog"

Nato na CentOS 7, če imate omogočen SELinux, zaženite naslednje ukaze, da omogočite promet rsyslog glede na vrsto omrežne vtičnice.

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

Če ima sistem omogočen požarni zid, morate z zagonom odpreti vrata 514, da omogočite obe povezavi UDP/TCP s strežnikom rsyslog.

------------- 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 

Kako konfigurirati odjemalca Rsyslog za pošiljanje dnevnikov na strežnik Rsyslog

Zdaj v sistemu odjemalca z naslednjim ukazom preverite, ali se storitev rsyslog izvaja ali ne.

$ sudo systemctl status rsyslog

Če ni nameščen, ga namestite in zaženite storitev, kot je prikazano prej.

$ 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

Ko je storitev rsyslog zagnana, odprite glavno konfiguracijsko datoteko, v kateri boste izvedli spremembe privzete konfiguracije.

$ sudo vim /etc/rsyslog.conf

Če želite, da demon rsyslog deluje kot odjemalec dnevnika in posreduje vsa lokalno ustvarjena sporočila dnevnika oddaljenemu strežniku rsyslog, dodajte to pravilo posredovanja na koncu datoteke, kot je prikazano na naslednjem posnetku zaslona.

*. *  @@192.168.100.10:514

Zgornje pravilo bo pošiljalo sporočila iz vseh objektov in na vseh stopnjah resnosti. Če želite poslati sporočila iz določenega objekta, na primer auth, uporabite naslednje pravilo.

auth. *  @@192.168.100.10:514

Shranite spremembe in zaprite konfiguracijsko datoteko. Če želite uporabiti zgornje nastavitve, znova zaženite demon rsyslog.

$ sudo systemctl restart rsyslog

Kako spremljati oddaljeno beleženje na strežniku Rsyslog

Zadnji korak je preveriti, ali rsyslog dejansko sprejema in beleži sporočila od odjemalca pod/var/log v obliki hostname/programname.log.

Zaženite ukaz ls za dolg seznam imenikov nadrejenih dnevnikov in preverite, ali obstaja imenik, imenovan ip-172.31.21.58 (ali karkoli je ime gostitelja vašega odjemalca).

 
$ ls -l /var/log/

Če imenik obstaja, preverite datoteke dnevnika v njem tako, da zaženete.

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

Rsyslog je visoko zmogljiv sistem za obdelavo dnevnikov, zasnovan v arhitekturi odjemalec/strežnik. Upamo, da boste lahko namestili in konfigurirali Rsyslog kot osrednji/omrežni strežnik za beleženje in kot odjemalca, kot je prikazano v tem priročniku.

Za več pomoči se lahko obrnete tudi na ustrezne strani priročnika rsyslog. Sporočite nam kakršne koli povratne informacije ali zastavite vprašanja.