Wyszukiwanie w witrynie

Jak skonfigurować centralny serwer rejestrowania za pomocą Rsyslog w systemie Linux


Dzienniki to krytyczny element każdego oprogramowania i systemu operacyjnego. Dzienniki zazwyczaj rejestrują działania użytkownika, zdarzenia systemowe, aktywność sieciową i wiele więcej, w zależności od tego, do czego są przeznaczone. Jednym z najczęściej używanych systemów rejestrowania w systemach Linux jest rsyslog.

Rsyslog to potężny, bezpieczny i wydajny system przetwarzania logów, który akceptuje dane z różnych typów źródeł (systemów/aplikacji) i wyprowadza je do wielu formatów.

Ewoluował ze zwykłego demona syslog do w pełni funkcjonalnego systemu rejestrowania na poziomie przedsiębiorstwa. Zaprojektowany jest w modelu klient/serwer, dlatego może być skonfigurowany jako klient i/lub jako centralny serwer logujący dla innych serwerów, urządzeń sieciowych i aplikacji zdalnych.

Środowisko testowe

Na potrzeby tego przewodnika będziemy używać następujących hostów:

  • Serwer: 192.168.241.140
  • Klient: 172.31.21.58

Jak zainstalować i skonfigurować serwer Rsyslog

Większość dystrybucji Linuksa ma preinstalowany pakiet rsyslog. Jeśli nie jest zainstalowany, możesz go zainstalować za pomocą narzędzia do zarządzania pakietami systemu Linux, jak pokazano.

sudo yum update && yum install rsyslog 	#CentOS 7
sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04

Po zainstalowaniu rsyslog musisz na razie uruchomić usługę, włączyć automatyczne uruchamianie przy starcie systemu i sprawdzić jej status za pomocą polecenia systemctl.

sudo systemctl start rsyslog
sudo systemctl enable rsyslog
sudo systemctl status rsyslog

Główny plik konfiguracyjny rsyslog znajduje się pod adresem /etc/rsyslog.conf, który ładuje moduły, definiuje dyrektywy globalne, zawiera zasady przetwarzania komunikatów dziennika, a także zawiera wszystkie pliki konfiguracyjne w /etc /rsyslog.d/ dla różnych aplikacji/usług.

sudo vim /etc/rsyslog.conf

Domyślnie rsyslog używa modułów imjournal i imusock do importowania uporządkowanych komunikatów dziennika z systemd journal i do akceptowania syslog komunikaty z aplikacji działających w systemie lokalnym poprzez gniazda uniksowe.

Aby skonfigurować rsyslog jako sieciowy/centralny serwer rejestrowania, musisz ustawić protokół (UDP, TCP lub oba), którego będzie używał do zdalnego odbioru syslog, a także port, na którym nasłuchuje.

Jeśli chcesz używać połączenia UDP, które jest szybsze, ale zawodne, wyszukaj i odkomentuj poniższe linie (zamień 514 na port, na którym chcesz nasłuchiwać, powinno to pasuje do adresu portu, na który klienci wysyłają wiadomości, przyjrzymy się temu więcej podczas konfigurowania klienta rsyslog).

$ModLoad imudp
$UDPServerRun 514

Aby użyć połączenia TCP (które jest wolniejsze, ale bardziej niezawodne), wyszukaj i odkomentuj poniższe linie.

$ModLoad imtcp
$InputTCPServerRun 514

W tym przypadku chcemy jednocześnie korzystać z połączeń UDP i TCP.

Następnie musisz zdefiniować zestaw reguł do przetwarzania zdalnych dzienników w następującym formacie.

facility.severity_level	destination (where to store log)

Gdzie :

  • facility: to typ procesu/aplikacji generującej komunikat, obejmujący uwierzytelnianie, cron, demon, jądro, local0..local7. Użycie * oznacza wszystkie udogodnienia.
  • poziom_ważności: to typ komunikatu dziennika: emerg-0, alert-1, crit-2, err-3, warn-4, Notice-5, info-6, debug-7. Użycie * oznacza wszystkie poziomy ważności, a żaden nie oznacza braku poziomu ważności.
  • miejsce docelowe: to plik lokalny lub zdalny serwer rsyslog (zdefiniowany w postaci IP:port).

Będziemy używać następującego zestawu reguł do zbierania dzienników ze zdalnych hostów przy użyciu szablonu RemoteLogs. Pamiętaj, że te reguły muszą poprzedzać jakiekolwiek reguły przetwarzania wiadomości lokalnych, jak pokazano na zrzucie ekranu.

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

Patrząc na powyższy zestaw reguł, pierwszą regułą jest „$template RemoteLogs,”/var/log/%HOSTNAME%/%PROGRAMNAME%.log” ”.

