Rsyslog kasutamine operatsioonisüsteemiga Debian

Allikas: Imre kasutab arvutit
Redaktsioon seisuga 30. juuli 2026, kell 03:09 kasutajalt Imre (arutelu | kaastöö) (Uus lehekülg: '===Sissejuhatus=== Rsyslog http://www.rsyslog.com/ v. 8.4 on Debian v. 8 Jessie operatsioonisüsteemis vaikimisi logimise tarkvara. Kui tarkvara mingil põhjusel süsteemis ei ole, nt süsteem moodustati Debian Etch -> Lenny uuendamisel, siis saab Rsyslogi paigaldada öeldes # apt-get install rsyslog rsyslog-doc Rsyslogil on sellised omadused * tcp/udp tugi * oskab kasutada sql andmebaasi (nt PostgreSQL, Oracle, MySQL) * failisüsteemi puhverdamine (nt juhtumil kui and...')
(erin) ←Vanem redaktsioon | Viimane redaktsiooni (erin) | Uuem redaktsioon→ (erin)
Mine navigeerimisribaleMine otsikasti

Sissejuhatus

Rsyslog http://www.rsyslog.com/ v. 8.4 on Debian v. 8 Jessie operatsioonisüsteemis vaikimisi logimise tarkvara. Kui tarkvara mingil põhjusel süsteemis ei ole, nt süsteem moodustati Debian Etch -> Lenny uuendamisel, siis saab Rsyslogi paigaldada öeldes

# apt-get install rsyslog rsyslog-doc

Rsyslogil on sellised omadused

  • tcp/udp tugi
  • oskab kasutada sql andmebaasi (nt PostgreSQL, Oracle, MySQL)
  • failisüsteemi puhverdamine (nt juhtumil kui andmebaasi ei saa mingil põhjusel kirjutada)
  • RELP protokolli tugi

Tarkvara juhib seadistusfail /etc/rsyslogd.conf, mis on süntaksiliselt tagasiühilduv seni Debianis kasutuses olnud Syslog tarkvara seadistusfailiga. Tundub, et uuemal ajal tuleb arvestada, millist rsyslog versiooni kasutatakse

  • rsyslog v. 3 - Debian v. 5 Lenny
  • rsyslog v. 5 - Debian v. 7 Wheezy
  • rsyslog v. 8 - Debian v. 8 Jessie

Logiserveri kasutamine

Reeglina soovitatakse seadistada arvutid logima võrgus töötavasse logiserverisse, nt turvalisuse ja logitöötluse kaalutlustel

   _____   logiserver
  |     |  :514/tcp
  |_____|  :514/udp
     |
     |
    -|---------|----------|----....---|--
               |          |           |
             __|__      __|__       __|__
            |     |    |     |     |     |
            |_____|    |_____|     |_____|
              smtp       www         dns

kus

  • logiseveri kuulab ühedusi oma 514/tcp ja 514/udp soketitel
  • smtp, www ja dns arvutid logivad oma andmed logiserverisse

Rsyslogi käivitamisel tuleb arvestada, kas protsess töötab logiseverina või logiserveri kliendina.

  • Logiserveris tuleb öelda, et teenindatakse kliente
# cat /etc/rsyslog.conf
..
# provides UDP syslog reception
$ModLoad imudp
$UDPServerRun 514
# provides TCP syslog reception
$ModLoad imtcp
$InputTCPServerRun 514
  • Logiserveri kliendis on oluline näidata logiserveri asukoht (kusjuures @192.168.1.247 kopeerib logi üle UDP), praktiliselt piisab järgnev rida lisada vaikimisi toodud seadistusfaili lõppu, tulemusena logitakse endiselt ja lisaks võrku
*.*     @@192.168.1.247

SSL/TLS ühenduse kasutamine

Eesmärgiks on saavutada olukord, kus

  • serveri ei võtaks kelleltki peale seadistatud klientide logi vastu
  • kliendid ei saaks saata kellelegi peale seadistatud serveri logi

