Kaip sukurti centralizuotą žurnalo serverį naudojant „Rsyslog“ „CentOS/RHEL 7“.


Kad sistemos administratorius galėtų nustatyti arba pašalinti problemą CentOS 7 arba RHEL 7 serverio sistemoje, jis turi žinoti ir peržiūrėti įvykius, kurie įvyko sistemoje konkrečioje sistemoje. laikotarpį iš žurnalo failų, saugomų sistemoje /var/log kataloge.

Sistemos žurnalo serveris Linux kompiuteryje gali veikti kaip centrinis stebėjimo taškas tinkle, kuriame visi serveriai, tinklo įrenginiai, maršrutizatoriai, komutatoriai ir dauguma jų vidinių paslaugų, kurios generuoja žurnalus, nesvarbu, ar tai susiję su konkrečia vidine problema, ar tik informaciniais pranešimais, gali siųsti savo žurnalus. .

Sistemoje CentOS/RHEL 7Rsyslog daemonas yra iš anksto įdiegtas pagrindinis žurnalo serveris, po kurio seka Systemd Journal Daemon (žurnalas).

Rsyslog serveris sukurtas kaip kliento/serverio architektūros paslauga ir gali atlikti abu vaidmenis vienu metu. Jis gali veikti kaip serveris ir rinkti visus žurnalus, kuriuos perduoda kiti tinklo įrenginiai, arba gali veikti kaip klientas, siųsdamas visus vidinius sistemos įvykius, užregistruotus nuotoliniam galutinio taško syslog serveriui.

Kai rsyslog sukonfigūruotas kaip klientas, žurnalai gali būti saugomi vietoje failuose vietinėje failų sistemoje arba gali būti siunčiami nuotoliniu būdu, o ne rašyti į kompiuteryje saugomus failus arba rašyti įvykių žurnalo failus vietoje ir siųsti juos į nuotolinį syslog serverį adresu tuo pačiu metu.

„Syslog“ serveris valdo bet kokį žurnalo pranešimą pagal šią schemą:

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

A. Įrenginio arba tipo duomenis pateikia vidiniai sistemos procesai, generuojantys pranešimus. „Linux“ vidiniai procesai (priemonės), kurie generuoja žurnalus, yra standartizuoti taip:

  • auth = pranešimai, sukurti naudojant autentifikavimo procesus (prisijungimas).
  • cron= suplanuotų procesų sugeneruoti pranešimai (crontab).
  • demonas = demonų (vidinių paslaugų) sugeneruoti pranešimai.
  • branduolis = pranešimai, sukurti paties „Linux“ branduolio.
  • paštas = pašto serverio sugeneruoti pranešimai.
  • syslog = pranešimai, sukurti paties rsyslog demono.
  • lpr = vietinių spausdintuvų arba spausdinimo serverio sugeneruoti pranešimai.
  • local0 – local7 = priskirti pranešimai, kuriuos nustato administratorius (local7 paprastai priskiriamas „Cisco“ arba „Windows“).

B. Prioriteto (sunkumo) lygiai taip pat yra standartizuoti. Kiekvienam prioritetui priskiriama standartinė santrumpa ir skaičius, kaip aprašyta toliau. 7 prioritetas yra aukštesnis visų lygis.

  • emerg = avarinė padėtis – 0
  • alert = įspėjimai – 1
  • err = Klaidos – 3
  • įspėti = Įspėjimai – 4
  • pranešimas = pranešimas – 5
  • informacija = Informacija – 6
  • derinimas = Derinimas – 7

Specialūs Rsyslog raktiniai žodžiai:

  • *=visos priemonės arba prioritetai
  • nėra=patalpos neturi prioritetų, pvz.: mail.none

C. Trečiąją sistemos žurnalo schemos dalį nurodo paskirties vieta direktyva. Rsyslog demonas gali siųsti žurnalo pranešimus, kurie turi būti įrašyti į failą vietinėje failų sistemoje (dažniausiai į failą kataloge /var/log/) arba perkelti į kitą vietinį procesą arba išsiųsti į vietinio vartotojo konsolėje (į stdout) arba nusiųskite pranešimą į nuotolinį syslog serverį per TCP/UDP protokolą arba net išmeskite pranešimą į /dev/null.

Norėdami sukonfigūruoti CentOS/RHEL 7 kaip centrinį žurnalo serverį, pirmiausia turime patikrinti ir užtikrinti, kad /var skirstinys, kuriame įrašomas visas žurnalo failas, yra pakankamai didelis ( mažiausiai kelis GB), kad būtų galima išsaugoti visus žurnalo failus, kuriuos siųs kiti įrenginiai. Geras sprendimas naudoti atskirą diską (LVM, RAID) katalogui /var/log/ prijungti.

Reikalavimai

  1. CentOS 7.3 diegimo procedūra
  2. RHEL 7.3 Diegimo procedūra

Kaip sukonfigūruoti „Rsyslog“ „CentOS/RHEL 7“ serveryje

1. Pagal numatytuosius nustatymus paslauga Rsyslog įdiegiama automatiškai ir turėtų veikti CentOS/RHEL 7. Norėdami patikrinti, ar sistemoje demonas paleistas, išduokite šią komandą su root teisėmis.

systemctl status rsyslog.service

Jei paslauga pagal numatytuosius nustatymus neveikia, vykdykite toliau pateiktą komandą, kad paleistumėte rsyslog demoną.

systemctl start rsyslog.service

2. Jei rsyslog paketas neįdiegtas sistemoje, kurią ketinate naudoti kaip centralizuotą registravimo serverį, išduokite šią komandą, kad įdiegtumėte rsyslog paketą.

yum install rsyslog

