Jak nakonfigurovat Syslog server v Linuxu

By | 04/11/2019

Syslog server a jeho konfigurace v Linuxu

Update článku k 16.11.2020.

Motivace:

Díky této instalaci a konfiguraci  je možné ukládat generované logy síťových zařízení na centrální Syslog server.

OS:

Implementace byla prováděna na Ubuntu 18.04 LTS a Ubuntu 20.04 LTS, postup může být podobně aplikovatelný na Ubuntu 17.10 a nižší.

Implementace:

Aktualizace seznamu balíčků z repozitářů:

sudo apt-get update

Instalace rSyslog serveru (pravděpodobně již bude součástí Ubuntu):

sudo apt-get install rsyslog

Pozn: Samotný rSyslog server by již měl být součástí Ubuntu.

Verze rSyslog serveru:

rsyslogd -v

Částečný výpis příkazu rsyslogd -v:

rsyslogd 8.32.0, compiled with:
PLATFORM: x86_64-pc-linux-gnu

Přejít do konfigurace rSyslog serveru v rsyslog.conf:

sudo vim /etc/rsyslog.conf

Odkomentovat module(load=”imudp”) a input(type=”imudp” port=”514″):

module(load="imudp")
input(type="imudp" port="514")

A zakomentovat následující řádky:

#$FileOwner syslog
#$FileGroup adm
#$FileCreateMode 0640
#$DirCreateMode 0755
#$Umask 0022
#$PrivDropToUser syslog
#$PrivDropToGroup syslog

Pozn1.: Syslog zprávy jsou standardně zasílány přes protokol UDP, ale je možné použít TCP protokol odkomentováním module(load=”imtcp”) a input(type=”imtcp” port=”514″).

Pozn.2: Příkazy, které byly zakomentovány v rsyslog.conf, jsou již ve verzi Ubuntu 18.04 LTS a Ubuntu 20.04 LTS zastaralé.

Přejít do konfigurace rSyslog serveru v 50-default.conf:

sudo vim /etc/rsyslog.d/50-default.conf

Oddělení (odfiltrování) jednotlivých syslog zpráv posílané různými síťovými zařízeními se provede přidáním příkazů na začátek souboru 50-default.conf:

#Logging from Switch1
if $fromhost-ip == '192.168.88.2' then /var/log/switch1.log

&~

#Logging from linksys
if $fromhost-ip == '192.168.0.254' then /var/log/linksys.log

, kde

192.168.88.2 – je IP adresa síťového zařízení posílající syslog zprávy (zde Switch)
/var/log/switch1.log – je umístění syslog souboru pro dané zařízení (v tomto případě pro Switch)
&~ -syslog server uloží zprávu do specifického souboru (tylda “~” bude brzo deprecated, a bude nahrazena řetezcem stop)

Aby se aplikovaly změny provést restart rSyslog služby:

sudo service rsyslog restart

nebo

sudo systemctl restart rsyslog

Pozn. soubor switch1.log a linksys.log se měl vytvořit při přijetí prvního logy z daného síťového zařízení. Nicméně pokud se soubor nevytvořil, pomoci sudo touch /var/log/switch1.log bude soubor vytvořen.

Ověření funkce rSyslog serveru:

sudo service rsyslog status

nebo

sudo systemctl status rsyslog

Výpis příkazu sudo service rsyslog status:

 rsyslog.service - System Logging Service
   Loaded: loaded (/lib/systemd/system/rsyslog.service; enabled; vendor preset: enabled)
   Active: active (running) since Mon 2019-11-04 15:11:14 CET; 2s ago
     Docs: man:rsyslogd(8) http://www.rsyslog.com/doc/
 Main PID: 7335 (rsyslogd)
    Tasks: 5 (limit: 2320)
   CGroup: /system.slice/rsyslog.service
           ââ7335 /usr/sbin/rsyslogd -n

Alternativní ověření:

ps -A | grep rsyslog

Výpis příkazu ps -A | grep rsyslog:

7842 ? 00:00:00 rsyslogd

Syslog zprávy ze síťového zařízení:

Cesta ukládání logů ze síťového zařízení “Switch1” byla definována v /var/log/switch1.log:

sudo cat /var/log/switch1.log

Výpis příkazu sudo cat /var/log/switch1.log:

Nov  4 15:35:42 SWITCH1 mgd[1421]: UI_DBASE_LOGOUT_EVENT: User 'root' exiting configuration mode
Nov  4 15:35:45 SWITCH1 mgd[1421]: UI_DBASE_LOGIN_EVENT: User 'root' entering configuration mode
Nov  4 15:36:24 SWITCH1 mib2d[1328]: SNMP_TRAP_LINK_DOWN: ifIndex 643, ifAdminStatus up(1), ifOperStatus down(2), ifName ge-0/0/47

V reálném čase lze zachytit logy pomocí příkazu:

tail -f /var/log/switch1.log

Logy rSyslog serveru:

grep "rsyslog" /var/log/syslog