SSL/TLS toe lisamiseks tuleb süsteemi paigaldada pakett rsyslog-gnutls

# apt-get install rsyslog-gnutls

Tulemusena tekib failisüsteemi muu hulgas teek

/usr/lib/rsyslog/lmnsd_gtls.so

Serveri seadistamine

Serveris võiks seadistuse koondada faili /etc/rsyslog.d/tls.conf

# cat /etc/rsyslog.d/tls.conf
# make gtls driver the default
$DefaultNetstreamDriver gtls
# certificate files
$DefaultNetstreamDriverCAFile /etc/ssl/certs/auul-ca-chain.pem
$DefaultNetstreamDriverCertFile /etc/ssl/certs/rsyslog.loomaaed.tartu.ee.crt
$DefaultNetstreamDriverKeyFile /etc/ssl/private/rsyslog.loomaaed.tartu.ee.key
$InputTCPServerStreamDriverAuthMode x509/name
$InputTCPServerStreamDriverPermittedPeer *.loomaaed.tartu.ee
$InputTCPServerStreamDriverMode 1 # run driver in TLS-only mode
$InputTCPServerRun 10514 # start up listener at port 10514

kus

  • $DefaultNetstreamDriver gtls - lülitab TLS mooduli sisse
  • näidatakse, millist CA ahelat, sertifikaati ja võtit server kasutab
  • $InputTCPServerStreamDriverPermittedPeer - milliste subjecti nimedega sertifikaatidega varustatud kliente teenindatakse

Kliendi seadistamine

Serveris võiks seadistuse koondada faili /etc/rsyslog.d/tls.conf

# cat /etc/rsyslog.d/tls.conf
# make gtls driver the default
$DefaultNetstreamDriver gtls
# certificate files
$DefaultNetstreamDriverCAFile /etc/ssl/certs/auul-ca-chain.pem
$DefaultNetstreamDriverCertFile /etc/ssl/certs/rsyslog-client-loomaaed.loomaaed.tartu.ee.crt
$DefaultNetstreamDriverKeyFile /etc/ssl/private/rsyslog-client-loomaaed.loomaaed.tartu.ee.key
$ActionSendStreamDriverAuthMode x509/name
$ActionSendStreamDriverPermittedPeer rsyslog.loomaaed.tartu.ee
$ActionSendStreamDriverMode 1 # run driver in TLS-only mode
*.* @@(o)rsyslog.loomaaed.tartu.ee:10514

kus

  • *.* @@(o)rsyslog.loomaaed.tartu.ee:10514 - kuhu logi saata, (o) ka vajalik, liiklus logimise jaoks optimaalsem

Tulemuse kontrollimine

  • veenduda, et logitakse üle seadistatud pordi ja andmevahetus on ilmselt krüpteeritud (nt wireshark abil)
  • proovida pöörduda kasutades mingit suvalist kliendi serti ja veenduda, et logida ei saa (või muuta serveris ja kliendis kordamööda InputTCPServerStreamDriverPermittedPeer väärtus ära)

Nt kirjutatakse ebasobiva kliendi pöördumisel serveri logisse klienti rsyslog protsessi startimisel

May  4 20:32:58 rsyslog rsyslogd-2088: error: peer name not authorized - not permitted to talk to it. \
  Names: CN: rsyslog-client-auul.lloomaaed.tartu.ee;

Kasulikud lisamaterjalid

Logimine failisüsteemi

Failisüsteemi moodustatakse logiserverit kasutavate arvutite ja programmide nö puu lisades logiserveri rsyslog.conf faili muude logi salvestamist juhtivate kirjete ette

