Keskitetyn lokipalvelimen luominen Rsyslogilla CentOS/RHEL 7: ssä


Jotta järjestelmänvalvoja voi tunnistaa CentOS 7- tai RHEL 7 -palvelinjärjestelmän ongelman tai tehdä vianetsinnän, sen on tiedettävä ja tarkasteltava järjestelmässä tietyn ajanjakson aikana tapahtuneita tapahtumia järjestelmään tallennettuista lokitiedostoista./lokihakemisto.

Linux-koneen syslog-palvelin voi toimia keskusvalvontapisteenä verkossa, jossa kaikki lokit tuottavat palvelimet, verkkolaitteet, reitittimet, kytkimet ja suurin osa sisäisistä palveluistaan, riippumatta siitä, liittyvätkö ne tiettyyn sisäiseen ongelmaan vai vain informatiivisiin viesteihin, voivat lähettää lokin .

CentOS/RHEL 7 -järjestelmässä Rsyslog-demoni on ensisijainen esiasennettu lokipalvelin, jota seuraa Systemd Journal Daemon (journald).

Rsyslog-palvelin rakennettuna asiakas/palvelinarkkitehtuuripalveluna ja voi saavuttaa molemmat roolit samanaikaisesti. Se voi toimia palvelimena ja kerätä kaikki verkon muiden laitteiden lähettämät lokit tai se voi toimia asiakkaana lähettämällä kaikki sisäiset järjestelmätapahtumat, jotka on kirjattu päätepisteen etäsyslogipalvelimeen.

Kun rsyslog on määritetty asiakkaaksi, lokit voidaan tallentaa paikallisesti paikallisen tiedostojärjestelmän tiedostoihin tai ne voidaan lähettää etänä eikä kirjoittaa niitä koneelle tallennettuihin tiedostoihin tai kirjoittaa tapahtumalokitiedostoja paikallisesti ja lähettää ne etäsyslogipalvelimelle osoitteessa samaan aikaan.

Syslog-palvelin käyttää mitä tahansa lokiviestiä seuraavalla tavalla:

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

A. Laitoksen tai tyypin tietoja edustavat sisäiset järjestelmän prosessit, jotka luovat sanomat. Linuxissa lokit tuottavat sisäiset prosessit (tilat) standardoidaan seuraavasti:

  • auth = todennusprosessien (sisäänkirjautuminen) luomat viestit.
  • cron = ajoitettujen prosessien luomat viestit (crontab).
  • daemon = deemonien (sisäiset palvelut) luomat viestit.
  • kernel = itse Linux-ytimen luomat viestit.
  • mail = postipalvelimen luomat viestit.
  • syslog = itse rsyslog-daemonin luomat viestit.
  • lpr = paikallisten tulostimien tai tulostuspalvelimen luomat viestit.
  • local0 - local7 = järjestelmänvalvojan määrittelemät mukautetut viestit (local7 on yleensä määritetty Cisco tai Windows).

Myös prioriteettitasot (vakavuusaste) on standardoitu. Jokaiselle prioriteetille on annettu vakiolyhenne ja numero alla kuvatulla tavalla. Seitsemäs prioriteetti on kaikkien korkeampi taso.

  • emerg = hätä - 0
  • hälytys = Hälytykset - 1
  • err = Virheet - 3
  • varoitus = Varoitukset - 4
  • ilmoitus = ilmoitus - 5
  • info = Tiedot - 6
  • debug = virheenkorjaus - 7

Erityiset Rsyslog-avainsanat:

  • * = kaikki tilat tai prioriteetit
  • ei = tiloilla ei ole prioriteetteja, esim. mail.none

C. Syslog-kaavion kolmas osa on kohdedirektiivi. Rsyslog-demoni voi lähettää lokiviestejä kirjoitettavaksi paikallisen tiedostojärjestelmän tiedostoon (enimmäkseen tiedostoon/var/log/hakemistossa) tai lähetettäväksi toiseen paikalliseen prosessiin tai lähetettäväksi paikalliseen käyttäjäkonsoliin (vakioasemaan) tai lähetä viesti etäsyslogipalvelimelle TCP/UDP-protokollan kautta, tai jopa hylkää viesti osoitteeseen/dev/null.

CentOS/RHEL 7: n määrittämiseksi keskitetyksi lokipalvelimeksi meidän on ensin tarkistettava ja varmistettava, että/var-osio, johon kaikki lokitiedostot tallennetaan, on riittävän suuri (vähintään muutama Gt), jotta voimme tallentaa kaikki muiden laitteiden lähettämät lokitiedostot. On hyvä päätös käyttää erillistä asemaa (LVM, RAID) hakemiston/var/log/liittämiseen.

  1. CentOS 7.3 -asennustapa
  2. RHEL 7.3 Asennusmenettely

Kuinka konfiguroida Rsyslog CentOS/RHEL 7 -palvelimessa

1. Oletusarvoisesti Rsyslog-palvelu asennetaan automaattisesti ja sen pitäisi olla käynnissä CentOS/RHEL 7 -palvelussa. Tarkista seuraava komento, jolla on pääkäyttöoikeudet, jotta voidaan käynnistää daemon.

# systemctl status rsyslog.service

Jos palvelu ei ole oletusarvoisesti suoritettu, suorita alla oleva komento käynnistääksesi rsyslog-demonin.

# systemctl start rsyslog.service

2. Jos rsyslog-pakettia ei ole asennettu järjestelmään, jota aiot käyttää keskitettynä lokipalvelimena, asenna rsyslog-paketti antamalla seuraava komento.

# yum install rsyslog

