Zainstaluj scentralizowany serwer dziennika z Rsyslog w systemie Debian 9

 

W systemie Linux pliki dzienników są plikami zawierającymi komunikaty o funkcjach systemowych, które są używane przez administratorów systemu do identyfikowania ewentualnych problemów na komputerach. Dzienniki pomagają administratorom wizualizować zdarzenia, które miały miejsce w systemie w różnych okresach czasu. Zwykle wszystkie pliki dzienników są przechowywane w ramach / var / log katalog w systemie Linux. W tej lokalizacji istnieje kilka typów plików dziennika do przechowywania różnych wiadomości, takich jak plik dziennika do rejestrowania zdarzeń systemowych, plik dziennika dla komunikatów związanych z bezpieczeństwem, inne pliki dziennika przeznaczone dla jądra, użytkowników lub zadań cron. Głównym celem plików dziennika jest rozwiązywanie problemów systemowych. Większość plików dziennika w systemie Linux jest kontrolowana przez usługę rsyslogd. W nowszych wersjach dystrybucji systemu Linux pliki dziennika są również kontrolowane i zarządzane przez usługę systemową journald, która jest częścią programu inicjującego system. Dzienniki przechowywane przez demona dziennika są zapisywane w formacie binarnym i są głównie zmienne, przechowywane w pamięci RAM oraz w buforze pierścieni w / run / log / journal /. Jednak usługa dziennika może być również skonfigurowana do trwałego przechowywania komunikatów Syslog.

W systemie Linux serwer rsyslog można skonfigurować tak, aby uruchamiał centralny menedżer dziennika, w modelu usługi klient-klient, i wysyłał komunikaty dziennika przez sieć za pośrednictwem protokołów transportowych TCP lub UDP lub odbierał logi z urządzeń sieciowych, serwerów, routerów, przełączników lub inne systemy lub urządzenia wbudowane generujące dzienniki.

Demona Rsyslog można skonfigurować tak, aby działał jednocześnie jako klient i serwer. Skonfigurowany do działania jako serwer, Rsyslog będzie nasłuchiwał na domyślnym porcie 514 TCP i UDP i zacznie zbierać komunikaty dziennika, które są wysyłane przez sieć przez systemy zdalne. Jako klient, Rsyslog będzie przesyłać przez sieć wewnętrzne komunikaty logów do zdalnego serwera Ryslog przez te same porty TCP lub UDP.

Rsyslog będzie filtrować wiadomości syslog zgodnie z wybranymi właściwościami i działaniami. Filtry rsyslog są następujące:

  1. Pliki lub Filtry priorytetowe
  2. Filtry oparte na właściwościach
  3. Filtry oparte na wyrażeniach

Połączenia łatwość filtr jest reprezentowany przez wewnętrzny podsystem systemu Linux, który tworzy dzienniki. Są one podzielone na kategorie, jak przedstawiono poniżej:

  • auth / authpriv = wiadomości generowane przez procesy uwierzytelniania
  • cron= logi związane z zadaniami cron
  • Demon = wiadomości związane z uruchomionymi usługami systemowymi
  • jądro = Wiadomości jądra Linux
  • Poczta = wiadomości serwera pocztowego
  • syslog = wiadomości związane z syslog lub innymi demonami (serwer DHCP wysyła logi tutaj)
  • Lpr = drukarki lub komunikaty serwera druku
  • local0 - local7 = niestandardowe wiadomości pod kontrolą administratora

Połączenia priorytet lub dotkliwość poziomy są przypisane do słowa kluczowego i numeru, jak opisano poniżej.

  • EMERG = Emergency - 0
  • zaalarmować = Alerty - 1
  • błądzić = Błędy - 3
  • ostrzec = Ostrzeżenia - 4
  • tablica ogłoszeń = Powiadomienie - 5
  • Informacje = Informacje - 6
  • debug = Debugowanie - najwyższy poziom 7

Dostępne są również specjalne specjalne słowa kluczowe Rsyslog, takie jak gwiazdka (*), aby zdefiniować wszystkie
urządzenia lub priorytety, Żaden słowo kluczowe, które nie określa priorytetów, znak równości (=), który wybiera tylko ten priorytet i znak wykrzyknika (!), który neguje priorytet.