..
###############
#### RULES ####
###############
$template TraditionalFormat,"%timegenerated% %HOSTNAME% %syslogtag%%msg:::drop-last-lf%\n"
$template DailyPerHostLogs,"/srv/logs/%HOSTNAME%/%programname%.%$YEAR%-%$MONTH%-%$DAY%.log"
# *.* -?DailyPerHostLogs;TraditionalFormat
if $fromhost-ip startswith '10.1.1.' then -?DailyPerHostLogs;TraditionalFormat
& ~
#
# First some standard log files.  Log by facility.
#
auth,authpriv.*                 /var/log/auth.log
*.*;auth,authpriv.none          -/var/log/syslog
...

kus

  • - - syncida failisüsteemi puhvrid maha
  • ? - tähistab asjaolu, et järgneb nn dünaamiline failinimi
  • ; järel on template nimi, kust võetakse logikirje formaat
  • %msg% - algne logi sissekanne, millele kirjutatakse ette ja taha juurde
  • if $fromhost-ip startswith '10.1.1.' then ... näitab, millisel tingimusel näidatud viisil logida
  • & ~ - tähistab, et logides järgmiseid reegleid ei käsitleta; vastasel korral kirjutatakse üle võrgu tulnud logi lisaks ka nö kohalikesse logifailidesse (/var/log/syslog jt)

Postinduse logimisel on praktiliselt mõistlik logida samasse faili kokku amavis-postfix-spamd-jms programmid, nt sedasi

$template TraditionalFormat,"%timegenerated% %FROMHOST-IP% %syslogtag%%msg:::drop-last-lf%\n"
$template DailyPerHostLogs,"/srv/data/logs/%FROMHOST-IP%/%programname%.%$YEAR%-%$MONTH%-%$DAY%.log"
$template DailyPerHostLogsMail,"/srv/data/logs/%FROMHOST-IP%/mail.%$YEAR%-%$MONTH%-%$DAY%.log"
if $fromhost-ip startswith '192.168.1.250' and ( $programname == 'spamd' or $programname == 'clamav-milter' or $programname == 'postfix' ) \
  then -? DailyPerHostLogsMail;TraditionalFormat
& ~
if $fromhost-ip startswith '192.168.' then -?DailyPerHostLogs;TraditionalFormat
& ~

kus

  • esmalt kirjeldatakse template'd - formaadi kohta üks ja kaks failinimede jaoks
  • esimene if tingimus määrab mail faili kirjutamise tingimused
  • teine if tingimus ülejäänud

ning

-?DailyPerHostLogs;TraditionalFormat

kus

  • - - kirjutada puhvrid maha
  • ?DailyPerHostLogs - failinimed moodustatakse dünaamiliselt (st saavad sisaldada kuupäeva jms)
  • TraditionalFormat - kirje formaat

Rsyslogi mitte kasutava programmi logifaili muudatuste logimine Rsyslogi

Rsyslog võimaldab töötada nö iseseisvalt oma logifaile kirjutavate programmidega, nt Tomcat. Enne allkirjeldatud viisi rakendamist tasub uurida alternatiivseid võimalusi, nt PostgreSQL puhul on võimalik kirjutada logi samaaegselt mitmesse kohta.

Logi klient

Logi kliendi arvutis tuleb kasutada /etc/rsyslog.conf failis nt ridu

$ModLoad imfile
...
# RULES
if $programname == 'tomcat' then @@10.100.1.19
& ~
...
$InputFileName /usr/local/tomcat/logs/catalina.out
$InputFileTag tomcat:
$InputFileStateFile stat-file-tomcat
$InputRunFileMonitor
...
*.* @@10.100.1.19

kus

  • if ... then .. - tingimus suunab tomcat nimelise logi logiserverisse aadressi 10.100.1.19
  • & ~ - järgnedes vahetult eelmisele tähendab see, et kõnealuse logikirjega enam rohkem ei tegelda
  • *.* - kõik logi saadetakse logiserverisse

Kui if .. then tingimust mitte kasutada, siis salvestatakse tomcat logi nii kohaliku süsteemi logifailidesse kui ka logiserverisse

