Kuidas luua tsentraliseeritud logiserver Rsyslogiga teenuses CentOS/RHEL 7


Selleks, et süsteemiadministraator CentOS 7 või RHEL 7 serverisüsteemis probleemi tuvastaks või tõrkeotsinguks peaks, peab süsteem teadma ja vaatama süsteemis kindlas ajavahemikus aset leidnud sündmusi süsteemis/var salvestatud logifailidest/logi kataloog.

Linuxi masina syslogiserver võib toimida keskse jälgimispunktina võrgus, kus kõik serverid, võrguseadmed, ruuterid, kommutaatorid ja enamik nende siseteenuseid, mis genereerivad logisid, olenemata sellest, kas need on seotud konkreetse siseprobleemiga või lihtsalt informatiivsed sõnumid, saavad oma logisid saata .

CentOS/RHEL 7 süsteemis on peamine eelinstallitud logiserver Rsyslogi deemon, millele järgneb Systemd Journal Daemon (journald).

Rsyslogi server on ehitatud kliendi/serveri arhitektuuriteenusena ja suudab mõlemad rollid samaaegselt saavutada. See võib töötada serverina ja koguda kõiki teiste võrgus olevate seadmete edastatud logisid või töötada kliendina, saates kõik sisemise süsteemi sündmused, mis on logitud kaugpunkti syslogiserverisse.

Kui rsyslog on konfigureeritud kliendina, saab logisid salvestada lokaalselt kohaliku failisüsteemi failidesse või neid saab saata kaugjuhtimise teel, mitte kirjutada masinasse salvestatud failidesse või kirjutada lokaalselt sündmuste logifaile ja saata need kaugsüslogiserverisse aadressil samal ajal.

Syslogi server haldab mis tahes logisõnumit järgmise skeemi abil:

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

A. Rajatise või tüübi andmeid esindavad sisemised süsteemiprotsessid, mis genereerivad sõnumeid. Linuxis on logisid genereerivad sisemised protsessid (rajatised) standardiseeritud järgmiselt:

  • auth = autentimisprotsesside (sisselogimise) abil loodud sõnumid.
  • cron = ajastatud protsesside genereeritud sõnumid (crontab).
  • deemon = deemonite (siseteenused) loodud sõnumid.
  • kernel = Linuxi tuuma enda loodud sõnumid.
  • mail = meiliserveri loodud sõnumid.
  • syslog = rsyslogi deemoni enda loodud sõnumid.
  • lpr = kohalike printerite või prindiserveri loodud sõnumid.
  • local0 - local7 = administraatori määratletud kohandatud sõnumid (local7 määratakse tavaliselt Cisco või Windowsi jaoks).

B. Samuti on standardiseeritud prioriteetsuse (raskusastme) tasemed. Igale prioriteedile määratakse standardne lühend ja number, nagu allpool kirjeldatud. Seitsmes prioriteet on kõigi kõrgem tase.

  • emerg = hädaolukord - 0
  • alert = Märguanded - 1
  • err = vead - 3
  • hoiatama = hoiatused - 4
  • teade = teatis - 5
  • info = teave - 6
  • silumine = silumine - 7

Spetsiaalsed Rsyslogi märksõnad:

  • * = kõik võimalused või prioriteedid
  • mitte ühtegi = rajatistel pole määratud prioriteete. Näiteks: mail.none

C. Syslogi skeemi kolmandat osa esindab sihtkohadirektiiv. Rsyslogi deemon võib saata logisõnumeid, mis kirjutatakse kohalikku failisüsteemi faili (enamasti faili kataloogis/var/log/kataloog) või suunatakse mõnda teise kohalikku protsessi või saadetakse kohalikule kasutajakonsoolile (stdoutile) või saatke sõnum kaugsüsilogi serverisse TCP/UDP protokolli kaudu või visake sõnum isegi saidile/dev/null.

CentOS/RHEL 7 konfigureerimiseks keskseks logiserveriks peame kõigepealt kontrollima ja tagama, et partitsioon/var, kuhu kogu logifail on salvestatud, oleks piisavalt suur (vähemalt paar GB), et oleks võimalik kõiki teiste seadmete saadetud logifailid. Hea otsus on kataloogi/var/log/ühendamiseks kasutada eraldi draivi (LVM, RAID).

  1. CentOS 7.3 installiprotseduur
  2. RHEL 7.3 Paigaldusprotseduur

Kuidas seadistada Rsyslog CentOS/RHEL 7 Serveris

1. Vaikimisi installitakse Rsyslogi teenus automaatselt ja see peaks töötama CentOS/RHEL 7-s. Selleks, et kontrollida, kas deemon on süsteemis käivitatud, väljastage järgmine käsu root-õigustega.

# systemctl status rsyslog.service

Kui teenus ei tööta vaikimisi, käivitage rsyslogi deemoni käivitamiseks järgmine käsk.

# systemctl start rsyslog.service

2. Kui rsyslogi pakett pole installitud süsteemi, mida kavatsete kasutada tsentraliseeritud logimisserverina, väljastage rsyslogi paketi installimiseks järgmine käsk.

# yum install rsyslog

