Jak nakonfigurovat Syslog server v Linuxu

By | 04/11/2019

Last Updated on 14/06/2023 by administrator

Syslog server a jeho konfigurace v Linuxu

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 22.04 LTS, Ubuntu 20.04 LTS a Ubuntu 18.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.

Pokud je nakonfigurovaný firewall (lze zjistit příkazem sudo ufw status), je nutné povolit provoz UDP/514:

sudo ufw allow 514/udp

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, či mazat, 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

Řešení problémů:

1) Chyba “imklog: cannot open kernel log (/proc/kmsg): Permission denied” [1]

Tato chyba nastala, když byl rozjetý rSyslog server na PVE Proxmox pod neprivilegiovaným kontejnerem. Jak převést neprivilegiovaný kontejner na privilegiovaný popisuje tento článek.

Jun 09 15:01:44 syslog rsyslogd[2371]: imklog: cannot open kernel log (/proc/kmsg): Permission denied.
Jun 09 15:01:44 syslog rsyslogd[2371]: activation of module imklog failed [v8.2112.0 try https://www.rsyslog.com/e/2145 ]
Řešení problému:

Problém se dá vyřešit dvěmi způsoby:

1. Pokud není potřeba číst kernel logy přes tento kontejner v Proxmox přejít do rsyslog.conf souboru:

vi /etc/rsyslog.conf

a zakomentovat následující řádek:

#module(load="imklog" permitnonkernelfacility="on")

Provést restart rSyslog služby:

sudo systemctl restart rsyslog

nebo

2. Převést neprivilegiovaný kontejner na privilegiovaný.

Zdroj:

[1] https://serverfault.com/questions/691048/kernel-log-stays-empty-rsyslogd-imklog-cannot-open-kernel-log-proc-kmsg

Dobrovolný dar

Ahoj čtenáři, rád bych tě poprosil aby ses zamyslel, co je vše potřeba ke vzniku článku.
Jakožto amatérský softwarový kutil musím:

1) Nejdříve vše nastudovat v cizích jazycích.
2) Vše následně prakticky vyzkoušet.
3) Svoje poznatky a zkušenosti napsat do článku který si právě přečetl v jazyku kterému rozumíš.
4) Dát článku hlavu a patu a publikovat.

Každý článek zabere několik hodin práce, za kterou mi nikdo neplatí.
Prosím zvaž, kolik času jsem ti právě ušetřil.
Pokud ti to stojí aspoň za cenu jedné kávy, tak mi ji kup.
Předem moc děkuji.

Příspěvek tak můžeš provést zasláním libovolné částky na mé číslo účtu 1558701011/3030 Nebo můžeš dar poslat kliknutím na tento odkaz Podpořit tento WEB , který tě přesměruje na mou platební bránu Revolut.

Dar je také možné poslat ve formě Bitcoinu na BTC peněženku bc1qqdf5fp42a7srwwhh2rut8zr9x4jm5c8fqc9qw6

Veškeré peněžní prostředky budu také používat na zlepšení kvality své webové tvorby a na psaní nových technických návodů. Za každý dar předem děkuji.

Leave a Reply

Your email address will not be published. Required fields are marked *