Logiserver

Logiserver salvestab muude seadmete poolt üle võrgu talle saadetud logi, nt oma failisüsteemi

$ModLoad imudp.so
$UDPServerRun 514

Logimine PostgreSQL andmebaasi

Mõnel juhtumil, nt LogAnalyzer http://loganalyzer.adiscon.com/ tarkvara kasutamisel võib olla asjakohane logida andmebaasi, selleks tuleb paigadalda PostgreSQL andmebaasi puhul rsyslog-pgsql pakett

# apt-get install rsyslog-pgsql

Baasi logimisel kasutatakse kahte tabelit, tõenäoliselt on mõistlik moodustada eraldi andmebaas ja tekitada tabelid

$ psql -h 127.0.0.1 -U rsyslog rsyslog < /usr/share/dbconfig-common/data/rsyslog-pgsql/install/pgsql

Ligipääs andmebaasile tuleb näidata /etc/rsyslog.d/pgsql.conf failis, nt

$ModLoad ompgsql
*.* :ompgsql:ip,baasinimi, kasutajanimi, parool;

Muudatuste kehtestamiseks tuleb teha Rsyslogile stop ja start

# /etc/init.d/rsyslog stop ... start

Kui mingil juhtumil ei peaks andmebaas töötama, siis Rsyslog võimaldab logi kohalikus arvutis puhverdada ning see kopeeritakse andmebaasi järgmisel võimalusel, selleks sobib kasutada seadistusfailis

$WorkDirectory /var/spool/rsyslog # default location for work (spool) files
$ActionQueueType LinkedList # use asynchronous processing
$ActionQueueFileName dbq    # set file name, also enables disk mode
$ActionResumeRetryCount -1  # infinite retries on insert failure

ning moodustada kataloog /var/spool/rsyslog

# mkdir /var/spool/rsyslog

LogAnalyzeri kasutamine

LogAnalyzer http://loganalyzer.adiscon.com/ on veebipõhine PHP rakendus, mis võimaldab töötada andmebaasi salvestatud logiga. Lisaks nö vanilla Apache veebiserverile peavad olema paigaldatud php5-gd ja php5-pgsql paketid

# apt-get install php5-gd php5-pgsql

Tarkvara tuleb lahti pakkida veebiserveri dokumendijuurika alla, rakendus asub src alamkataloogis. Rakenduse seadistamine, sh andmebaasi ligipääsu kirjeldamine toimub veebiliideses (andmed salvestatakse faili config.php).

LogAnalyzeri kasutajaliides näeb välja selline

Rsyslog-1.gif

kus

  • üleval ääres olevate linkide abil saab liikuda otsingu, statistika jt sektsioonide vahel
  • üleval keskel on filter, antud juhul kuvatakse kõigi logiserverit kasutavate arvutite viimase tunni sissekandeid
  • sissekanded esitatakse ridadena, antud juhtumil on näha, et arvuti 192.168.1.210 on tegelenud dhcp'ga
  • veebilehele on määratud kord minutis automaatne värskendus

Kuna logis võivad esineda tundlikud andmed, nt kasutaja sisestas oma kasutaja nime asemele kogemata parooli, siis ei peaks logile saama juurde kõrvalised tegelased.

Märkused

  • OpenBSD baaskomplekti syslogd oskab ainult UDP protokolli, kui seda arvestada, siis saab logida sealt Rsyslogi.
  • Tundub, et igasuguste Rsyslogi seadistusfaili tehtud muudatuste kehtestamiseks tuleb öelda Rsyslogile stop ja start.
  • osutub, et logger programm ei sobib tcp peal logimiseks; või teisipidi, lõpus peab olema reavahetus
$ logger -n 192.168.10.85 -p local3.info "test"
$ logger -n 192.168.10.85 -T -P 514 -p local3.info "test"

paistab, et netcat toimib