3. Ensimmäinen vaihe, joka meidän on tehtävä järjestelmässä rsyslog-daemonin määrittämiseksi keskitetyksi lokipalvelimeksi, jotta se voi vastaanottaa lokiviestejä ulkoisille asiakkaille, on avata ja muokata suosikkitekstieditoriasi käyttämällä pääasetuksia. tiedosto tiedostosta /etc/rsyslog.conf, kuten alla olevassa otteessa esitetään.

# vi /etc/rsyslog.conf

Etsi rsyslog-pääasetustiedostosta seuraavat rivit ja poista niiden kommentit (poista hashtag # -merkki rivin alusta) UDP-kuljetusvastaanoton tarjoamiseksi Rsyslog-palvelimelle 514-portin kautta. UDP on vakioprotokolla, jota Rsyslog käyttää lokin lähettämiseen.

$ModLoad imudp 
$UDPServerRun 514

4. UDP-protokollalla ei ole TCP-yleiskustannuksia, mikä tekee siitä tiedonsiirron nopeammaksi kuin TCP-protokolla. Toisaalta UDP-protokolla ei takaa lähetetyn datan luotettavuutta.

Jos kuitenkin sinun on käytettävä TCP-protokollaa lokin vastaanottoon, sinun on haettava /etc/rsyslog.conf -tiedostosta seuraavat rivit ja poistettava niiden komento, jotta Rsyslog-daemon voidaan määrittää sitomaan ja kuuntelemaan TCP-liitäntää 514-portissa. TCP- ja UDP-kuuntelupäätteet vastaanottoa varten voidaan määrittää samanaikaisesti Rsyslog-palvelimella.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. Älä sulje tiedostoa seuraavassa vaiheessa, luo uusi malli, jota käytetään etäviestien vastaanottamiseen. Tämä malli opastaa paikallista Rsyslog-palvelinta mihin tallentaa syslog-verkon asiakkaiden lähettämät vastaanotetut viestit. Malli on lisättävä ennen GLOBAL DIRECTIVES -lohkon alkua, kuten alla oleva ote kuvaa.

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

Yllä oleva $template RemoteLogs -direktiivi kehottaa Rsyslog-daemonia keräämään ja kirjoittamaan kaikki vastaanotetut lokiviestit erillisiin tiedostoihin perustuen asiakaskoneen nimeen ja etäasiakaslaitteistoon (sovellus), joka on luonut viestit määriteltyjen ominaisuuksien perusteella mallin kokoonpanossa. :% HOSTNAME% ja% PROGRAMNAME%.

Kaikki nämä lokitiedostot kirjoitetaan paikalliseen tiedostojärjestelmään omistettuun tiedostoon, joka on nimetty asiakaslaitteen isäntänimen mukaan ja tallennetaan hakemistoon/var/log/directory.

& ~ Uudelleenohjaussääntö kehottaa paikallista Rsyslog-palvelinta lopettamaan vastaanotetun lokiviestin käsittelyn ja hylkäämään viestit (älä kirjoita niitä sisäisiin lokitiedostoihin).

RemoteLogs-nimi on tälle mallidirektiiville annettu mielivaltainen nimi. Voit käyttää mitä tahansa nimeä, jonka löydät parhaiten mallillesi.

Jos haluat kirjoittaa kaikki asiakkailta vastaanotetut viestit yhteen lokitiedostoon, joka on nimetty etäasiakkaan IP-osoitteen mukaan, suodattamatta viestin luonut laitos, käytä alla olevaa otetta.

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

Toinen esimerkki mallista, jossa kaikki todennustoiminnon lipun sisältävät viestit kirjataan malliin nimeltä TmplAuth.

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

Alla on ote lomakemallin määrittelystä Rsyslog 7 -palvelimelta:

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

Yllä oleva malliote voidaan kirjoittaa myös seuraavasti:

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

Jos haluat kirjoittaa monimutkaisia Rsyslog-malleja, lue Rsyslog-määritystiedostojen käsikirja antamalla man rsyslog.conf -komento tai tutustu Rsyslogin online-ohjeisiin.

6. Kun olet muokannut Rsyslog-määritystiedostoa omilla asetuksillasi yllä kuvatulla tavalla, käynnistä Rsyslog-demoni uudelleen, jotta muutokset voidaan ottaa käyttöön antamalla seuraava komento:

# service rsyslog restart

7. Tähän mennessä Rsyslog-palvelin on määritettävä toimimaan keskitetyllä lokipalvelimella ja tallentamaan viestejä syslog-asiakkailta. Varmistaaksesi Rsyslog-verkkopistorasiat, suorita netstat-komento pääkäyttöoikeuksilla ja suodata rsyslog-merkkijono grepillä.

# netstat -tulpn | grep rsyslog 

8. Jos SELinux on käytössä CentOS/RHEL 7: ssä, anna seuraava komento määrittääksesi SELinuxin sallimaan rsyslog-liikenteen verkkopistoketyypistä riippuen.

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

9. Jos palomuuri on käytössä ja aktiivinen, suorita alla oleva komento lisätäksesi tarvittavat säännöt rsyslog-porttien avaamiseksi Firewalldissa.

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

Siinä kaikki! Rsyslog on nyt määritetty palvelintilassa ja voi keskittää lokit etäasiakkailta. Seuraavassa artikkelissa nähdään, miten Rsyslog-asiakasohjelma määritetään CentOS/RHEL 7 -palvelimessa.

Käyttämällä Rsyslog-palvelinta etälokiviestien keskusvalvontapisteenä voit tarkastaa lokitiedostot ja tarkkailla asiakkaiden terveydentilaa tai selvittää asiakkaan ongelmia helpommin, kun järjestelmät kaatuvat tai joutuvat jonkinlaisen hyökkäyksen kohteeksi.