Dyrektywa $template mówi demonowi rsyslog, aby zbierał i zapisywał wszystkie otrzymane zdalne wiadomości w odrębnych dziennikach w katalogu /var/log, w oparciu o nazwę hosta (nazwa komputera klienta) i zdalny obiekt klienta (program/aplikacja), który wygenerował komunikaty zgodnie z ustawieniami zawartymi w szablonie RemoteLogs.

Druga linia „*.* ?RemoteLogs ” oznacza nagrywanie wiadomości ze wszystkich obiektów na wszystkich poziomach ważności przy użyciu konfiguracji szablonu RemoteLogs.

Ostatnia linia „& ~ ” instruuje rsyslog, aby przestał przetwarzać wiadomości po zapisaniu ich do pliku. Jeśli nie dodasz „& ~”, wiadomości będą zapisywane w plikach lokalnych.

Istnieje wiele innych szablonów, których możesz użyć. Więcej informacji znajdziesz na stronie podręcznika konfiguracji rsyslog (man rsyslog.conf) lub w dokumentacji online Rsyslog.

To wszystko, jeśli chodzi o konfigurację serwera rsyslog. Zapisz i zamknij plik konfiguracyjny. Aby zastosować ostatnie zmiany, zrestartuj demona rsyslog za pomocą następującego polecenia.

sudo systemctl restart rsyslog

Teraz sprawdź gniazda sieciowe rsyslog. Użyj polecenia ss (lub polecenia netstat z tymi samymi flagami) i potokuj dane wyjściowe do grep, aby odfiltrować połączenia rsyslogd.

sudo ss -tulnp | grep "rsyslog"

Następnie w CentOS 7, jeśli masz włączony SELinux, uruchom następujące polecenia, aby zezwolić na ruch rsyslog w zależności od typu gniazda sieciowego.

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

Jeśli w systemie jest włączona zapora sieciowa, musisz otworzyć port 514, aby zezwolić na oba połączenia UDP/TCP z serwerem rsyslog, uruchamiając.

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

------------- On Ubuntu -------------
sudo ufw allow 514/udp
sudo ufw allow 514/tcp
sudo ufw reload 

Jak skonfigurować klienta Rsyslog do wysyłania dzienników do serwera Rsyslog

Teraz w systemie klienckim sprawdź, czy usługa rsyslog jest uruchomiona, czy nie, za pomocą następującego polecenia.

sudo systemctl status rsyslog

Jeśli nie jest zainstalowany, zainstaluj go i uruchom usługę, jak pokazano wcześniej.

sudo yum update && yum install rsyslog 	#CentOS 7
sudo apt update && apt install rsyslog	#Ubuntu 16.04, 18.04
sudo systemctl start rsyslog
sudo systemctl enable rsyslog
sudo systemctl status rsyslog

Po uruchomieniu usługi rsyslog otwórz główny plik konfiguracyjny, w którym dokonasz zmian w konfiguracji domyślnej.

sudo vim /etc/rsyslog.conf

Aby zmusić demona rsyslog do działania jako klient dziennika i przekazywania wszystkich lokalnie wygenerowanych komunikatów dziennika do zdalnego serwera rsyslog, dodaj tę regułę przekazywania na końcu pliku, jak pokazano na poniższym zrzucie ekranu.

*. *  @@192.168.100.10:514

Powyższa reguła będzie wysyłać wiadomości ze wszystkich obiektów i na wszystkich poziomach ważności. Aby wysyłać wiadomości z konkretnego obiektu np. auth, użyj poniższej reguły.

auth. *  @@192.168.100.10:514

Zapisz zmiany i zamknij plik konfiguracyjny. Aby zastosować powyższe ustawienia, zrestartuj demona rsyslog.

sudo systemctl restart rsyslog

Jak monitorować zdalne logowanie na serwerze Rsyslog

Ostatnim krokiem jest sprawdzenie, czy rsyslog rzeczywiście odbiera i rejestruje wiadomości od klienta, w katalogu /var/log, w postaci nazwa hosta/nazwa programu.log.

Uruchom polecenie ls, aby wyświetlić długą listę nadrzędnego katalogu dzienników i sprawdź, czy istnieje katalog o nazwie ip-172.31.21.58 (lub jakakolwiek inna jest nazwa hosta twojego komputera klienckiego).

 
ls -l /var/log/

Jeśli katalog istnieje, sprawdź znajdujące się w nim pliki dziennika, uruchamiając.

sudo ls -l /var/log/ip-172-31-21-58/

Streszczenie

Rsyslog to wysokowydajny system przetwarzania logów, zaprojektowany w architekturze klient/serwer. Mamy nadzieję, że potrafisz zainstalować i skonfigurować Rsyslog jako centralny/sieciowy serwer rejestrowania oraz jako klient, jak pokazano w tym przewodniku.

Możesz także zapoznać się z odpowiednimi stronami podręcznika rsyslog, aby uzyskać dodatkową pomoc. Zachęcamy do przekazania nam wszelkich opinii lub zadawania pytań.