Wyszukiwanie w witrynie

Skonfiguruj scentralizowany serwer dzienników za pomocą Rsyslog w CentOS/RHEL 8


Aby administratorzy systemu mogli rozpoznać lub przeanalizować problemy na serwerze CentOS 8 lub RHEL 8, ważne jest, aby znać i przeglądać zdarzenia, które miały miejsce na serwerze w określonego okresu czasu z plików dziennika znajdujących się w /var/log katalogu w systemie.

System Syslog (Protokół rejestrowania systemu) na serwerze może działać jako centralny punkt monitorowania dzienników w sieci, w którym znajdują się wszystkie serwery, urządzenia sieciowe, przełączniki, routery i usługi wewnętrzne, które twórz logi, niezależnie od tego, czy są powiązane z konkretnym problemem wewnętrznym, czy tylko wiadomości informacyjne mogą wysyłać swoje logi.

Na serwerze CentOS/RHEL 8 demon Rsyslog jest najważniejszym serwerem logów, który jest domyślnie instalowany fabrycznie, a po nim następuje Daemon Systemd Journal (dziennik).

Rsyslog to narzędzie typu open source, opracowane jako usługa w architekturze klient/serwer i mogące pełnić obie role niezależnie. Może działać jako serwer i zbierać wszystkie dzienniki przesyłane przez inne urządzenia w sieci lub może działać jako klient, wysyłając wszystkie wewnętrzne zdarzenia systemowe zarejestrowane do zdalnego serwera Syslog.

Wymagania

  1. Instalacja „CentOS 8.0” ze zrzutami ekranu
  2. Instalacja RHEL 8 ze zrzutami ekranu

Aby skonfigurować scentralizowany serwer logów na serwerze CentOS/RHEL 8, należy sprawdzić, czy na partycji /var jest wystarczająca ilość miejsca (minimum kilka GB ) do przechowywania wszystkich zarejestrowanych plików dziennika w systemie wysyłanych przez inne urządzenia w sieci. Zalecam posiadanie osobnego dysku (LVM lub RAID) do zamontowania katalogu /var/log/.

Jak skonfigurować serwer Rsyslog w CentOS/RHEL 8

1. Jak powiedziałem, usługa Rsyslog jest instalowana i uruchamiana automatycznie na serwerze CentOS/RHEL 8. Aby sprawdzić, czy demon działa w systemie, uruchom następującą komendę.

systemctl status rsyslog.service

Jeśli usługa nie jest domyślnie uruchomiona, uruchom następujące polecenie, aby uruchomić demona rsyslog.

systemctl start rsyslog.service

2. Jeśli narzędzie Rsyslog nie jest domyślnie zainstalowane w systemie, którego planujesz używać jako scentralizowanego serwera rejestrowania, uruchom następującą komendę dnf, aby zainstalować pakiet rsyslog i uruchom demona.


dnf install rsyslog
systemctl start rsyslog.service

3. Po zainstalowaniu narzędzia Rsyslog możesz teraz skonfigurować rsyslog jako scentralizowany serwer rejestrowania, otwierając główny plik konfiguracyjny /etc/rsyslog.conf , w celu otrzymywania komunikatów dziennika dla klientów zewnętrznych.

vi /etc/rsyslog.conf

W pliku konfiguracyjnym /etc/rsyslog.conf znajdź i odkomentuj następujące wiersze, aby zezwolić na odbiór transportu UDP do serwera Rsyslog przez port 514 . Rsyslog używa standardowego protokołu UDP do przesyłania logów.

module(load="imudp") # needs to be done just once
input(type="imudp" port="514")

4. Protokół UDP nie ma narzutu TCP i sprawia, że transmisja danych jest szybsza niż protokół TCP. Z drugiej strony protokół UDP nie gwarantuje niezawodności przesyłanych danych.

Jeśli jednak chcesz używać protokołu TCP do odbioru logów, musisz znaleźć i odkomentować następujące linie w /etc/rsyslog.conf pliku konfiguracyjnym, aby skonfigurować Rsyslog demon do wiązania i nasłuchiwania gniazda TCP na porcie 514.