3. Pirmas veiksmas, kurį turime atlikti sistemoje, norėdami sukonfigūruoti rsyslog demoną kaip centralizuotą žurnalo serverį, kad jis galėtų gauti žurnalo pranešimus išoriniams klientams, yra atidaryti ir redaguoti naudojant mėgstamiausia teksto rengyklė, pagrindinis konfigūracijos failas iš /etc/rsyslog.conf, kaip parodyta toliau pateiktoje ištraukoje.

vi /etc/rsyslog.conf

Pagrindiniame rsyslog konfigūracijos faile ieškokite toliau nurodytų eilučių ir panaikinkite komentarus (pašalinkite žymą su grotelėmis # ženklą eilutės pradžioje), kad užtikrintumėte UDP perdavimo priėmimą į Rsyslog serverį per 514 uostas. UDP yra standartinis protokolas, naudojamas Rsyslog žurnalo perdavimui.

$ModLoad imudp 
$UDPServerRun 514

4. UDP protokole nėra TCP pridėtinės vertės, todėl duomenys perduodami greičiau nei naudojant TCP protokolą. Kita vertus, UDP protokolas neužtikrina perduodamų duomenų patikimumo.

Tačiau jei jums reikia naudoti TCP protokolą žurnalo gavimui, turite ieškoti ir atšaukti toliau pateiktas eilutes iš failo /etc/rsyslog.conf, kad sukonfigūruotumėte Rsyslog demoną susieti ir klausytis TCP lizdo 514 uostas. TCP ir UDP klausymosi lizdai priėmimui gali būti konfigūruojami Rsyslog serveryje vienu metu.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. Atlikdami kitą veiksmą, dar neuždarykite failo, sukurkite naują šabloną, kuris bus naudojamas nuotoliniams pranešimams gauti. Šis šablonas nurodys vietiniam Rsyslog serveriui, kur išsaugoti gautus pranešimus, kuriuos siunčia syslog tinklo klientai. Šablonas turi būti pridėtas prieš pradedant PASAULINĖS DIREKTYVOS bloką, kaip parodyta toliau pateiktoje ištraukoje.

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

Aukščiau pateikta direktyva $template RemoteLogs nurodo Rsyslog demonui rinkti ir įrašyti visus gautus žurnalo pranešimus į skirtingus failus, remiantis kliento įrenginio pavadinimu ir nuotolinio kliento įrenginiu (programa), sugeneravusia pranešimus pagal apibrėžtos ypatybės pateikiamos šablono konfigūracijoje: %HOSTNAME% ir %PROGRAMNAME%.

Visi šie žurnalo failai bus įrašyti į vietinę failų sistemą į tam skirtą failą, pavadintą pagal kliento kompiuterio pagrindinio kompiuterio pavadinimą ir saugomi /var/log/ kataloge.

Peradresavimo taisyklė & ~ nurodo vietiniam Rsyslog serveriui toliau stabdyti gauto žurnalo pranešimo apdorojimą ir atmesti pranešimus (neįrašyti jų į vidinius žurnalo failus).

Pavadinimas RemoteLogs yra savavališkas pavadinimas, suteiktas šiai šablono direktyvai. Galite naudoti bet kokį pavadinimą, kuris geriausiai tinka jūsų šablonui.

Jei norite įrašyti visus gautus pranešimus iš klientų į vieną žurnalo failą, pavadintą nuotolinio kliento IP adresu, nefiltruojant įrenginio, sukūrusio pranešimą, naudokite toliau pateiktą ištrauką.

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

Kitas šablono pavyzdys, kai visi pranešimai su autentifikavimo priemonės vėliava bus registruojami šablone, pavadintame „TmplAuth“.

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

Žemiau yra šablono apibrėžimo iš Rsyslog 7 serverio ištrauka:

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

Aukščiau pateiktą šablono ištrauką taip pat galima parašyti taip:

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

Norėdami rašyti sudėtingus Rsyslog šablonus, perskaitykite Rsyslog konfigūracijos failo vadovą, išleisdami komandą man rsyslog.conf arba peržiūrėkite Rsyslog internetinę dokumentaciją.

6. Redaguodami Rsyslog konfigūracijos failą naudodami savo nustatymus, kaip paaiškinta anksčiau, iš naujo paleiskite Rsyslog demoną, kad pritaikytumėte pakeitimus, išleisdami šią komandą:

service rsyslog restart

7. Šiuo metu Rsyslog serveris turėtų būti sukonfigūruotas veikti kaip centralizuotas žurnalo serveris ir įrašyti pranešimus iš syslog klientų. Norėdami patikrinti Rsyslog tinklo lizdus, paleiskite komandą netstat su root teisėmis ir naudokite grep, kad filtruotumėte rsyslog eilelę.

netstat -tulpn | grep rsyslog 

8. Jei CentOS/RHEL 7 įgalinote SELinux, išduokite šią komandą, kad sukonfigūruotumėte SELinux leisti rsyslog srautą, atsižvelgiant į tinklo lizdo tipą.

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

9. Jei ugniasienė įjungta ir aktyvi, paleiskite toliau pateiktą komandą, kad pridėtumėte būtinas rsyslog prievadų atidarymo Firewalld taisykles.

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

Tai viskas! Rsyslog dabar sukonfigūruotas serverio režimu ir gali centralizuoti nuotolinių klientų žurnalus. Kitame straipsnyje pamatysime, kaip sukonfigūruoti Rsyslog klientą CentOS/RHEL 7 serveryje.

Naudodami „Rsyslog“ serverį kaip centrinį nuotolinių žurnalų pranešimų stebėjimo tašką, galite patikrinti žurnalo failus ir lengviau stebėti klientų sveikatos būklę arba lengviau derinti kliento problemas, kai sistemos sugenda arba yra ištinkamos kokios nors atakos.