Kako ustvariti centraliziran strežnik dnevnikov z Rsyslogom v CentOS/RHEL 7


Da bi sistemski skrbnik lahko odkril ali odpravil težavo v strežniškem sistemu CentOS 7 ali RHEL 7, mora vedeti in si ogledati dogodke, ki so se zgodili v sistemu v določenem časovnem obdobju iz datotek dnevnika, shranjenih v sistemu v /var/log imenika.

Strežnik syslog na računalniku Linux lahko deluje kot osrednja nadzorna točka v omrežju, kjer lahko vsi strežniki, omrežne naprave, usmerjevalniki, stikala in večina njihovih notranjih storitev, ki ustvarjajo dnevnike, ne glede na to, ali gre za določeno notranjo težavo ali samo informativna sporočila, pošljejo svoje dnevnike. .

V sistemu CentOS/RHEL 7 je demon Rsyslog vnaprej nameščen glavni strežnik dnevnikov, sledi mu Systemd Journal Daemon (journald).

Strežnik Rsyslog v gradnji kot storitev arhitekture odjemalca/strežnika in lahko hkrati doseže obe vlogi. Lahko deluje kot strežnik in zbira vse dnevnike, ki jih prenašajo druge naprave v omrežju, ali kot odjemalec, tako da pošlje vse notranje sistemske dogodke, zabeležene na oddaljeni strežnik syslog končne točke.

Ko je rsyslog konfiguriran kot odjemalec, se lahko dnevniki shranijo lokalno v datotekah v lokalnem datotečnem sistemu ali pa se pošljejo na daljavo, namesto da se jih zapiše v datoteke, shranjene na računalniku, ali lokalno zapišejo datoteke dnevnika dogodkov in jih pošljejo na oddaljeni strežnik syslog na istočasno.

Strežnik Syslog upravlja vsa sporočila dnevnika po naslednji shemi:

type (facility).priority (severity)  destination(where to send the log)

A. Podatke o objektu ali vrsti predstavljajo procesi notranjega sistema, ki ustvarjajo sporočila. V Linuxu so notranji procesi (zmogljivosti), ki ustvarjajo dnevnike, standardizirani na naslednji način:

  • auth = sporočila, ustvarjena s postopki preverjanja pristnosti (prijava).
  • cron = sporočila, ki jih ustvarijo načrtovani procesi (crontab).
  • daemon = sporočila, ki jih ustvarijo demoni (notranje storitve).
  • kernel = sporočila, ki jih ustvari samo jedro Linuxa.
  • pošta = sporočila, ki jih ustvari poštni strežnik.
  • syslog = sporočila, ki jih ustvari sam demon rsyslog.
  • lpr = sporočila, ki jih ustvarijo lokalni tiskalniki ali tiskalniški strežnik.
  • local0 - local7 = sporočila po meri, ki jih določi skrbnik (local7 je običajno dodeljen za Cisco ali Windows).

B. Stopnje prioritete (resnosti) so tudi standardizirane. Vsaka prednostna naloga ima standardno okrajšavo in številko, kot je opisano spodaj. 7. prioriteta je višja stopnja vseh.

  • emerg = Nujna - 0
  • opozorilo = opozorila - 1
  • err = Napake - 3
  • warn = Opozorila - 4
  • obvestilo = Obvestilo - 5
  • info = Informacije - 6
  • odpravljanje napak = odpravljanje napak - 7

Posebne ključne besede Rsyslog:

  • * = vsi objekti ali prioritete
  • nič = objekti nimajo določenih prioritet. Npr .: mail.none

C. Tretji del sheme syslog predstavlja ciljna direktiva. Demon Rsyslog lahko pošlje dnevniška sporočila, ki jih je treba zapisati v datoteko v lokalnem datotečnem sistemu (večinoma v datoteko v imeniku/var/log/directory) ali jih poslati v drug lokalni postopek ali poslati v lokalno uporabniško konzolo (v stdout) ali pošljite sporočilo na oddaljeni strežnik syslog prek protokola TCP/UDP ali celo zavrzite sporočilo na/dev/null.

Če želite CentOS/RHEL 7 konfigurirati kot osrednji dnevniški strežnik, moramo najprej preveriti in zagotoviti, da je particija/var, na kateri so zapisane vse dnevniške datoteke, dovolj velika (najmanj nekaj GB), da lahko shrani vse dnevniške datoteke, ki jih bodo poslale druge naprave. Dobra odločitev je, da za namestitev imenika/var/log/uporabite ločen pogon (LVM, RAID).

  1. Postopek namestitve CentOS 7.3
  2. RHEL 7.3 Postopek namestitve

Kako nastaviti Rsyslog v strežniku CentOS/RHEL 7

1. Storitev Rsyslog je privzeto samodejno nameščena in bi se morala izvajati v CentOS/RHEL 7. Če želite preveriti, ali se je demon zagnal v sistemu, izdajte naslednji ukaz s korenskimi pravicami.

# systemctl status rsyslog.service

Če se storitev privzeto ne izvaja, izvedite spodnji ukaz, da zaženete demon rsyslog.

# systemctl start rsyslog.service

2. Če paket rsyslog ni nameščen v sistemu, ki ga nameravate uporabiti kot strežnik za centralizirano beleženje, izdajte naslednji ukaz za namestitev paketa rsyslog.

# yum install rsyslog

3. Prvi korak, ki ga moramo narediti v sistemu, da lahko demon rsyslog konfiguriramo kot centralni dnevniški strežnik, da lahko prejema dnevniška sporočila za zunanje odjemalce, je odpiranje in urejanje glavne konfiguracije z vašim najljubšim urejevalnikom besedil datoteka iz /etc/rsyslog.conf, kot je predstavljeno v spodnjem odlomku.