module(load="imtcp") # needs to be done just once
input(type="imtcp" port="514")

5. Teraz utwórz nowy szablon do odbierania wiadomości zdalnych, ponieważ ten szablon poprowadzi lokalny serwer Rsyslog, gdzie będzie zapisywany otrzymane wiadomości wysyłane przez klientów sieci Syslog.


$template RemoteLogs,"/var/log/%HOSTNAME%/%PROGRAMNAME%.log" 
*.* ?RemoteLogs

Dyrektywa $template RemoteLogs kieruje demonem Rsyslog do zbierania i zapisywania wszystkich przesłanych komunikatów dziennika do odrębnych plików w oparciu o nazwę klienta i zdalną aplikację kliencką, która utworzyła komunikaty w oparciu o zarysowane właściwości dodane w konfiguracja szablonu: %HOSTNAME% i %PROGRAMNAME%.

Wszystkie otrzymane pliki dziennika zostaną zapisane w lokalnym systemie plików w przydzielonym pliku o nazwie odpowiadającej nazwie hosta komputera klienckiego i przechowywanemu w katalogu /var/log/.

Reguła przekierowania & ~ nakazuje lokalnemu serwerowi Rsyslog zaprzestać dalszego przetwarzania odebranego komunikatu dziennika i usunąć komunikaty (nie zapisywać ich w wewnętrznych plikach dziennika).

RemoteLogs to dowolna nazwa nadana tej dyrektywie szablonowej. Możesz użyć dowolnej nazwy, która najlepiej pasuje do Twojego szablonu.

Aby skonfigurować bardziej złożone szablony Rsyslog, przeczytaj instrukcję pliku konfiguracyjnego Rsyslog, uruchamiając polecenie man rsyslog.conf lub zapoznaj się z dokumentacją online Rsyslog.

man rsyslog.conf

6. Po dokonaniu powyższych zmian konfiguracyjnych możesz zrestartować demona Rsyslog, aby zastosować ostatnie zmiany, uruchamiając następujące polecenie.

service rsyslog restart

7. Po ponownym uruchomieniu serwera Rsyslog powinien on teraz działać jako scentralizowany serwer logów i rejestrować wiadomości od klientów Syslog. Aby potwierdzić gniazda sieciowe Rsyslog, uruchom polecenie netstat i użyj narzędzia grep, aby przefiltrować ciąg rsyslog.

netstat -tulpn | grep rsyslog 

Jeśli polecenie netstat nie jest zainstalowane w CentOS 8, możesz je zainstalować za pomocą następującego polecenia.


dnf whatprovides netstat
dnf install net-tools

8. Jeśli masz aktywny SELinux w CentOS/RHEL 8, uruchom następujące polecenie, aby zezwolić na ruch rsyslog w zależności od typu gniazda sieciowego.

semanage port -a -t syslogd_port_t -p udp 514
semanage port -a -t syslogd_port_t -p tcp 514

Jeśli polecenie semanage nie zostanie zainstalowane w CentOS 8, możesz je zainstalować za pomocą następującego polecenia.


dnf whatprovides semanage
dnf install policycoreutils-python-utils

9. Jeśli w systemie masz aktywną zaporę sieciową, uruchom następujące polecenie, aby dodać potrzebne reguły zezwalające na ruch rsyslog na portach w zaporze Firewalld.


firewall-cmd --permanent --add-port=514/tcp
firewall-cmd --permanent --add-port=514/udp
firewall-cmd --reload

Możesz także ograniczyć połączenia przychodzące na porcie 514 z zakresów adresów IP znajdujących się na białej liście, jak pokazano.


firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="tcp" accept'
firewall-cmd --permanent --add-rich-rule 'rule family="ipv4" source address="123.123.123.0/21" port port="514" protocol="udp" accept'
firewall-cmd --reload

To wszystko! Rsyslog jest teraz skonfigurowany jako scentralizowany serwer logów i może zbierać logi od zdalnych klientów. W następnym artykule zobaczymy jak skonfigurować klienta Rsyslog na serwerze CentOS/RHEL 8.