Część akcji syslog jest reprezentowana przez miejsce przeznaczenia komunikat. Punktem docelowym komunikatu dziennika może być plik przechowywany w systemie plików, plik w / var / log / ścieżka systemowa, inny lokalny proces wejściowy przez nazwaną potok lub FIFO. Komunikaty dziennika mogą być również kierowane do użytkowników, odrzucane do czarnej dziury (/ dev / null) lub wysyłane na standardowe wyjście lub do zdalnego serwera syslog za pośrednictwem protokołu TCP / UDP. Komunikaty dziennika mogą być również przechowywane w bazie danych, takiej jak MySQL lub PostgreSQL.

Skonfiguruj Rsyslog jako serwer

Demon Rsyslog jest automatycznie instalowany w większości dystrybucji Linuksa. Jeśli jednak Rsyslog nie jest zainstalowany w twoim systemie, możesz wydać jedno z poniższych poleceń, aby zainstalować usługę> będziesz potrzebować uprawnień roota do uruchamiania poleceń.

W dystrybucjach opartych na Debianie:

sudo apt-get install rsyslog

W dystrybucjach opartych na RHEL takich jak CentOS:

sudo yum zainstaluj rsyslog

Aby sprawdzić, czy demon Rsyslog jest uruchomiony w systemie, wykonaj poniższe polecenia, w zależności od twojej wersji dystrybucyjnej.

W nowszych dystrybucjach systemu Linux z systemd:

systemctl status rsyslog.service

W starszych wersjach Linuksa z init:

status usługi rsyslog

/etc/init.d/rsyslog status

Aby uruchomić demona rsyslog, wydaj następującą komendę.

W starszych wersjach Linuksa z init:

uruchom usługę rsyslog

/etc/init.d/rsyslog start

Na najnowszych dystrybucjach Linuksa:

systemctl start rsyslog.service

Aby ustawić program rsyslog do działania w trybie serwera, edytuj główny plik konfiguracyjny w /etc/rsyslog.conf. W tym pliku wprowadź następujące zmiany, jak pokazano w poniższym przykładzie.

sudo vi /etc/rsyslog.conf

