Keskitetyn lokipalvelimen luominen Rsyslogilla CentOS/RHEL 7:ssä


Jotta järjestelmänvalvoja voi tunnistaa tai tehdä vianmäärityksen CentOS 7- tai RHEL 7 -palvelinjärjestelmässä, sen on tiedettävä ja tarkasteltava tietyssä järjestelmässä tapahtuneita tapahtumia. aikajakso järjestelmään /var/log-hakemistoon tallennetuista lokitiedostoista.

Linux-koneen syslog-palvelin voi toimia keskeisenä valvontapisteenä verkon yli, jonne kaikki palvelimet, verkkolaitteet, reitittimet, kytkimet ja useimmat niiden sisäiset palvelut, jotka luovat lokeja, voivat lähettää lokinsa joko tiettyyn sisäiseen ongelmaan tai vain informatiivisiin viesteihin. .

CentOS/RHEL 7 -järjestelmässä Rsyslog -daemon on esiasennettu päälokipalvelin, jota seuraa Systemd Journal Daemon (journald vahva>).

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

Kun rsyslog on määritetty asiakkaaksi, lokit voidaan tallentaa paikallisesti tiedostoihin paikallisessa tiedostojärjestelmässä tai ne voidaan lähettää etäyhteydellä sen sijaan, että ne kirjoitettaisiin koneelle tallennettuihin tiedostoihin tai kirjoitettaisiin tapahtumalokitiedostoja paikallisesti ja lähetettäisiin ne syslog-etäpalvelimelle osoitteessa samaan aikaan.

Syslog-palvelin käyttää mitä tahansa lokiviestejä seuraavan kaavan mukaan:

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

V. Laite tai tyyppitiedot edustavat viestit luovat sisäiset järjestelmäprosessit. Linuxissa lokeja luovat sisäiset prosessit (tilat) on standardoitu seuraavasti:

  • auth = todennusprosessien (sisäänkirjautuminen) luomat viestit.
  • cron= ajoitettujen prosessien luomat viestit (crontab).
  • daemon = demonien (sisäiset palvelut) luomat viestit.
  • ydin = itse Linux-ytimen luomat viestit.
  • posti = sähköpostipalvelimen luomat viestit.
  • syslog = rsyslog-daemonin itsensä luomat viestit.
  • lpr = paikallisten tulostimien tai tulostuspalvelimen luomat viestit.
  • local0 – local7 = järjestelmänvalvojan määrittämät mukautetut viestit (paikallinen7 on yleensä määritetty Ciscolle tai Windowsille).

B. Myös prioriteetti (vakavuus) on standardoitu. Jokainen prioriteetti on määritetty vakiolyhenteellä ja numerolla alla kuvatulla tavalla. Seitsemäs prioriteetti on korkeampi taso kaikista.

  • emerg = hätätilanne – 0
  • hälytys = Hälytykset – 1
  • err = Virheet – 3
  • varoita = Varoitukset – 4
  • ilmoitus = Ilmoitus – 5
  • info = Tiedot – 6
  • debug = Virheenkorjaus – 7

Erityiset Rsyslog-avainsanat:

  • *=kaikki tilat tai prioriteetit
  • ei mitään=tiloissa ei ole asetettu prioriteetteja Esim: mail.none

C. Syslog-skeeman kolmatta osaa edustaa kohde-direktiivi. Rsyslog-daemon voi lähettää lokiviestejä kirjoitettaviksi paikallisessa tiedostojärjestelmässä olevaan tiedostoon (useimmiten /var/log/-hakemiston tiedostoon) tai ohjaamaan toiseen paikalliseen prosessiin tai lähetettäväksi paikalliseen käyttäjäkonsoliin (stdoutiin) tai lähetä viesti etäsyslog-palvelimelle TCP/UDP-protokollan kautta tai jopa hylkää viesti osoitteeseen /dev/null.

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

Vaatimukset

  1. CentOS 7.3:n asennusmenettely
  2. RHEL 7.3 Asennusmenettely

Kuinka määrittää Rsyslog CentOS/RHEL 7 -palvelimessa

