[19] Rsyslog – zarządzanie logami

19 marca 2022 Wyłączono przez Adam [zicherka] Nogły

To jest podstawowe użycie Rsyslog, czyli demona usługi zarządzania dziennikami.

[1] W CentOS Stream 8 moduł [imjournal] jest domyślnie ustawiony na Rsyslog.

Dlatego Rsyslog importuje komunikaty syslog z usługi Journald, która jest usługą zarządzania dziennikami systemowymi.

[root@vlsr01 ~]# grep imjournal /etc/rsyslog.conf
                          # local messages are retrieved through imjournal now.
module(load="imjournal"             # provides access to the systemd journal
       StateFile="imjournal.state") # File to store the position in the journal

[2] Przechowywane reguły rejestrowania danych konfiguruje się w [/etc/rsyslog.conf].

[root@vlsr01 ~]# grep -v -E "^#|^$" /etc/rsyslog.conf
module(load="imuxsock"    # provides support for local system logging (e.g. via logger command)
       SysSock.Use="off") # Turn off message reception via local log socket;
                          # local messages are retrieved through imjournal now.
module(load="imjournal"             # provides access to the systemd journal
       StateFile="imjournal.state") # File to store the position in the journal
global(workDirectory="/var/lib/rsyslog")
module(load="builtin:omfile" Template="RSYSLOG_TraditionalFileFormat")
include(file="/etc/rsyslog.d/*.conf" mode="optional")
*.info;mail.none;authpriv.none;cron.none                /var/log/messages
authpriv.*                                              /var/log/secure
mail.*                                                  -/var/log/maillog
cron.*                                                  /var/log/cron
*.emerg                                                 :omusrmsg:*
uucp,news.crit                                          /var/log/spooler
local7.*                                                /var/log/boot.log

# jak pisać zasady : (Obiekt).(Priorytet) (Akcja)
# np : *.info;mail.none;authpriv.none;cron.none /var/log/messages
# -> [syslog] messages [info] Priorytet wszystkich obiektów są przechowywane w [/var/log/messages]
# -> ale wiadomości z [mail], [authpriv], [cron] obiekty nie są przechowywane w [/var/log/messages]
# [-] dodany na początku nazwy pliku oznacza asynchroniczne wyjście
# jeśli [-] nie zostanie dodane, dane logowania są zapisywane z wyjściem synchronicznym

# Obiekty
# kern : komunikaty jądra
# auth : wiadomości związane z uwierzytelnianiem
# authpriv : wiadomości związane z uwierzytelnianiem (prywatne)
# cron : cron lub powiązane wiadomości
# mail: wiadomości związane z usługami pocztowymi
# news: wiadomości związane z wiadomościami (news)
# uucp : wiadomości związane z uucp
# daemon : wiadomości związane z usługami demona
# user: poziom użytkownika, przetwarza powiązane wiadomości
# lpr : komunikaty związane z drukarką
# syslog : wewnętrzne komunikaty związane z syslog
# local0 - local7 : możliwe do użycia w ustawieniach niestandardowych

# Priorytety
# emerg: problemy z paniką jądra/systemu
# alert: trzeba natychmiast poprawić - więcej niż krytyczne (crit)
# crit : trzeba natychmiast poprawić
# err : typowe błędy, niepilne awarie
# warning: komunikaty ostrzegawcze
# notice: nie błędy, ale wykryto kilka nietypowych zdarzeń
# info: normalne komunikaty operacyjne
# debug : informacje debugowania
# none : brak (brak wyjścia)

# jeśli chcesz przechowywać tylko określone wiadomości priorytetowe
# dodaj [=] jak poniżej
# np: kern.=crit /dev/console

[3] Jeśli chcesz zmienić ustawienie, aby Rsyslog odbierał komunikaty syslog z gniazda UNIX, a nie domyślnie Ssystemd Journal, zmień konfigurację jak poniżej.