# vi /etc/rsyslog.conf

V glavni konfiguracijski datoteki rsyslog poiščite in razkomentirajte naslednje vrstice (odstranite znak hashtag # na začetku vrstice), da zagotovite sprejem UDP transporta na strežnik Rsyslog prek vrat 514. UDP je standardni protokol, ki ga Rsyslog uporablja za prenos dnevnikov.

$ModLoad imudp 
$UDPServerRun 514

4. UDP protokol nima TCP režijskih stroškov, zaradi česar je prenos podatkov hitrejši od protokola TCP. Po drugi strani protokol UDP ne zagotavlja zanesljivosti poslanih podatkov.

Če pa morate za sprejem dnevnika uporabiti protokol TCP, morate poiskati in razkomentirati naslednje vrstice iz datoteke /etc/rsyslog.conf, da konfigurirate demon Rsyslog za vezavo in poslušanje vtičnice TCP na vratih 514. Vtičnice za sprejem TCP in UDP za sprejem je mogoče hkrati konfigurirati na strežniku Rsyslog.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. Na naslednjem koraku datoteke še ne zaprite, ustvarite novo predlogo, ki bo uporabljena za prejemanje sporočil na daljavo. Ta predloga bo lokalnemu strežniku Rsyslog naročila, kam naj shrani prejeta sporočila, ki jih pošljejo odjemalci omrežnega sistema syslog. Predlogo je treba dodati pred začetkom bloka GLOBAL DIRECTIVES, kot je prikazano v spodnjem odlomku.

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

Zgornja direktiva $template RemoteLogs daje naročniku demonu Rsyslog, da zbere in zapiše vsa prejeta sporočila dnevnika v različne datoteke na podlagi imena odjemalskega računalnika in oddaljenega odjemalca (aplikacije), ki je ustvaril sporočila na podlagi opredeljenih lastnosti, predstavljenih v konfiguraciji predloge : %HOSTNAME %in %PROGRAMNAME %.

Vse te dnevniške datoteke bodo zapisane v lokalni datotečni sistem v posebno datoteko, imenovano po imenu gostitelja odjemalskega računalnika, in shranjene v/var/log/imeniku.

Pravilo & ~ preusmeritve naroča lokalnemu strežniku Rsyslog, naj nadalje ustavi obdelavo prejetega dnevnika in jih zavrže (ne zapisuje jih v notranje dnevniške datoteke).

Ime RemoteLogs je poljubno ime, dano tej direktivi predloge. Uporabite lahko katero koli ime, ki se vam zdi najbolj primerno za vašo predlogo.

Če želite vsa prejeta sporočila odjemalcev zapisati v eno datoteko dnevnika, imenovano po naslovu IP oddaljenega odjemalca, ne da bi filtrirali objekt, ki je ustvaril sporočilo, uporabite spodnji odlomek.

$template FromIp,"/var/log/%FROMHOST-IP%.log" 
. ?FromIp & ~ 

Še en primer predloge, v kateri bodo vsa sporočila z zastavico avtodomov zabeležena v predlogo z imenom »TmplAuth«.

$template TmplAuth, "/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
authpriv.*   ?TmplAuth

Spodaj je odlomek iz definicije predloge s strežnika Rsyslog 7:

template(name="TmplMsg" type="string"
         string="/var/log/remote/msg/%HOSTNAME%/%PROGRAMNAME:::secpath-replace%.log"
        )

Zgornji odlomek predloge je lahko zapisan tudi kot:

template(name="TmplMsg" type="list") {
    constant(value="/var/log/remote/msg/")
    property(name="hostname")
    constant(value="/")
    property(name="programname" SecurePath="replace")
    constant(value=".log")
    }

Če želite napisati zapletene predloge Rsyslog, preberite priročnik za konfiguracijsko datoteko Rsyslog z izdajo ukaza man rsyslog.conf ali si oglejte spletno dokumentacijo Rsyslog.

6. Ko uredite konfiguracijsko datoteko Rsyslog z lastnimi nastavitvami, kot je razloženo zgoraj, znova zaženite demon Rsyslog, da boste lahko uveljavili spremembe z naslednjim ukazom:

# service rsyslog restart

7. Do zdaj bi moral biti strežnik Rsyslog konfiguriran za delovanje centraliziranega dnevniškega strežnika in snemanje sporočil odjemalcev syslog. Če želite preveriti omrežne vtičnice Rsyslog, zaženite ukaz netstat s korenskimi pravicami in uporabite grep za filtriranje niza rsyslog.

# netstat -tulpn | grep rsyslog 

8. Če imate v CentOS/RHEL 7 omogočen SELinux, z naslednjim ukazom nastavite SELinux, da dovoli rsyslog promet, odvisno od vrste omrežne vtičnice.

# semanage -a -t syslogd_port_t -p udp 514
# semanage -a -t syslogd_port_t -p tcp 514 

9. Če je požarni zid omogočen in aktiven, zaženite spodnji ukaz, da dodate potrebna pravila za odpiranje vrat rsyslog v Firewalldu.

# firewall-cmd --permanent --add-port=514/tcp
# firewall-cmd --permanent --add-port=514/udp
# firewall-cmd –reload

To je vse! Rsyslog je zdaj konfiguriran v strežniškem načinu in lahko centralizira dnevnike oddaljenih odjemalcev. V naslednjem članku bomo videli, kako konfigurirati odjemalca Rsyslog na strežniku CentOS/RHEL 7.

Z uporabo strežnika Rsyslog kot osrednje nadzorne točke za oddaljena dnevniška sporočila lahko pregledate dnevniške datoteke in lažje opazujete zdravstveno stanje odjemalcev ali odpravljate težave odjemalca, ko se sistemi sesujejo ali so pod nekakšnim napadom.