1. Oletuksena Rsyslog-palvelu asennetaan automaattisesti, ja sen pitäisi toimia CentOS/RHEL 7:ssä. Voit tarkistaa, onko daemon käynnistetty järjestelmässä, antamalla seuraava komento pääkäyttäjän oikeuksilla.

systemctl status rsyslog.service

Jos palvelu ei ole oletuksena käynnissä, suorita alla oleva komento käynnistääksesi rsyslog-daemonin.

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ä määrittääksemme rsyslog-daemonin keskitetyksi lokipalvelimeksi, jotta se voi vastaanottaa lokiviestejä ulkoisille asiakkaille, on avata ja muokata suosikkitekstieditori, pääasetustiedosto tiedostosta /etc/rsyslog.conf, kuten alla olevassa otteessa esitetään.

vi /etc/rsyslog.conf

Etsi rsyslogin päämääritystiedostosta seuraavat rivit ja poista kommentit (poista hashtag # -merkki rivin alussa), jotta voit tarjota UDP-siirtovastaanoton Rsyslog-palvelimelle 514:n kautta. portti. UDP on vakioprotokolla, jota Rsyslog käyttää lokien lähettämiseen.

$ModLoad imudp 
$UDPServerRun 514

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

Jos kuitenkin haluat käyttää TCP-protokollaa lokien vastaanottamiseen, sinun on etsittävä seuraavat rivit /etc/rsyslog.conf-tiedostosta ja poistettava kommentit, jotta Rsyslog-daemon voidaan määrittää sitomaan ja kuuntelemaan TCP-vastaketta 514:ssä. portti. TCP- ja UDP-kuunteluliittimet vastaanottoa varten voidaan määrittää Rsyslog-palvelimelle samanaikaisesti.

$ModLoad imtcp 
$InputTCPServerRun 514 

5. Älä sulje tiedostoa vielä seuraavassa vaiheessa, vaan luo uusi malli, jota käytetään etäviestien vastaanottamiseen. Tämä malli opastaa paikallista Rsyslog-palvelinta minne tallentaa syslog-verkkoasiakkaiden lähettämät vastaanotetut viestit. Malli on lisättävä ennen GLOBAL DIRECTIVES -lohkon alkua alla olevan otteen mukaisesti.

$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 asiakaskoneen nimen ja etäasiakastoiminnon (sovelluksen) perusteella, joka loi viestit määritetyt ominaisuudet ovat mallin määrityksissä: %HOSTNAME% ja %PROGRAMNAME%.

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

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

RemoteLogs-nimi on mielivaltainen nimi, joka on annettu tälle mallikäskylle. Voit käyttää mitä tahansa nimeä, joka sopii parhaiten mallillesi.

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

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

Toinen esimerkki mallista, jossa kaikki viestit, joissa on todennusmahdollisuus, kirjataan malliin nimeltä TmplAuth.

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

Alla on ote Rsyslog 7 -palvelimen mallin määritelmästä:

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ääritystiedoston käyttöopas antamalla man rsyslog.conf-komento tai tutustu Rsyslogin online-dokumentaatioon.

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

service rsyslog restart

7. Tähän mennessä Rsyslog-palvelimen pitäisi olla määritetty toimimaan keskitettynä lokipalvelimena ja tallentamaan viestejä syslog-asiakkailta. Vahvista Rsyslog-verkkopistokkeet suorittamalla netstat-komento pääkäyttäjän oikeuksilla ja suodata rsyslog-merkkijono käyttämällä grep-komentoa.

netstat -tulpn | grep rsyslog 

8. Jos olet ottanut SELinuxin käyttöön CentOS/RHEL 7:ssä, määritä SELinux sallimaan rsyslog-liikenne verkkopistorasian tyypistä riippuen antamalla seuraava komento.

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 avaamiseen Firewallissa.

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 se voi keskittää etäasiakkaiden lokit. Seuraavassa artikkelissa näemme kuinka Rsyslog-asiakas määritetään CentOS/RHEL 7 -palvelimella.

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