$ echo "test" | netcat -q 0 10.0.9.45 514
  • selleks, et kõik kirjed eraldi ridadele kantaks
$RepeatedMsgReduction off

Rsyslog v. 8 kasutamise iseärasused

  • Logiserveris erinevatesse failidesse logimiseks sobib kasutada
..
template(name="DailyPerHostLogsMail" type="string" string="/srv/logs/%FROMHOST-IP%/mail.%$YEAR%-%$MONTH%-%$DAY%.log")
if $fromhost-ip startswith '192.168.1.250' and ( $programname == 'spamd' or $programname == 'clamav-milter' ) then
  {
    action(type="omfile" DynaFile="DailyPerHostLogsMail")
    stop
  }
...
# apt-get install rsyslog-elasticsearch
  • rainerscriptiga TLS serveris kasutada /etc/rsyslog.conf failis kõige lõpus (ees vaikimisi olev 'module(type="imtcp")' kommenteerida välja)
..
$DefaultNetstreamDriverCAFile /var/tmp/s/syslog-ca-cert.crt
$DefaultNetstreamDriverCertFile /var/tmp/s/syslog-server-cert.crt
$DefaultNetstreamDriverKeyFile /var/tmp/s/syslog-server-key.key
$DefaultNetstreamDriver gtls

module(load="imtcp" streamdriver.mode="1" streamdriver.authmode="x509/certvalid")
input(type="imtcp" port="10514" name="tcp-tls")
  • legacy direktiividega TLS serveris kasutada /etc/rsyslog.conf failis kõige lõpus (ees vaikimisi olev 'module(type="imtcp")' kommenteerida välja)
$DefaultNetstreamDriverCAFile /var/tmp/s/syslog-ca-cert.crt
$DefaultNetstreamDriverCertFile /var/tmp/s/syslog-server-cert.crt
$DefaultNetstreamDriverKeyFile /var/tmp/s/syslog-server-key.key
$DefaultNetstreamDriver gtls

$ModLoad imtcp

$InputTCPServerStreamDriverMode 1
$InputTCPServerStreamDriverAuthMode anon
$InputTCPServerRun 10514 # start up listener at port 10514
  • TLS kliendis kasutada /etc/rsyslog.conf failis kõige lõpus
$ModLoad lmnsd_gtls

# certificate files
$DefaultNetstreamDriverCAFile /etc/rsyslog.ca.pem
$DefaultNetstreamDriverCertFile /etc/rsyslog.crt
$DefaultNetstreamDriverKeyFile /etc/rsyslog.key

$DefaultNetstreamDriver gtls
$ActionSendStreamDriverMode 1 # run driver in TLS-only mode
$ActionSendStreamDriverAuthMode x509/certvalid
# $ActionSendStreamDriverPermittedPeer rsyslog.moraal.ee

*.* @@rsyslog.moraal.ee:10514 # forward everything to remote server

Testimiseks peab nö tavaline ssl klient saama vastuse, nt

# openssl s_client -connect 10.80.102.35:1999
...
   Start Time: 1496000983
   Timeout   : 300 (sec)
   Verify return code: 21 (unable to verify the first certificate)
---

või

# gnutls-cli -p 1999 logi.moraal.ee --x509cafile /etc/rsyslog-ca.crt
..

- Status: The certificate is trusted.
- Description: (TLS1.0)-(RSA)-(AES-128-CBC)-(SHA1)
- Session ID: BA:3A:80:16:79:F2:F6:8B:1A:E9:C1:87:D9:52:D6:53:28:3B:EC:3C:45:52:5A:76:C4:4D:09:F6:D1:B1:5C:A2
- Version: TLS1.0
- Key Exchange: RSA
- Cipher: AES-128-CBC
- MAC: SHA1
- Compression: NULL
- Options: safe renegotiation,
- Handshake was completed

- Simple Client Mode:

Kasulikud lisamaterjalid

Kasulikud lisamaterjalid