Last Updated on 25/10/2024 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:
Další články:
Pro Ubuntu 24.04 je sepsán článek zde: https://martinuvzivot.cz/konfigurace-rsyslog-ubuntu-24-04-setup-rsyslog-ubuntu-24-04/
Konfigurace rSyslog Ubuntu 24.04 (Setup rSyslog Ubuntu 24.04)