Vypsání příkazu grep “rsyslog” /var/log/syslog:

Nov 4 15:11:14 jesterka rsyslogd: [origin software="rsyslogd" swVersion="8.32.0" x-pid="409" x-info="http://www.rsyslog.com"] exiting on signal 15.
Nov 4 15:11:14 jesterka rsyslogd: warning: ~ action is deprecated, consider using the 'stop' statement instead [v8.32.0 try http://www.rsyslog.com/e/2307 ]
Nov 4 15:11:14 jesterka rsyslogd: imuxsock: Acquired UNIX socket '/run/systemd/journal/syslog' (fd 3) from systemd. [v8.32.0]
Nov 4 15:11:14 jesterka rsyslogd: rsyslogd's groupid changed to 106
Nov 4 15:11:14 jesterka rsyslogd: rsyslogd's userid changed to 102
Nov 4 15:11:14 jesterka rsyslogd: [origin software="rsyslogd" swVersion="8.32.0" x-pid="7335" x-info="http://www.rsyslog.com"] start

TIP 1 – zobrazení přesnější časové značky:

Z dlouhodobého hlediska se může hodit nastavení přesnější časové značky (timestamp) syslog zprávy a to hlavně pro zobrazení roku. Pro nastavení přejít do konfigurace rSyslog serveru v rsyslog.conf:

sudo vim /etc/rsyslog.conf

a zakomentovat řádek níže:

#$ActionFileDefaultTemplate RSYSLOG_TraditionalFileFormat

Nově zachycené syslog zprávy dostanou přesnější časovou značku, což ukazuje výpis příkazu sudo cat /var/log/switch1.log:

2019-11-4T15:40:02.645577+01:00 SWITCH1 mgd[1421]: UI_DBASE_LOGOUT_EVENT: User 'root' exiting configuration mode
2019-11-4T15:40:08.503298+01:00 SWITCH1 mgd[1421]: UI_DBASE_LOGIN_EVENT: User 'root' entering configuration mode
2019-11-4T15:40:37.712045+01:00 SWITCH1 mib2d[1328]: SNMP_TRAP_LINK_DOWN: ifIndex 643, ifAdminStatus up(1), ifOperStatus down(2), ifName ge-0/0/47

Aby se aplikovaly změny provést restart rSyslog služby:

sudo service rsyslog restart

nebo

sudo systemctl restart rsyslog

TIP 2 – rotování logů:

Jako doplněk pro rSyslog server lze využít již předinstalovaný program Logrotate pro lepší správu ukládaných logů. Díky tomu lze logy rotovat, komprimovat, mazat, či rotovat pokud dojde k překročení určité velikostí souboru.

Základní parametry lze najít v souboru v logrotate.conf:

cat /etc/logrotate.conf

V souboru logrotate.conf  je definována cesta k adresáři /etc/logrotate.d/. Tento adresář obsahuje soubory definované pro jednotlivé aplikace. V tomto případě nás zajímá soubor rsyslog:

vim /etc/logrotate.d/rsyslog

Do souboru /etc/logrotate.d/rsyslog vepsat kód nakonec:

/var/log/switch1.log
{
        rotate 4
        daily
        size 100M
        missingok
        notifempty
        delaycompress
        compress
        postrotate
                /usr/lib/rsyslog/rsyslog-rotate
        endscript
}

Popis kódu: Použije rotování logů pro již vytvořený soubor switch1.log. Každý den (daily) se bude kontrolovat, zda logovací soubor nepřesáhl 100 MB (size 100M), pokud přesáhne, vytvoří se nový. Maximální počet vytvořených souborů bude 4 (rotate 4), další budou vymazány. Staré logy se budou komprimovat do gzip (compress). Díky zpoždění komprese (delaycompress) se provede komprese až dalšího souboru. Pokud logovací soubor chybí, nevyhodí error hlášku (missingok). Pokud je logovací soubor prázdný, nedojde k rotaci (notefempty). Script (v tomto případě rsyslog-rotate) se spustí po dokončení rotace (postrotate).

Po určité době pak výsledek může vypadat následovně (výpis složky log příkazem ls -lah /var/log/switch1.log*):

-rw-r-----  1 jesterka  jesterka       0 lis 30 22:34 switch1.log
-rw-r-----  1 jesterka  jesterka    1,1M lis 23 03:00 switch1.log.1
-rw-r-----  1 jesterka  jesterka    100M lis 15 00:00 switch1.log.2.gz
-rw-r-----  1 jesterka  jesterka    100M lis  8 14:40 switch1.log.3.gz

Aby se aplikovaly změny provést restart služby Logrotate:

sudo service logrotate restart

Další příklady: https://www.forpsicloud.cz/navody/seznam-navodu/cervenec-2020/jak-pouzivat-logrotate.aspx a https://www.networkworld.com/article/3218728/how-log-rotation-works-with-logrotate.html

Napsat komentář

Vaše emailová adresa nebude zveřejněna. Vyžadované informace jsou označeny *