Zlokalizuj i odkomentuj, usuwając hashtag (#) z następujących wierszy, aby umożliwić odbiór wiadomości protokołu UDP na porcie 514. Domyślnie port UDP jest używany przez syslog do wysyłania-odbierania wiadomości.

$ ModLoad imudp $ UDPServerRun 514

Ponieważ protokół UDP nie jest niezawodny do wymiany danych w sieci, można skonfigurować Rsyslog do wysyłania komunikatów dziennika do zdalnego serwera za pośrednictwem protokołu TCP. Aby włączyć protokół TCP, otwórz /etc/rsyslog.conf plik i odkomentuj następujące linie, jak pokazano poniżej. Umożliwi to demonom rsyslog wiązanie i nasłuchiwanie na gnieździe TCP na porcie 514.

$ ModLoad imtcp $ InputTCPServerRun 514

Oba protokoły można włączyć w rsyslog, aby działały w tym samym czasie.

Jeśli chcesz określić, do których nadawców zezwolisz na dostęp do demona rsyslog, dodaj następujący wiersz po włączonych liniach protokołu:

$ AllowedSender TCP, 127.0.0.1, 10.110.50.0 / 24, * .twojadomena.com

Będziesz także musiał utworzyć nowy szablon, który będzie analizowany przez demona rsyslog przed otrzymaniem przychodzących dzienników. Szablon powinien instruować lokalny serwer Rsyslog, gdzie przechowywać przychodzące komunikaty dziennika. Zdefiniuj szablon zaraz po $ AllowedSender linia jak pokazano w poniższej próbce.

$ template Incoming-logs, "/ var / log /% HOSTNAME% /% PROGRAMNAME% .log" 
*. *  ? Incoming-logs & ~

Aby rejestrować tylko komunikaty generowane przez obiekt kern, użyj poniższej składni.

kern. *? Incoming-logs

Otrzymane dzienniki są analizowane przez powyższy szablon i będą przechowywane w lokalnym systemie plików w katalogu / var / log /, w plikach nazwanych po obiekcie klienta hostname, który wygenerował komunikaty: % HOSTNAME% i %NAZWA PROGRAMU% zmiennych.

Poniżej & ~ reguła przekierowania konfiguruje demona Rsyslog do zapisywania przychodzących wiadomości dziennika tylko do powyższych plików określonych przez nazwy zmiennych. W przeciwnym razie odebrane logi będą dalej przetwarzane i przechowywane również w zawartości lokalnych dzienników, takich jak / var / log / syslog file.

Aby dodać regułę, aby odrzucić wszystkie powiązane komunikaty dziennika na pocztę, możesz użyć poniższej instrukcji.

mail. * ~

Inne zmienne, których można użyć do wyprowadzania nazw plików, to:% syslogseverity%,% syslogfacility%,% timegenerated%,% HOSTNAME%,% syslogtag%,% msg%,% FROMHOST-IP%,% PRI%,% MSGID%, % APP-NAME%,% TIMESTAMP%,% $ rok%,% $ miesiąc%,% $ dzień%

Począwszy od wersji Rsyslog 7, nowy format konfiguracji może być użyty do zadeklarowania szablonu na serwerze Rsyslog.

Próbka szablonu 7 może wyglądać tak, jak pokazano w poniższych wierszach.

template (name = "MyTemplate" type = "string" string = "/ var / log /% FROMHOST-IP% /% PROGRAMNAME ::: secpath-replace% .log")

Kolejny tryb, w którym możesz napisać powyższy szablon, może być również pokazany poniżej:

template (name = "MyTemplate" type = "list") {stała (value = "/ var / log /") właściwość (name = "fromhost-ip") stała (value = "/") właściwość (name = "nazwa programu „SecurePath =” replace ”) stała (value =„. Log ”)} 

Aby zastosować zmiany wprowadzone w pliku konfiguracyjnym rsyslog, należy ponownie uruchomić demona, aby załadować nową konfigurację.

sudo service rsyslog restart

sudo systemctl restart rsyslog

Aby sprawdzić, które gniazda rsyslog w stanie nasłuchiwania są otwarte w systemie Debian Linux, możesz uruchomić netstat polecenie z uprawnieniami roota. Przekaż wyniki za pomocą narzędzia filtrującego, takiego jak grep.

sudo netstat -tulpn | grep rsyslog

Pamiętaj, że musisz także otwierać porty Rsyslog w zaporze sieciowej, aby umożliwić nawiązywanie połączeń przychodzących.

W dystrybucjach opartych na RHEL z włączoną zaporą Firewalld poniższe polecenia:

firewall-cmd –permanent –add-port = 514 / tcp

firewall-cmd –permanent –add-port = 514 / tcp

firewall-cmd -reload

W dystrybucjach opartych na Debianie z aktywną zaporą UFW wydaj poniższe polecenia:

ufw zezwalaj na 514 / tcp

ufw zezwala na 514 / udp

Reguły zapory Iptables:

iptables -A WEJŚCIE -p tcp -m tcp –dport 514 -j AKCEPTUJ

iptables -A INPUT -p udp –dport 514 -j AKCEPTUJ

Skonfiguruj Rsyslog jako klienta

Aby umożliwić uruchamianie demona rsyslog w trybie klienta i wyprowadzanie lokalnych komunikatów dziennika na zdalny serwer Rsyslog, edytuj /etc/rsyslog.conf plik i dodaj jedną z następujących linii:

*. * @IP_REMOTE_RSYSLOG_SERVER: 514

*. * @ FQDN_RSYSLOG_SERVER: 514

Ta linia włącza usługę Rsyslog do wysyłania wszystkich wewnętrznych dzienników do odległego serwera Rsyslog na porcie UDP 514.

Aby wysłać dzienniki za pośrednictwem protokołu TCP, użyj następującego szablonu:

*. * @@ IP_reomte_syslog_server: 514

Aby wysyłać tylko dzienniki związane z cron ze wszystkimi priorytetami do serwera rsyslog, użyj poniższego szablonu:

cron. * @ IP_reomte_syslog_server: 514

W przypadku, gdy serwer Rsyslog nie jest dostępny przez sieć, dołącz poniższe wiersze do pliku /etc/rsyslog.conf po stronie klienta, aby tymczasowo przechowywać dzienniki w zbuforowanym pliku dysku, dopóki serwer nie przejdzie w tryb online.

$ ActionQueueFileName kolejka $ ActionQueueMaxDiskSpace 1g $ ActionQueueSaveOnShutdown na $ ActionQueueType LinkedList $ ActionResumeRetryCount -1

Aby zastosować powyższe reguły, demon Rsyslog musi zostać zrestartowany, aby mógł działać jako klient.

Źródło