3. Esimene samm, mida peame süsteemis tegema, et konfigureerida rsyslogi deemon tsentraliseeritud logiserveriks, et see saaks väliste klientide jaoks logisõnumeid vastu võtta, on avada ja redigeerida oma lemmiktekstiredaktori abil põhikonfiguratsioon fail /etc/rsyslog.conf, nagu on näidatud allpool väljavõttes.

# vi /etc/rsyslog.conf

Rsyslogi peamises konfiguratsioonifailis otsige järgmisi ridu ja eemaldage kommentaarid (eemaldage märge rida alguses # ), et pakkuda UDP transpordi vastuvõtt Rsyslogi serverisse 514 pordi kaudu. UDP on standardprotokoll, mida Rsyslog logi edastamiseks kasutab.

$ModLoad imudp 
$UDPServerRun 514

4. UDP-protokollil ei ole TCP-üldkulusid, mis muudavad selle andmete edastamiseks kiiremaks kui TCP-protokoll. Teiselt poolt ei taga UDP-protokoll edastatud andmete usaldusväärsust.

Kui peate logi vastuvõtmiseks kasutama TCP-protokolli, peate failis /etc/rsyslog.conf järgmised read otsima ja kommenteerima, et konfigureerida Rsyslogi deemon siduma ja kuulama TCP-soklit 514-pordil. TCP- ja UDP-vastuvõtupunktide kuulamise pesasid saab konfigureerida samaaegselt Rsyslogi serveris.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. Järgmisel etapil ärge faili veel sulgege, looge uus mall, mida kasutatakse kaugsõnumite vastuvõtmiseks. See mall juhendab kohalikku Rsyslogi serverit, kuhu salvestada vastuvõetud sõnumid, mille on saatnud syslogivõrgu kliendid. Mall tuleb lisada enne ploki GLOBAL DIRECTIVES algust, nagu on näidatud allpool väljavõttes.

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

Ülaltoodud $template RemoteLogsi direktiiv annab Rsyslogi deemonile korralduse koguda ja kirjutada kõik vastuvõetud logisõnumid erinevatesse failidesse, lähtudes kliendimasina nimest ja kaugkliendi võimalusest (rakendus), mis genereeris mallide konfiguratsioonis määratletud atribuutide põhjal sõnumid. :% HOSTNAME% ja% PROGRAMNAME%.

Kõik need logifailid kirjutatakse kohalikku failisüsteemi spetsiaalsesse faili, mille nimi on kliendimasina hosti nimi ja mis salvestatakse kataloogi/var/log/directory.

& ~ Ümbersuunamisreegel annab kohalikule Rsyslogi serverile korralduse lõpetada vastuvõetud logisõnumi töötlemine ja sõnumid visata (mitte kirjutada neid sisemistesse logifailidesse).

RemoteLogsi nimi on sellele malldirektiivile meelevaldne nimi. Võite kasutada mis tahes nime, mille leiate oma mallile kõige paremini sobivaks.

Kasutage allolevat väljavõtet, et kirjutada kõik klientidelt saadud sõnumid ühte kaugfaili IP-aadressi järgi nimetatud logifaili.

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

Veel üks näide mallist, kus kõik autentimisvõimaluse lipuga sõnumid logitakse malli nimega „TmplAuth“.

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

Allpool on väljavõte vormi definitsioonist Rsyslog 7 serverist:

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

Ülaltoodud malli väljavõtte saab kirjutada ka järgmiselt:

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

Komplekssete Rsyslogi mallide kirjutamiseks lugege Rsyslogi konfiguratsioonifaili käsiraamatut, andes välja käsu man rsyslog.conf või vaadake Rsyslogi veebidokumentatsiooni.

6. Kui olete Rsyslogi konfiguratsioonifaili oma seadetega redigeerinud, nagu ülalpool selgitatud, taaskäivitage Rsyslogi deemon, et muudatusi rakendada, väljastades järgmise käsu:

# service rsyslog restart

7. Nüüdseks peaks Rsyslogi server olema konfigureeritud toimima tsentraliseeritud logiserveriga ja salvestama sõnumeid syslog-klientidelt. Rsyslogi võrgupesade kontrollimiseks käivitage käsk netstat juurõigustega ja kasutage rsyslogi stringi filtreerimiseks grepi.

# netstat -tulpn | grep rsyslog 

8. Kui teil on CentOS/RHEL 7-s lubatud SELinux, väljastage järgmine käsk SELinuksi seadistamiseks rsyslogi liikluse lubamiseks sõltuvalt võrgupesa tüübist.

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

9. Kui tulemüür on lubatud ja aktiivne, käivitage järgmine käsk, et lisada vajalikud reeglid rsyslogi pordide avamiseks tulemüüris.

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

See on kõik! Rsyslog on nüüd konfigureeritud serverirežiimis ja suudab tsentraliseerida kaugklientide logisid. Järgmises artiklis näeme, kuidas konfigureerida Rsyslogi klient CentOS/RHEL 7 serveris.

Rsyslogi serveri kasutamine kauglogisõnumite keskse jälgimispunktina võimaldab teil logifaile kontrollida ja hõlpsamalt jälgida klientide tervislikku seisundit või siluda kliendi probleeme, kui süsteemid kokku jooksevad või on rünnaku all.