Ustawienie UNIX Socket jest domyślnie ustawione w Ubuntu i podobnych Linuxach.

[root@vlsr01 ~]# mcedit /etc/rsyslog.conf
# linie 9-13: zmień jeśli potrzebujesz
# zmień na SysSock.Use=on
# zakomentuj modul imjournal
module(load="imuxsock"    # provides support for local system logging (e.g. via logger command)
       SysSock.Use="on") # Turn off message reception via local log socket;
                          # local messages are retrieved through imjournal now.
#module(load="imjournal"            # provides access to the systemd journal
#       StateFile="imjournal.state") # File to store the position in the journal
[root@vlsr01 ~]# systemctl restart rsyslog

[4] Aby przesłać dane logowania do zdalnych hostów, skonfiguruj jak poniżej.

# konfiguracja na serwerze [vlsr01] (odbiera dane ze zdalnego hosta [vlsr02])
[root@vlsr01 ~]# mcedit /etc/rsyslog.conf
# linie 23-24: odkomentuj
#linia 26: wpisz hosty które mogą się połączyć
module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")
$AllowedSender TCP, 127.0.0.1, 192.168.100.0/24, *.zicher.lab

[root@vlsr01 ~]# systemctl restart rsyslog

# jeśli firewalld pracuje otwórz port 514/tcp
[root@vlsr01 ~]# firewall-cmd --add-port=514/tcp --permanent
[root@vlsr01 ~]# firewall-cmd –reload

# konfiguracja na hoście kliencie [vlsr02] (wysyła dane do serwera [vlsr01])
[root@vlsr02 ~]# mcedit /etc/rsyslog.conf
# dodaj na końcu
action(type="omfwd"
       queue.filename="fwdRule_vlsr01.zicher.lab"
       queue.maxdiskspace="1g"
       queue.saveonshutdown="on"
       queue.type="LinkedList"
       action.resumeRetryCount="-1"
       Target="vlsr01.zicher.lab" Port="514" Protocol="tcp")

# queue.filename: nazwa_pliku kolejki
# queue.maxdiskspace : maxdiskspace dla kolejki
# queue.saveonshutdown=on : zapisz dane kolejki na dysku podczas zamykania systemu
# queue.type=LinkedList : asynchroniczna kolejka, która może przechowywać 10 000 wiadomości
# action.resumeRetryCount=-1 : kontynuuj ponawianie próby wysłania, gdy serwer syslog nie odpowiada
# Target=*** : określ hosta serwera syslog

[root@vlsr02 ~]# systemctl restart rsyslog

# konfiguracja skończona, sprawdźmy czy widać logi ze zdalnego systemu
[root@vlsr01 ~]# tail /var/log/secure
Mar 18 18:56:03 vlsr01 sshd[1004]: Server listening on 0.0.0.0 port 22.
Mar 18 18:56:03 vlsr01 sshd[1004]: Server listening on :: port 22.
Mar 18 18:57:21 vlsr01 sshd[1593]: Accepted password for root from 192.168.100.155 port 57515 ssh2
Mar 18 18:57:21 vlsr01 systemd[1598]: pam_unix(systemd-user:session): session opened for user root by (uid=0)
Mar 18 18:57:22 vlsr01 sshd[1593]: pam_unix(sshd:session): session opened for user root by (uid=0)
Mar 18 19:21:12 vlsr01 sshd[18936]: Accepted password for root from 192.168.100.155 port 59163 ssh2
Mar 18 19:21:12 vlsr01 sshd[18936]: pam_unix(sshd:session): session opened for user root by (uid=0)
Mar 18 22:05:11 vlsr02 sshd[6974]: pam_unix(sshd:session): session closed for user root
Mar 18 22:05:21 vlsr02 sshd[7038]: Accepted password for root from 192.168.100.155 port 57115 ssh2
Mar 18 22:05:21 vlsr02 sshd[7038]: pam_unix(sshd:session): session opened for user root by (uid=0)