Slajd 1/35
Zdalne logowanie Syslog i rsyslog w systemie Linux
Cel slajdu: Przedstawienie kompletnego przewodnika wdrożenia centralnego serwera rsyslog w systemie Linux oraz konfiguracji bezpiecznego przekazywania zdarzeń z innych stacji Linux i routerów MikroTik RouterOS.

Strona tytułowa i wprowadzenie do przewodnika

Niniejszy przewodnik stanowi rozszerzenie zagadnień audytu i telemetrii omówionych w Wykładzie 6 ('Logowanie zdarzeń i bezpieczeństwo'). Przedstawia techniczne szczegóły wdrożenia produkcyjnego serwera rsyslog oraz podłączenia heterogenicznych węzłów sieciowych.

  • Cel inżynierski: Zbudowanie niezawodnego repozytorium zdarzeń systemowych odpornego na awarie łączy i próby zatarcia śladów przez intruzów
  • System operacyjny serwera: System Linux (Debian 12 / Ubuntu 22.04 / 24.04 LTS) z demonem rsyslog w wersji 8.x wspierającym nowoczesną składnię RainerScript
  • Źródła zdarzeń: Inne stacje i serwery Linux (systemd-journald, rsyslog, bufor dyskowy) oraz urządzenia sieciowe MikroTik RouterOS (wersje v6 i v7)
  • Standardy i bezpieczeństwo: Zgodność ze specyfikacjami RFC 3164, RFC 5424 (IETF Syslog), szyfrowanie TLS (RFC 5425) oraz tunelowanie VPN
Protokół Syslog: Standard komunikacyjny warstwy aplikacji definiujący jednolity format oraz protokół przesyłania powiadomień diagnostycznych, zdarzeń audytowych i błędów w sieciach IP, sformalizowany w dokumentach RFC 3164 oraz RFC 5424.
Zdalne logowanie Syslog i rsyslog Syslog i rsyslog w systemie Linux Centralne gromadzenie zdarzeń z systemów Linux i routerów MikroTik RouterOS 🐧 Klient Linux rsyslog + journald ⚡ MikroTik RouterOS Akcje zdalne i tematy 🛡 Serwer rsyslog RainerScript i TLS Zdalne logowanie Syslog i rsyslog w systemie Linux
Slajd 2/35
Architektura centralnego gromadzenia logów sieciowych
Cel slajdu: Przedstawienie topologii i przepływu zdarzeń z węzłów brzegowych do dedykowanego serwera logów.

Podstawy architektury i standardy

Centralizacja logowania opiera się na architekturze klient-serwer. Urządzenia generujące zdarzenia (nadawcy) przesyłają rekordy przez sieć do scentralizowanego demona rsyslog (odbiornik), który porządkuje je w strukturze katalogów.

  • Nadawcy (Klienci): Stacje robocze, serwery aplikacyjne, routery brzegowe MikroTik, punkty dostępowe Wi-Fi oraz przełączniki zarządzalne
  • Medium transportowe: Protokół bezpołączeniowy UDP (niski narzut, podatność na straty) lub połączeniowy TCP (gwarancja dostarczenia) na standardowym porcie 514
  • Bezpieczeństwo sesji: Szyfrowanie kanału protokołem TLS na porcie 6514 dla komunikacji wychodzącej poza zaufaną podsieć LAN
  • Separacja danych: Dynamiczne rozdzielanie napływających logów do odrębnych podkatalogów na podstawie nazwy hosta (%HOSTNAME%) i daty zdarzenia
Zasada integralności logów: Serwer logów powinien być maszyną dedykowaną z wyłączonymi zbędnymi usługami publicznymi. Dostęp do katalogu /var/log/remote/ powinien być ściśle ograniczony wyłącznie do uprawnionych audytorów i systemów klasy NMS/SIEM.
Architektura centralnego logowania 💻 STACJA ROBOCZA Klient Linux 192.168.1.50 ⚡ ROUTER MikroTik Router 192.168.1.1 ▤ SERWER Serwer rsyslog 192.168.1.100 Przełącznik LAN / WAN Port 514 UDP/TCP Port 6514 TLS TCP 514 / TLS UDP 514 Strumień Magazyn dyskowy /var/log/remote/ %HOSTNAME%/*.log
Slajd 3/35
Ewolucja standardu Syslog: RFC 3164 a nowożytny RFC 5424
Cel slajdu: Porównanie historycznego formatu BSD z obowiązującym standardem IETF i uzasadnienie konieczności stosowania RFC 5424.

Podstawy architektury i standardy

Przez dekady w systemach UNIX dominował nieoficjalny format BSD Syslog (opisany informacyjnie w RFC 3164). Dopiero standard RFC 5424 wprowadził rygorystyczne reguły składniowe.

  • Standard BSD (RFC 3164): Definiuje nagłówek PRI, datę w formacie 'Mmm dd hh:mm:ss' oraz wolny tekst komunikatu. Brak roku powodował problemy przy archiwizacji na przełomie grudnia i stycznia
  • Standard IETF (RFC 5424): Wprowadza numer wersji protokołu, obowiązkowy znacznik czasu zgodny z ISO 8601 z przesunięciem strefowym oraz precyzją mikrosekundową
  • Dane strukturalne (Structured Data): Bloki par klucz-wartość ujęte w nawiasy kwadratowe [SD-ID param="val"], eliminujące konieczność pisania skomplikowanych wyrażeń regularnych (regex)
  • Dopasowanie do urządzeń: Nowoczesne dystrybucje Linux domyślnie wspierają RFC 5424. Urządzenia MikroTik RouterOS oferują przełącznik trybu (bsd-syslog=yes/no)
Przykład parsowania: W formacie RFC 3164 data "Feb 29 12:00:00" nie pozwala określić roku przestępnego. W formacie RFC 5424 zapis "2024-02-29T12:00:00.000000Z" jednoznacznie określa moment wystąpienia w skali globalnej.
Porównanie RFC 3164 i RFC 5424 RFC 3164: Format BSD Syslog (Przestarzały standard historyczny) <34>Oct 11 22:14:15 mymachine su: 'su root' failed for lonvick on /dev/pts/8 • Brak roku w dacie, niejednoznaczny format strefy czasowej, brak mikrosekund • Brak ujednoliconego podziału na nazwę procesu, PID i identyfikator zdarzenia RFC 5424: Format IETF Syslog (Nowoczesny standard przemysłowy) <165>1 2026-09-29T18:30:00.123456+02:00 edge-rt01 myapp 1234 ID47 [auth@32473 user="admin"] Logowanie udane Kluczowe innowacje RFC 5424: 1. Wersja protokołu (1), precyzyjny znacznik ISO 8601 (rok, data, czas UTC/strefa, mikrosekundy) 2. Identyfikacja procesu (APP-NAME, PROCID, MSGID) oraz dane strukturalne [SD-ID]
Slajd 4/35
Klasyfikacja komunikatów: kody Facility i poziomy Severity
Cel slajdu: Szczegółowe omówienie podziału na kategorie systemowe oraz stopnie pilności zdarzeń.

Podstawy architektury i standardy

Każdy komunikat w protokole Syslog jest precyzyjnie sklasyfikowany przy użyciu dwóch współrzędnych: źródła pochodzenia (Facility) oraz poziomu dotkliwości (Severity).

  • Facility (Kody źródeł 0–23): Określa podsystem, który wygenerował zdarzenie. Standard rezerwuje kody 0–15 dla funkcji systemowych (kern, mail, daemon, authpriv) oraz 16–23 (local0–local7) dla urządzeń sieciowych i aplikacji administratora
  • Severity (Ważność zdarzenia 0–7): Określa pilność komunikatu. Skala biegnie od poziomu 0 (Emergency – całkowita awaria systemu) do 7 (Debug – informacje developerskie)
  • Konwencja local0..local7: Urządzenia sieciowe MikroTik, Cisco oraz zapory ogniowe najczęściej konfiguruje się do wysyłania komunikatów z kodem local0 lub local1
  • Poufność audytowa: Kody 'auth' (4) i 'authpriv' (10) zawierają dane o logowaniu użytkowników i muszą być chronione przed dostępem niepowołanych procesów
Hierarchia ważności: Reguły filtrowania w rsyslog często wykorzystują relację nierówności, np. zapis kern.warning oznacza przechwytywanie zdarzeń jądra o poziomie warning (4) oraz wszystkich poważniejszych: error (3), crit (2), alert (1) i emerg (0).
Kody Facility i poziomy Severity KodPoziom (Severity)Znaczenie i zastosowanie0Emergency (emerg)System niezdatny do użytku (panika jądra)1Alert (alert)Wymagana natychmiastowa reakcja administratora2Critical (crit)Warunki krytyczne (awaria sprzętowa, utrata zasilania)3Error (err)Warunki błędu uniemożliwiające działanie modułu4Warning (warning)Ostrzeżenia o możliwych anomaliach lub limitach5Notice (notice)Prawidłowe, lecz istotne zdarzenia (restart usługi)6Informational (info)Standardowe komunikaty operacyjne (logowanie sesji)7Debug (debug)Szczegółowe komunikaty diagnostyczne programistów Wybrane kody źródeł (Facility 0–23): 0 (kern): jądro OS | 1 (user): aplikacje użytkownika | 3 (daemon): demony systemowe 4 (auth), 10 (authpriv): uwierzytelnianie (SSH, sudo, PAM) | 5 (syslog): wewnętrzne logi rsyslog 16–23 (local0 – local7): niestandardowe źródła lokalne (routery, zapory ogniowe, NMS)
Slajd 5/35
Matematyka priorytetu PRI: obliczanie i dekodowanie
Cel slajdu: Przedstawienie algorytmu obliczania pojedynczej liczby priorytetu PRI oraz operacji odwrotnej (dekodowania).

Podstawy architektury i standardy

Aby zminimalizować rozmiar nagłówka w pakietach UDP, twórcy protokołu Syslog połączyli kod źródła (Facility) oraz stopień ważności (Severity) w jedną wartość liczbową zwaną priorytetem (PRI).

  • Liczba PRI w nawiasach ostrych: Komunikat przesyłany przez sieć zawsze zaczyna się od zapisu <PRI>, np. <134> lub <37>
  • Operacja kodowania: PRI = (Facility * 8) + Severity. Mnożenie przez 8 odpowiada przesunięciu bitowemu w lewo o 3 bity (Facility << 3 | Severity)
  • Operacja dekodowania: Aby odzyskać kod źródła, wykonujemy dzielenie całkowite: Facility = PRI div 8. Aby odzyskać ważność: Severity = PRI mod 8 (lub operacja bitowa PRI & 0x07)
  • Maksymalny zakres: Ponieważ Facility przyjmuje wartości 0–23, a Severity 0–7, maksymalna wartość PRI wynosi (23 * 8) + 7 = 191
Weryfikacja wiersza poleceń: Jeśli w surowym zrzucie pakietów tcpdump widzimy nagłówek <189>: 189 / 8 = 23 (local7), 189 % 8 = 5 (notice). Oznacza to komunikat o statusie Notice ze źródła local7.
Matematyka priorytetu PRI Formuła matematyczna priorytetu: PRI = (Facility × 8) + Severity Przykład 1: Router MikroTik • Facility: local0 (kod 16) • Severity: Informational (kod 6) Obliczenie: (16 × 8) + 6 = 128 + 6 <134> Przykład 2: Błąd logowania Linux • Facility: auth (kod 4) • Severity: Notice (kod 5) Obliczenie: (4 × 8) + 5 = 32 + 5 <37>
Slajd 6/35
Format komunikatu RFC 5424: ISO 8601 i dane strukturalne
Cel slajdu: Przedstawienie budowy nowoczesnego rekordu logu z mikrosekundową precyzją UTC oraz blokami danych strukturalnych.

Podstawy architektury i standardy

Standard RFC 5424 eliminuje chaos interpretacyjny, wprowadzając rygorystyczny format nagłówka podzielony spacjami na ściśle określone pola.

  • PRI i VERSION: Zawiera liczbę priorytetu oraz bezpośrednio po niej numer wersji (obecnie zawsze 1)
  • TIMESTAMP ISO 8601: Format RRRR-MM-DDTHH:MM:SS.mmmmmm+/-HH:MM. Znak Z oznacza czas uniwersalny UTC, eliminując pomyłki wynikające ze zmian czasu letniego/zimowego
  • HOSTNAME i APP-NAME: Precyzyjna identyfikacja hosta (FQDN) oraz nazwy demona (zastępuje dawny tag BSD)
  • PROCID i MSGID: Identyfikator PID procesu oraz identyfikator rodzaju zdarzenia wykorzystywany przez systemy korelacji
  • STRUCTURED-DATA (SD): Pola par klucz=wartość z unikalnym identyfikatorem korporacyjnym (Private Enterprise Number IANA)
Brak danych (NILVALUE): Jeśli dane pole nagłówka (np. PROCID lub MSGID) nie jest znane, standard RFC 5424 nakazuje wstawienie pojedynczego znaku dywizu - jako wartości pustej (NILVALUE), co zachowuje pozycje kolejnych pól.
Struktura rekordu RFC 5424 Anatomia rekordu IETF RFC 5424 <PRI>VER TIMESTAMP HOSTNAME APP-NAME PROCID MSGID [SD] MSG PoleWartość w przykładzieRola w standardzie RFC 5424<PRI>VER<165>1PRI=165 (local4.notice), Wersja protokołu=1TIMESTAMP2026-09-29T18:45:00.102358ZFormat ISO 8601 z mikrosekundami i strefą UTCHOSTNAMErouter-core.labFQDN lub adres IP nadawcy komunikatuAPP-NAMEsshdNazwa aplikacji lub modułu generującegoPROCID14820Identyfikator procesu w systemie operacyjnymMSGIDAUTH_FAILZdefiniowany identyfikator typu zdarzenia[SD][audit@32473 ip="10.0.0.5"]Dane strukturalne (Structured Data) w nawiasach []MSGNieudana próba logowania rootWłaściwy tekst komunikatu dla człowieka
Slajd 7/35
Architektura wewnętrzna rsyslog i język RainerScript
Cel slajdu: Zrozumienie modularnej budowy demona rsyslog oraz zalet nowoczesnej składni konfiguracyjnej RainerScript.

Konfiguracja serwera centralnego

Demon rsyslog (Rocket-fast System for Log Processing) to nowoczesny, wielowątkowy system przetwarzania zdarzeń w Linux. Zastąpił on archaicznego demona sysklogd.

  • Modularna architektura wejścia-wyjścia: Wszystkie funkcje realizowane są przez dedykowane moduły: wejściowe (im* - input modules) oraz wyjściowe (om* - output modules)
  • Wewnętrzny system kolejek: Komunikaty po odebraniu trafiają do głównej kolejki pamięciowej, co uniezależnia szybkość odbioru pakietów sieciowych od szybkości zapisu na dysku
  • Język RainerScript: Wprowadzony w rsyslog v6 i rozwinięty w v8 deklaratywny język konfiguracyjny z pełną obsługą bloków warunkowych if/then/else, funkcji i obiektów
  • Odejście od składni legacy: Przestarzałe dyrektywy z prefiksem dolara (np. $ModLoad, $InputTCPServerRun) są podatne na błędy kolejności i nie powinny być stosowane w nowych instalacjach
Zasada działania instrukcji stop: Słowo kluczowe stop (dawniej & ~) w RainerScript kończy przetwarzanie danego komunikatu w bieżącym potoku, co uniemożliwia jego zduplikowanie w standardowych logach systemowych (/var/log/syslog).
Architektura rsyslog i RainerScript Wejścia (Inputs) imudp (514 UDP) imtcp (514 TCP) Główna kolejka Pamięć RAM Bufor FIFO Filtry i reguły RainerScript ruleset() & if Wyjścia omfile (Dysk) omfwd (Sieć) # Przykładowy blok w nowoczesnej składni RainerScript: module(load="imtcp") input(type="imtcp" port="514" ruleset="ZdalneLogi") ruleset(name="ZdalneLogi") { action(type="omfile" dynaFile="PlikHosta") stop # Zatrzymanie dalszego przetwarzania w kolejce domyślnej }
Slajd 8/35
Przygotowanie serwera centralnego: katalogi i uprawnienia
Cel slajdu: Prawidłowa konfiguracja systemu plików serwera Linux pod kątem bezpiecznego przechowywania logów zdalnych.

Konfiguracja serwera centralnego

Domyślnie demon rsyslog w nowoczesnych dystrybucjach Linux (Debian, Ubuntu) działa z obniżonymi uprawnieniami nieuprzywilejowanego użytkownika 'syslog' należącego do grupy 'adm'.

  • Lokalizacja magazynu: Zaleca się utworzenie odrębnego katalogu /var/log/remote/ dedykowanego wyłącznie dla hostów zewnętrznych
  • Uprawnienia katalogu głównego: Katalog /var/log/remote musi mieć prawa 0750 (rwxr-x---), gdzie właścicielem jest syslog, a grupą adm
  • Maska tworzenia plików: W konfiguracji rsyslog definiujemy globalne parametry $FileCreateMode 0640 oraz $DirCreateMode 0750
  • Prawa grupy adm: Członkowie grupy adm (administratorzy systemowi) mają prawo odczytu, co umożliwia analizę bez konieczności używania konta root
  • Osobny punkt montowania: W środowiskach produkcyjnych katalog /var/log/remote powinien być osobną partycją dyskową LVM lub montowaniem NFS/iSCSI
Zabezpieczenie przed atakiem DoS na dysk: Jeśli partycja /var/log ulegnie zapełnieniu w 100%, system Linux może przestać rejestrować nowe procesy i uniemożliwić logowanie po SSH. Umieszczenie /var/log/remote na odrębnym wolumenie dyskowym chroni system bazowy serwera.
Katalogi i uprawnienia serwera # 1. Utworzenie dedykowanego magazynu logów zdalnych: $ sudo mkdir -p /var/log/remote # 2. Ustawienie właściciela i grupy systemowej (syslog:adm): $ sudo chown -R syslog:adm /var/log/remote $ sudo chmod 750 /var/log/remote Struktura uprawnień w systemie plików Linux: drwxr-x--- syslog adm /var/log/remote/ drwxr-x--- syslog adm /var/log/remote/router-mikrotik/ -rw-r----- syslog adm 2026-09-29.log (Maska 0640) • Dostęp: użytkownik syslog (zapis), grupa adm (odczyt audytowy), inni (brak praw 0)
Slajd 9/35
Serwer rsyslog: uruchomienie nasłuchu na portach 514 UDP i 514 TCP
Cel slajdu: Konfiguracja modułów wejściowych imudp oraz imtcp w rsyslog z wykorzystaniem składni RainerScript.

Konfiguracja serwera centralnego

Domyślnie po instalacji rsyslog w systemie Linux nasłuchuje wyłącznie na lokalnym gnieździe uniksowym /dev/log. Odbiór logów przez sieć wymaga jawnego załadowania modułów imudp i imtcp.

  • Moduł imudp: Odpowiada za nasłuch bezpołączeniowych datagramów UDP. Jest lekki i wysoce wydajny, niezbędny do obsługi urządzeń MikroTik RouterOS i przełączników sieciowych
  • Moduł imtcp: Odpowiada za zestawianie połączeń TCP. Zapewnia niezawodny strumień danych z mechanizmem retransmisji, idealny dla klientów Linux
  • Plik konfiguracyjny: Zaleca się umieszczanie konfiguracji serwera w pliku o wysokim priorytecie: /etc/rsyslog.d/10-server.conf
  • Restart i weryfikacja: Po edycji pliku wykonujemy restart serwisu: sudo systemctl restart rsyslog i sprawdzamy stan gniazd poleceniem ss -tulpn | grep 514
Wiązanie z konkretnym adresem IP: Domyślnie rsyslog nasłuchuje na wszystkich interfejsach (0.0.0.0). Jeśli serwer posiada dedykowaną kartę sieciową do zarządzania, możemy ograniczyć nasłuch: input(type="imtcp" port="514" address="192.168.1.100").
Aktywacja nasłuchu UDP/TCP 514 # Plik: /etc/rsyslog.d/10-server.conf # 1. Odbiór UDP (dla MikroTik i urządzeń brzegowych) module(load="imudp") input(type="imudp" port="514") # 2. Odbiór TCP (niezawodny strumień dla klientów Linux) module(load="imtcp") input(type="imtcp" port="514") Weryfikacja aktywnych gniazd sieciowych w Linux: $ sudo ss -tulpn | grep 514 udp UNCONN 0 0 0.0.0.0:514 0.0.0.0:* users:(("rsyslogd",pid=842,fd=6)) tcp LISTEN 0 25 0.0.0.0:514 0.0.0.0:* users:(("rsyslogd",pid=842,fd=7))
Slajd 10/35
Serwer rsyslog: szablony dynamicznych ścieżek zapisu plików
Cel slajdu: Wykorzystanie mechanizmu szablonów (templates) do automatycznej segmentacji logów według nazwy urządzenia i daty.

Konfiguracja serwera centralnego

Zapisywanie wszystkich logów z kilkudziesięciu urządzeń do jednego pliku doprowadziłoby do całkowitej nieczytelności repozytorium. Rsyslog udostępnia potężny mechanizm szablonów dynamicznych.

  • Koncepcja dynaFile: Szablon typu string definiujący docelową ścieżkę zapisu na podstawie zmiennych zawartych w przetwarzanym komunikacie
  • Automatyczne tworzenie katalogów: Jeśli podkatalog dla danego urządzenia nie istnieje, rsyslog utworzy go w locie z prawami zdefiniowanymi w $DirCreateMode
  • Zmienna %HOSTNAME% vs %FROMHOST-IP%: Wartość %HOSTNAME% pochodzi z nagłówka komunikatu. Jeśli zależy nam na bezpieczeństwie i uniknięciu podszywania się, zaleca się użycie adresu źródłowego %FROMHOST-IP%
  • Rotacja dzienna w nazwie: Zastosowanie znaczników roku, miesiąca i dnia w nazwie pliku eliminuje konieczność natychmiastowej rotacji zewnętrznej i ułatwia archiwizację
Zaawansowany szablon z podziałem na aplikacje:
string="/var/log/remote/%HOSTNAME%/%$YEAR%-%$MONTH%-%$DAY%-%PROGRAMNAME%.log" rozdziela dodatkowo logi według demona (np. sshd, firewall, dhcp).
Szablony dynamicznych ścieżek # Definicja szablonu dynamicznej ścieżki w RainerScript: template(name="ZdalnePliki" type="string" string="/var/log/remote/%HOSTNAME%/%$YEAR%-%$MONTH%-%$DAY%.log") Jak działa mechanizm zmiennych właściwości (Property Replacer): • %HOSTNAME% – odczytuje nazwę hosta z nagłówka (np. router-mikrotik lub srv-db) • %FROMHOST-IP% – alternatywnie: rzeczywisty adres IP pakietu (zapobiega fałszowaniu) • %$YEAR%-%$MONTH%-%$DAY% – automatyczny podział plików według dni kalendarzowych Efekt: Rsyslog automatycznie tworzy katalog /var/log/remote/router-mikrotik/ i plik dzienny!
Slajd 11/35
Serwer rsyslog: izolacja strumieni zdalnych i dyrektywa stop
Cel slajdu: Zapobieganie zanieczyszczaniu lokalnych plików systemowych przez logi z urządzeń sieciowych za pomocą dedykowanych zestawów reguł.

Konfiguracja serwera centralnego

Jednym z najczęstszych problemów w niewłaściwie skonfigurowanym serwerze syslog jest 'zalewanie' lokalnych plików (/var/log/syslog i /var/log/messages) milionami wpisów z zewnętrznych routerów.

  • Zestawy reguł (ruleset): Pozwalają na utworzenie niezależnych, równoległych potoków przetwarzania zdarzeń całkowicie odseparowanych od kolejki domyślnej
  • Wiązanie z wejściem: Dyrektywa input(type="imudp" ... ruleset="RegulyZdalne") kieruje pakiety z danego portu bezpośrednio do wskazanego rulesetu
  • Instrukcja stop: Umieszczona na końcu reguły ruleset natychmiast zatrzymuje przetwarzanie wiadomości, uniemożliwiając jej przejście do reguł ogólnych systemu
  • Czystość audytowa: Lokalny system Linux zachowuje w /var/log/syslog wyłącznie własne logi serwisowe, a ruch sieciowy trafia czysto do /var/log/remote/
Uwaga weryfikacyjna: Przed zrestartowaniem demona rsyslog po wprowadzeniu zmian w plikach konfiguracyjnych należy zawsze sprawdzić poprawność składni poleceniem: sudo rsyslogd -N1. Kod błędu 0 oznacza poprawną składnię.
Izolacja reguł ruleset # Kompletna konfiguracja serwera z izolacją reguł ruleset: template(name="ZdalnePliki" type="string" string="/var/log/remote/%HOSTNAME%/%$YEAR%-%$MONTH%-%$DAY%.log") ruleset(name="RegulyZdalne") { action(type="omfile" dynaFile="ZdalnePliki" fileCreateMode="0640" dirCreateMode="0750") stop # KLUCZOWE: odrzuca komunikat z dalszego potoku! } # Powiązanie wejść z wydzielonym zbiorem reguł: input(type="imudp" port="514" ruleset="RegulyZdalne") input(type="imtcp" port="514" ruleset="RegulyZdalne") Gwarancja: Żadne zdarzenie z routerów nie trafi do lokalnego /var/log/syslog!
Slajd 12/35
Serwer rsyslog: zabezpieczenie portów w zaporze ogniowej UFW
Cel slajdu: Ograniczenie dostępu do portu 514 wyłącznie do zaufanych adresów IP i podsieci zarządzających.

Konfiguracja serwera centralnego

Domyślnie otwarcie portu w rsyslog udostępnia usługę każdemu pakietowi trafiającemu do serwera. Protokół UDP jest podatny na podszywanie się pod źródłowy adres IP (IP spoofing).

  • Filtracja źródłowa: Zezwolenia na zaporze sieciowej muszą bezwzględnie definiować dozwolone adresy IP nadawców (from <IP/SUBNET>)
  • Separacja protokołów: Zaleca się otwieranie portu 514 osobno dla UDP (dla urządzeń sieciowych) i TCP (dla stacji roboczych)
  • Komentarze w regułach UFW: Dodanie parametru comment ułatwia późniejszy audyt reguł bezpieczeństwa
  • Alternatywa w nftables/iptables: Odpowiednik niskopoziomowy: iptables -A INPUT -p udp -s 192.168.1.0/24 --dport 514 -j ACCEPT
  • Blokada domyślna: Wszystkie pakiety syslog pochodzące z innych podsieci powinny być bezwzględnie zrzucane (DROP)
Zagrożenie atakiem Amplification/Reflection: Pozostawienie otwartego portu UDP w sieci publicznej naraża serwer na wykorzystanie w atakach DDoS oraz zalanie niechcianym ruchem śmieciowym.
Zabezpieczenie zapory UFW # Konfiguracja zapory ogniowej UFW (Uncomplicated Firewall): $ sudo ufw allow from 192.168.1.0/24 to any port 514 proto udp comment "Syslog UDP LAN" $ sudo ufw allow from 192.168.1.0/24 to any port 514 proto tcp comment "Syslog TCP LAN" $ sudo ufw allow from 10.10.0.1 to any port 514 proto udp comment "Mikrotik Brzeg" $ sudo ufw status verbose Zasada zerowego zaufania (Zero Trust) dla portu 514: • Nigdy nie otwieraj portu 514 UDP dla całej sieci Internet (0.0.0.0/0)! • Protokół UDP nie uwierzytelnia nadawcy – atakujący może sfałszować nagłówek (IP Spoofing) • Wstrzyknięcie fałszywych logów może posłużyć do zatarcia śladów ataku lub przepełnienia dysku Wymóg: Dostęp wyłącznie dla znanych adresów IP routerów i podsieci zarządzającej.
Slajd 13/35
Klient Linux: architektura przekazywania komunikatów
Cel slajdu: Przedstawienie roli lokalnego demona rsyslog na stacji klienckiej jako pośrednika i bufora zdarzeń.

Konfiguracja klienta Linux

W systemie Linux aplikacje nie wysyłają logów bezpośrednio przez sieć. Zamiast tego komunikują się z lokalnym gniazdem /dev/log obsługiwanym przez demona rsyslog lub systemd-journald.

  • Rola lokalnego pośrednika: Lokalny demon rsyslog odbiera komunikaty z jądra i aplikacji, filtruje je, a następnie kieruje zarówno do lokalnych plików, jak i przez sieć do serwera
  • Izolacja aplikacji od awarii sieci: Jeśli sieć ulegnie awarii, aplikacje użytkownika (np. serwer WWW Apache/Nginx) nie zawieszają się w oczekiwaniu na odpowiedź serwera logów
  • Moduł omfwd: Wbudowany w rsyslog moduł wyjściowy realizujący przekazywanie sieciowe (Output Module Forwarding)
  • Stara vs nowa składnia: Klasyczny zapis *.* @@192.168.1.100:514 jest funkcjonalnym odpowiednikiem nowoczesnego bloku action(type="omfwd" ... protocol="tcp")
Składnia znaków @: W klasycznym formacie rsyslog pojedynczy znak @ oznacza transport UDP (np. @192.168.1.100:514), natomiast podwójny znak @@ oznacza transport TCP (np. @@192.168.1.100:514).
Architektura klienta Linux Aplikacje lokalne sshd, sudo, nginx Biblioteka libc /dev/log Klient rsyslog imuxsock / imjournal Filtracja i kolejka RAM Akcja sieciowa (omfwd) TCP 514 (@@) / TLS Bufor dyskowy (Spool) # Minimalna konfiguracja przekazywania na kliencie Linux: # Plik: /etc/rsyslog.d/50-forward.conf action(type="omfwd" target="192.168.1.100" port="514" protocol="tcp")
Slajd 14/35
Klient Linux: kolejka buforowa chroniąca przed utratą logów
Cel slajdu: Wdrożenie mechanizmu buforowania dyskowego (Disk-Assisted Queue) na wypadek awarii sieci lub serwera centralnego.

Konfiguracja klienta Linux

Standardowa wysyłka sieciowa bez bufora dyskowego traci logi w momencie zresetowania klienta lub awarii łącza trwającej dłużej niż pojemność bufora RAM.

  • Kolejka LinkedList: Wielowątkowa kolejka w pamięci operacyjnej o zmiennym rozmiarze, zapewniająca minimalne opóźnienia w normalnym trybie pracy
  • Bufor dyskowy (Disk-Assisted): Po przekroczeniu limitu elementów w pamięci RAM rsyslog automatycznie zrzuca nadmiarowe komunikaty do plików w katalogu /var/spool/rsyslog/
  • Parametr queue.saveonshutdown: Gwarantuje, że podczas restartu lub zamykania stacji klienckiej zawartość pamięci RAM zostanie bezpiecznie zapisana na nośnik trwały
  • Nieskończone ponawianie (resumeRetryCount -1): Klient nigdy nie porzuca prób ponownego połączenia z serwerem i wznawia wysyłkę natychmiast po usunięciu awarii
Katalog bufora: Przed aktywacją kolejki upewnij się, że katalog bufora istnieje i ma poprawne uprawnienia:
sudo mkdir -p /var/spool/rsyslog && sudo chown -R syslog:adm /var/spool/rsyslog.
Kolejka buforowa na dysku # Konfiguracja niezawodnej kolejki z buforem dyskowym (Disk-Assisted): action(type="omfwd" target="192.168.1.100" port="514" protocol="tcp" queue.type="LinkedList" queue.filename="fwdKolejka" queue.spoolDirectory="/var/spool/rsyslog" queue.maxdiskspace="1g" queue.saveonshutdown="on" action.resumeRetryCount="-1") # Nieskończona liczba prób ponowienia Przepływ zdarzeń podczas awarii łącza: 1. Stan normalny: Zdarzenia wędrują bezpośrednio z pamięci RAM przez TCP do serwera. 2. Awaria łącza: Pakiety TCP nie otrzymują potwierdzeń ACK. Kolejka RAM napełnia się. 3. Zrzut na dysk: Rsyslog tworzy pliki /var/spool/rsyslog/fwdKolejka.* chroniąc logi. 4. Powrót łącza: Rsyslog automatycznie opróżnia bufor dyskowy na serwer centralny!
Slajd 15/35
Klient Linux: proste przekazywanie przez bezpołączeniowy protokół UDP
Cel slajdu: Przedstawienie zasad konfiguracji szybkiej wysyłki UDP w prostych sieciach lokalnych oraz analiza ograniczeń protokołu.

Konfiguracja klienta Linux

Protokół UDP przez lata był domyślnym standardem transportowym protokołu Syslog ze względu na minimalny narzut i prostotę implementacji.

  • Zasada 'Wyślij i zapomnij': System wysyła datagram UDP pod adres 192.168.1.100:514 bez oczekiwania na jakąkolwiek odpowiedź zwrotną ze strony serwera
  • Brak kontroli przeciążenia: W przypadku zalania łącza pakiety UDP są po cichu odrzucane przez przełączniki sieciowe, a nadawca nigdy się o tym nie dowiaduje
  • Długość komunikatu i MTU: Specyfikacja RFC 3164 ogranicza całkowity rozmiar komunikatu do 1024 bajtów (co bez trudu mieści się w standardowym MTU Ethernetu 1500 B bez fragmentacji IP; nowszy RFC 5424 zaleca min. 2048 B)
  • Kiedy stosować UDP?: W stabilnych sieciach lokalnych LAN o niskim obciążeniu lub na prostych urządzeniach IoT pozbawionych stosu TCP
Weryfikacja wysyłki UDP: Na kliencie możemy podejrzeć wysyłane pakiety narzędziem tcpdump:
sudo tcpdump -i any -nn udp port 514.
Przekazywanie logów przez UDP # Konfiguracja wysyłki przez protokół UDP (Port 514): # Sposób 1: Nowoczesna składnia RainerScript (Zalecana) action(type="omfwd" target="192.168.1.100" port="514" protocol="udp") # Sposób 2: Przestarzała składnia historyczna (Legacy) *.* @192.168.1.100:514 Zalety protokołu UDP: • Brak konieczności zestawiania sesji • Zerowy wpływ na wydajność klienta • Tryb "Wyślij i zapomnij" (Fire-and-forget) • Uniwersalna obsługa przez mikrokontrolery Wady i ryzyka UDP: • Brak potwierdzenia odbioru pakietu • Cicha utrata logów przy zatorze łącza • Podatność na spoofing adresu IP • Fragmentacja dużych pakietów powyżej MTU
Slajd 16/35
Klient Linux: niezawodne przekazywanie strumieniowe przez protokół TCP
Cel slajdu: Wdrożenie połączeniowego przesyłu zdarzeń z potwierdzeniem dostarczenia na poziomie warstwy transportowej.

Konfiguracja klienta Linux

Wykorzystanie protokołu TCP (Transmission Control Protocol) rozwiązuje problem zawodności UDP. Przesyłanie komunikatów opiera się na ciągłym strumieniu danych z kontrolą przepływu.

  • Potwierdzenia odbioru (ACK): Każdy rekord przekazany przez gniazdo TCP musi zostać potwierdzony przez stos sieciowy odbiorcy
  • Automatyczna retransmisja: Jeśli pakiet zostanie zgubiony przez router pośredni, jądro systemu Linux powtarza transmisję bez ingerencji aplikacji
  • Współpraca z kolejkami rsyslog: Dopiero gdy rsyslog otrzyma błąd zapisu do gniazda TCP, przełącza się na buforowanie w pamięci RAM lub na dysku
  • Znacznik podwójnej małpy (@@): W klasycznych plikach rsyslog.conf zapis @@ wskazuje protokół TCP na porcie 514
Framing w strumieniu TCP (Octet Counting): Ponieważ TCP jest protokołem strumieniowym (nie zachowuje granic datagramów), standard RFC 6587 definiuje metodę Octet Counting (poprzedzenie komunikatu długością w bajtach), co zapobiega sklejaniu sąsiednich komunikatów.
Niezawodna transmisja TCP # Konfiguracja niezawodnej wysyłki przez protokół TCP (Port 514): # Składnia nowoczesna RainerScript: action(type="omfwd" target="192.168.1.100" port="514" protocol="tcp") # Składnia legacy (dwa znaki @@ oznaczają strumień TCP): *.* @@192.168.1.100:514 Zapewnienie integralności w warstwie transportowej TCP: • Trójstronne uzgadnianie (SYN, SYN-ACK, ACK): Połączenie jest jawnie zestawiane. • Potwierdzenia i retransmisja: Każdy wysłany segment musi zostać potwierdzony przez serwer. • Wykrywanie zerwania połączenia: Klient natychmiast wie, że serwer jest niedostępny. Rezultat: Zero utraconych pakietów przy chwilowych zatorach lub przeciążeniach.
Slajd 17/35
Klient Linux: selektywne przekazywanie wybranych kategorii zdarzeń
Cel slajdu: Optymalizacja pasma i rozmiaru bazy logów poprzez selektywne wysyłanie wyłącznie kluczowych zdarzeń audytowych i błędów.

Konfiguracja klienta Linux

Przesyłanie każdego pojedynczego komunikatu diagnostycznego (np. z crona uruchamianego co minutę) z setek stacji roboczych niepotrzebnie obciąża serwer logów. Dobrą praktyką jest selekcja źródeł.

  • Selektory klasyczne: Zapis 'auth,authpriv.*' przekazuje wszystkie zdarzenia związane z logowaniem, podnoszeniem uprawnień i bezpieczeństwem
  • Filtrowanie według poziomu: Dyrektywa '*.err' powoduje wysłanie wyłącznie zdarzeń o stopniu pilności Error (3), Critical (2), Alert (1) i Emergency (0)
  • Filtry właściwości (Property-based): Możliwość filtrowania po nazwie programu ($programname), treści wiadomości ($msg) lub identyfikatorze procesu
  • Ochrona łącza WAN: W oddziałach firmy spiętych wolnymi łączami VPN selektywna filtracja redukuje ruch telemetryczny o ponad 90%
Wykluczanie kategorii (none): Składnia *.*;mail.none;cron.none oznacza przekazanie wszystkich logów z wyjątkiem podsystemu poczty i harmonogramu zadań cron.
Selektywne przekazywanie logów # Plik: /etc/rsyslog.d/40-selective.conf # 1. Wysyłaj wszystkie zdarzenia autoryzacji (SSH, sudo, PAM): auth,authpriv.* action(type="omfwd" target="192.168.1.100" port="514" protocol="tcp") # 2. Wysyłaj błędy jądra i awarie krytyczne (poziom err i wyższy): *.err;kern.warning action(type="omfwd" target="192.168.1.100" port="514" protocol="tcp") Zaawansowane filtry oparte na wyrażeniach (Expression-based Filters): if ($programname == "sshd" and $msg contains "Failed password") then { action(type="omfwd" target="192.168.1.100" port="514" protocol="tcp") } • Natychmiastowe przekazywanie wyłącznie wykrytych prób nieautoryzowanego dostępu!
Slajd 18/35
Klient Linux: integracja podsystemu systemd-journald z rsyslog
Cel slajdu: Zapewnienie poprawnego przekazywania logów z nowoczesnych serwisów zarządzanych przez systemd do demona rsyslog.

Konfiguracja klienta Linux

W nowoczesnych dystrybucjach Linux menedżerem rozruchu i serwisów jest systemd, który gromadzi logi w formacie binarnym za pośrednictwem demona systemd-journald.

  • Przechwytywanie strumieni stdout/stderr: Serwisy uruchamiane przez pliki .service (np. Docker, Nginx, WireGuard) wypisują logi na standardowe wyjście, które trafia bezpośrednio do journald
  • Gniazdo /run/systemd/journal/syslog: Aktywacja parametru 'ForwardToSyslog=yes' powoduje przekazywanie kopii komunikatów do tradycyjnego gniazda obsługiwanego przez rsyslog
  • Moduł imjournal vs imuxsock: Moduł imjournal czyta bezpośrednio z bazy binarnej journala, natomiast moduł imuxsock czyta z gniazda uniksowego. W dystrybucjach Debian/Ubuntu zaleca się imuxsock z ForwardToSyslog
  • Spójność metadanych: Rsyslog automatycznie mapuje identyfikatory systemd (np. _SYSTEMD_UNIT=nginx.service) na standardowe pola Facility i APP-NAME
Polecenie journalctl: Weryfikacja bezpośrednia na stacji klienckiej:
journalctl -u ssh.service -f pozwala na podgląd tych samych rekordów, które rsyslog wysyła na serwer centralny.
Integracja systemd-journald Serwisy systemd docker, nginx, wg stdout / stderr systemd-journald Baza binarna journala ForwardToSyslog=yes rsyslog (imjournal) Moduł odczytu Wysyłka sieciowa # Konfiguracja w /etc/systemd/journald.conf: [Journal] ForwardToSyslog=yes MaxLevelSyslog=debug # Restart usług po zmianie konfiguracji: $ sudo systemctl restart systemd-journald rsyslog
Slajd 19/35
Klient Linux: weryfikacja i testowanie wysyłki poleceniem logger
Cel slajdu: Wykorzystanie narzędzia logger do ręcznego generowania zdarzeń testowych o zadanym priorytecie i weryfikacji ich odbioru.

Konfiguracja klienta Linux

Standardowe uniksowe polecenie 'logger' jest podstawowym narzędziem administratora do weryfikacji konfiguracji logowania bez konieczności symulowania rzeczywistych awarii.

  • Flaga -p (Priority): Umożliwia określenie źródła i ważności w formacie facility.severity (np. auth.notice, kern.crit)
  • Flaga -t (Tag): Ustawia nazwę procesu/aplikacji generującej zdarzenie (pole APP-NAME w RFC 5424)
  • Flagi -n (Host) oraz -P (Port): Pozwalają na wysłanie pakietu bezpośrednio na zdalny adres IP, omijając lokalny proces rsyslog (idealne do testowania reguł zapory serwera)
  • Wybór protokołu (-d / -T): Flaga -d wymusza protokół UDP (datagram), natomiast flaga -T wymusza nawiązanie połączenia TCP
Skrypt automatyzujący testy: Administrator może umieścić wywołanie logger -p local0.alert "TEST_PING_FAIL" w skrypcie watchdog, aby weryfikować działanie reguł alarmowych w systemie LibreNMS.
Weryfikacja poleceniem logger # Testowanie lokalnego gniazda i kolejki wysyłkowej: $ logger -p auth.notice -t "TEST_AUDYT" "Ręczna próba audytowa z klienta" # Bezpośredni test sieciowy z pominięciem lokalnego rsyslog: $ logger -n 192.168.1.100 -P 514 -d -p local0.warning "Test sieciowy UDP" $ logger -n 192.168.1.100 -P 514 -T -p local0.err "Test sieciowy TCP" Weryfikacja na serwerze centralnym (/var/log/remote/): $ tail -f /var/log/remote/klient-linux/2026-09-29.log 2026-09-29T18:50:12+02:00 klient-linux TEST_AUDYT: Ręczna próba audytowa z klienta 2026-09-29T18:50:15+02:00 klient-linux logger: Test sieciowy TCP
Slajd 20/35
MikroTik RouterOS: architektura podsystemu logowania zdarzeń
Cel slajdu: Zrozumienie dwupoziomowego modelu logowania w RouterOS: definicji celów akcji (Actions) oraz filtrów reguł (Rules).

Zdalne logowanie z MikroTik RouterOS

Podsystem logowania w MikroTik RouterOS (zarówno w wersji v6, jak i v7) opiera się na rozdziale definicji miejsca zapisu (Actions) od kryteriów selekcji zdarzeń (Rules).

  • Tematy zdarzeń (Topics): RouterOS nie stosuje tradycyjnych kodów Facility wewnątrz systemu; zamiast tego zdarzenia oznaczane są etykietami tematycznymi (np. firewall, account, dhcp, wireless, ospf)
  • Dwupoziomowa konfiguracja: Najpierw tworzymy akcję zdalną (/system logging action), określając adres IP serwera, a następnie tworzymy regułę (/system logging add), przypisującą tematy do tej akcji
  • Ochrona kości Flash: Zapisywanie tysięcy wpisów zapory ogniowej na dysk flash routera (action=disk) potrafi zniszczyć pamięć NAND w ciągu kilku miesięcy
  • Ulokowanie w pamięci RAM: Domyślna akcja 'memory' przechowuje tylko 1000 ostatnich linii, co w przypadku awarii zasilania uniemożliwia ustalenie jej przyczyny
Podgląd konfiguracji w CLI RouterOS:
/system logging print wyświetla aktualne reguły, a /system logging action print wyświetla parametry celów akcji.
Architektura logowania RouterOS 1. Zdarzenia (Topics) system, info, error firewall, warning account, dhcp, wireless 2. Reguły (/system logging) Filtrowanie tematów Dodawanie prefiksów Wybór akcji docelowej 3. Akcje (Actions) memory (bufor RAM) disk (pamięć flash) remote (Syslog) Specyfika architektury sprzętowej RouterOS: • Domyślna akcja 'memory': Logi znikają bezpowrotnie po każdym restarcie zasilania! • Akcja 'disk': Nadmierny zapis do pamięci wbudowanej NAND/eMMC powoduje jej degradację • Akcja 'remote': Jedyny bezpieczny i rekomendowany sposób gromadzenia audytu produkcyjnego Wniosek: Routery MikroTik wymagają natychmiastowego skonfigurowania akcji zdalnej!
Slajd 21/35
MikroTik RouterOS: konfiguracja akcji zdalnej do serwera Linux
Cel slajdu: Precyzyjna konfiguracja akcji typu remote ze zdefiniowaniem adresu IP serwera, portu oraz formatu nagłówka.

Zdalne logowanie z MikroTik RouterOS

Aby router MikroTik mógł wysyłać komunikaty przez sieć, należy utworzyć profil akcji wskazujący parametry serwera rsyslog.

  • Parametr target=remote: Deklaruje, że dane wyjściowe będą pakowane w datagramy sieciowe UDP i kierowane pod wskazany adres IP
  • Przełącznik bsd-syslog=no: Flaga formatu znacznika czasu. Ustawienie wartości 'no' (lub w v7 syslog-time-format=iso8601) nakazuje routerowi generowanie daty i czasu w standardzie ISO 8601 ze strefą czasową zamiast tradycyjnego skróconego formatu BSD. Sam pakiet zachowuje strukturę RFC 3164
  • Wybór syslog-facility=local0: Przypisuje zdarzeniom kod źródła 16, co pozwala serwerowi Linux na natychmiastowe rozpoznanie, że nadawcą jest urządzenie sieciowe
  • Opcja syslog-severity=auto: RouterOS automatycznie przypisuje wagę: zdarzenia critical otrzymują kod 2, error kod 3, warning kod 4, a info kod 6
Adres źródłowy routera: Jeśli router posiada wiele interfejsów i adresów IP, upewnij się, że tablica routingu kieruje pakiety z adresu dozwolonego na zaporze serwera rsyslog (np. z sieci zarządzającej). Można to wymusić konfigurując trasę statyczną do serwera logów.
Akcja zdalna w RouterOS # Definicja akcji zdalnej w CLI MikroTik RouterOS: /system logging action add name="zdalny-syslog" target=remote \ remote=192.168.1.100 remote-port=514 \ bsd-syslog=no syslog-facility=local0 syslog-severity=auto Parametr w RouterOSZalecana wartośćZnaczenie technicznetargetremoteWskazuje cel sieciowy (gniazdo Syslog UDP)remote192.168.1.100Adres IPv4 serwera centralnego Linuxremote-port514Standardowy port nasłuchu protokołu Syslogbsd-syslogno (czas ISO 8601)Format czasu ISO 8601 zamiast skróconego BSDsyslog-facilitylocal0Kod źródła (16) dla urządzeń sieciowychsyslog-severityautoDynamiczne mapowanie ważności zdarzenia
Slajd 22/35
MikroTik RouterOS: przypisywanie tematów zdarzeń do akcji zdalnej
Cel slajdu: Właściwy dobór kategorii komunikatów przesyłanych do serwera rsyslog oraz wykluczanie zbędnego szumu informacyjnego.

Zdalne logowanie z MikroTik RouterOS

Samo utworzenie akcji 'zdalny-syslog' nie powoduje wysyłania jakichkolwiek danych. Należy jawnie przypisać reguły łączące tematy (topics) z nowo utworzoną akcją.

  • Podstawowe kategorie awarii: Zdarzenia o tematach 'critical', 'error' oraz 'warning' powinny być bezwzględnie przesyłane do serwera centralnego
  • Audyt kont i bezpieczeństwo (account): Rejestruje każde udane i nieudane logowanie do routera (przez WinBox, SSH, WWW, API) oraz zmianę konfiguracji
  • Operator negacji (!): Znak wykrzyknika przed nazwą tematu oznacza wykluczenie (np. !dns wyklucza zapytania klientów do wbudowanego serwera DNS cache)
  • Łączenie tematów przecinkiem: Zapis topics=system,info oznacza zdarzenia systemowe o statusie informacyjnym (np. restart interfejsu)
Przestroga przed tematem !dns: Jeśli router pełni rolę serwera DNS dla kilkudziesięciu stacji, włączenie tematu topics=dns generuje setki pakietów na sekundę, co może całkowicie sparaliżować serwer logów.
Filtrowanie tematów w RouterOS # Przypisywanie tematów do akcji zdalnej w CLI RouterOS: /system logging add action=zdalny-syslog topics=critical add action=zdalny-syslog topics=error add action=zdalny-syslog topics=warning add action=zdalny-syslog topics=account # Logowanie logowań administratorów add action=zdalny-syslog topics=firewall # Zdarzenia zapory ogniowej Wykluczanie zbędnych zdarzeń za pomocą prefiksu wykrzyknika (!): /system logging add action=zdalny-syslog topics=info,!debug,!dns,!packet • !dns – eliminuje miliony zapytań bufora DNS routera • !debug – zabezpiecza serwer przed przeciążeniem komunikatami developerskimi
Slajd 23/35
MikroTik RouterOS: logowanie zdarzeń zapory z unikalnymi prefiksami
Cel slajdu: Monitorowanie zablokowanych pakietów (Drop) i skanowania portów z czytelnym oznakowaniem prefiksem (Log Prefix).

Zdalne logowanie z MikroTik RouterOS

Reguły zapory ogniowej w RouterOS posiadają atrybut log=yes oraz log-prefix. Prefiks ten jest wstawiany na początku wiadomości i stanowi kluczowy element późniejszej analizy automatycznej.

  • Atrybut log-prefix: Krótki łańcuch znakowy jednoznacznie identyfikujący regułę zapory (np. FW_DROP_WAN, PORT_SCAN, BLACKLIST)
  • Szczegółowość rekordu: RouterOS automatycznie dołącza nazwę interfejsu wejściowego/wyjściowego, adres MAC, protokół (TCP/UDP/ICMP), flagi (np. SYN) oraz porty
  • Ułatwienie dla SIEM i Fail2ban: Dzięki prefiksowi skrypty na serwerze Linux mogą błyskawicznie wyłuskać adres IP intruza za pomocą polecenia grep 'FW_DROP_WAN:'
  • Ograniczanie częstotliwości (Log Limiting): Aby skanowanie portów nie zalało serwera, w /ip firewall filter stosujemy parametr psd (Port Scan Detection) lub limit
Zasada wydajnościowa zapory: Nigdy nie włączaj log=yes na regule akceptującej ruch Established/Related! Loguj wyłącznie pakiety odrzucane (Drop) w łańcuchu input oraz pakiety tworzące nowe podejrzane połączenia w łańcuchu forward.
Prefiksy zapory w RouterOS # Reguła zapory ogniowej z prefiksem logowania w RouterOS: /ip firewall filter add chain=input in-interface-list=WAN action=drop \ log=yes log-prefix="FW_DROP_WAN: " \ comment="Blokowanie i logowanie nieautoryzowanego ruchu z WAN" Wygląd komunikatu w pliku rsyslog serwera Linux: 2026-09-29T18:55:00+02:00 router-mikrotik firewall,info FW_DROP_WAN: in:ether1 out:(unknown), src-mac 00:11:22:33:44:55, proto TCP (SYN), 198.51.100.45:54321->192.168.1.1:22, len 60
Slajd 24/35
MikroTik RouterOS: logowanie usług sieciowych (DHCP, Wi-Fi, VPN)
Cel slajdu: Centralny audyt przydzielania adresów IP, asocjacji użytkowników sieci bezprzewodowych oraz nawiązywania połączeń tunelowych.

Zdalne logowanie z MikroTik RouterOS

Router brzegowy pełni najczęściej rolę bramy domyślnej, serwera DHCP, kontrolera sieci bezprzewodowej Wi-Fi oraz koncentratora VPN.

  • Audyt dzierżaw DHCP (dhcp,info): Rejestruje moment przydzielenia adresu IP (assigned), odnowienia dzierżawy (renewed) oraz zwolnienia (deassigned) z powiązaniem do adresu fizycznego MAC
  • Telemetria sieci bezprzewodowej (wireless/caps): Pozwala na śledzenie roamingu klientów pomiędzy punktami dostępowymi (AP), siły sygnału RSSI oraz błędów uwierzytelniania WPA2/WPA3
  • Sesje tunelowe VPN (ppp,account,wireguard): Rejestruje czas trwania połączeń pracowników zdalnych, ich publiczne adresy źródłowe oraz wolumen przesłanych bajtów
  • Rozliczalność i RODO: Centralne archiwum logów DHCP pozwala po miesiącach ustalić, które konkretnie urządzenie fizyczne korzystało z danego adresu IP w chwili incydentu
Przykładowy rekord DHCP w rsyslog:
router-mikrotik dhcp,info: defconf assigned 192.168.1.155 to 3C:06:30:11:22:33 (laptop-zarzad).
Logowanie usług DHCP/Wi-Fi/VPN Serwer DHCP topics=dhcp,info Przydział IP i MAC Rozpoznanie hosta Wi-Fi (CAPsMAN) topics=caps,info Asocjacja klientów Sygnał RSSI i roaming Tunele VPN topics=wireguard,ppp Zestawienie tunelu Uwierzytelnienie sesji # Konfiguracja reguł w CLI RouterOS: /system logging add action=zdalny-syslog topics=dhcp,info add action=zdalny-syslog topics=wireless,info add action=zdalny-syslog topics=wireguard,info add action=zdalny-syslog topics=ppp,info,account
Slajd 25/35
MikroTik RouterOS: audyt bezpieczeństwa i logowanie prób dostępu
Cel slajdu: Rejestracja prób logowania przez protokoły SSH, WinBox i WebFig oraz wykrywanie ataków siłowych.

Zdalne logowanie z MikroTik RouterOS

Urządzenia sieciowe wystawione na styk z operatorem WAN są celem nieustannych ataków słownikowych i prób zgadywania haseł przez zautomatyzowane botnety.

  • Temat account: Kluczowy podsystem audytowy rejestrujący nazwę użytkownika, adres IP, metodę dostępu (WinBox, SSH, Web, API) oraz wynik autoryzacji
  • Błędy logowania (login failure): Generowane przy podaniu błędnego hasła ze statusem warning lub critical
  • Modyfikacje konfiguracji: Pomyślne zalogowanie administratora i wydanie polecenia (np. dodanie reguły zapory) jest odnotowywane z dokładnym czasem i nazwą konta
  • Obrona aktywna: Logi przesłane do serwera rsyslog mogą być w czasie rzeczywistym analizowane przez narzędzie Fail2ban, które automatycznie dodaje adres atakującego do czarnej listy routera
Zasada minimalizacji usług zarządzających: W celach bezpieczeństwa wyłącz nieużywane usługi w /ip service (np. telnet, ftp, www) i pozostaw wyłącznie zaszyfrowany SSH oraz WinBox na niestandardowych portach lub w dedykowanej strefie VPN.
Audyt bezpieczeństwa RouterOS # Rejestrowanie prób logowania i naruszeń dostępu w RouterOS: /system logging add action=zdalny-syslog topics=account,critical add action=zdalny-syslog topics=account,warning add action=zdalny-syslog topics=account,info add action=zdalny-syslog topics=system,error Wykrywanie ataku siłowego (Brute-Force) na port SSH routera: 2026-09-29T19:02:11+02:00 router-mikrotik system,error,critical login failure for user admin from 203.0.113.10 via ssh login failure for user root from 203.0.113.10 via ssh
Slajd 26/35
Bezpieczeństwo transmisji: szyfrowanie TLS (RFC 5425) w rsyslog
Cel slajdu: Eliminacja ryzyka podsłuchu i modyfikacji logów w sieci tranzytowej za pomocą kryptograficznego tunelu TLS na porcie 6514.

Bezpieczeństwo i zaawansowany transport

Standardowy protokół Syslog przesyła wszystkie informacje jawnym tekstem. W przypadku przesyłania danych przez Internet lub współdzieloną sieć korporacyjną stanowi to krytyczne zagrożenie.

  • Specyfikacja RFC 5425: Oficjalny standard IETF definiujący transport komunikatów syslog w bezpiecznym tunelu TLS (Transport Layer Security)
  • Standardowy port TCP 6514: Dedykowany port IANA zarezerwowany dla bezpiecznego protokołu Syslog-over-TLS
  • Zagrożenia transmisji jawnej: W logach pojawiają się wrażliwe metadane: nazwy kont systemowych, próby błędnych haseł, wersje oprogramowania czy adresacja wewnętrzna
  • Pakiet rsyslog-gnutls: Rozszerzenie demona rsyslog w systemie Linux realizujące obsługę protokołów kryptograficznych TLS 1.2 i TLS 1.3
Wymóg normy PCI-DSS (Rozdział 10): Transmisja danych audytowych przez sieci publiczne lub bezprzewodowe musi być bezwzględnie szyfrowana za pomocą silnych protokołów kryptograficznych.
Szyfrowanie TLS w rsyslog Transmisja w czystym tekście (Cleartext UDP/TCP 514): • Podatność na podsłuch (Sniffing) – logi zawierają nazwy użytkowników, adresy IP i błędy • Podatność na manipulację (Man-in-the-Middle) – intruz może fałszować lub modyfikować logi • Naruszenie wymogów prawnych (RODO / GDPR, ISO 27001, PCI-DSS) Szyfrowanie TLS w rsyslog (IETF RFC 5425 - Port TCP 6514): • Poufność: Szyfrowanie strumienia silnymi algorytmami AES-GCM / ChaCha20 • Wzajemne uwierzytelnienie (mTLS): Serwer i klient weryfikują swoje certyfikaty X.509 • Integralność: Kryptograficzne sumy kontrolne gwarantują nienaruszalność danych Standard korporacyjny: Wymagany pakiet rsyslog-gnutls lub rsyslog-openssl.
Slajd 27/35
Bezpieczeństwo transmisji: tworzenie infrastruktury certyfikatów PKI
Cel slajdu: Procedura krok po kroku generowania urzędu certyfikacji CA, certyfikatu serwera i klientów za pomocą OpenSSL.

Bezpieczeństwo i zaawansowany transport

Prawidłowa implementacja protokołu TLS wymaga utworzenia lokalnej infrastruktury klucza publicznego (PKI) opartej na certyfikatach X.509.

  • Lokalny urząd Root CA: Organizacja tworzy własny, prywatny urząd certyfikacji (ca.pem), który podpisuje certyfikaty serwera i urządzeń klienckich
  • Certyfikat serwera (server-cert.pem): Zawiera nazwę FQDN lub adres IP serwera logów. Klient weryfikuje ten certyfikat podczas nawiązywania połączenia
  • Certyfikat klienta (client-cert.pem): Umożliwia serwerowi weryfikację tożsamości klienta (wzajemne uwierzytelnienie - Mutual TLS / mTLS)
  • Poufność kluczy prywatnych: Pliki *.key muszą mieć bezwzględnie uprawnienia 0400 i być dostępne wyłącznie dla użytkownika root lub syslog
Uprawnienia plików kluczy: Po skopiowaniu certyfikatów do katalogu /etc/rsyslog.d/keys/ upewnij się, że użytkownik syslog ma prawo odczytu kluczy prywatnych:
sudo chown -R syslog:adm /etc/rsyslog.d/keys/ && sudo chmod 400 /etc/rsyslog.d/keys/*-key.pem.
Generowanie certyfikatów PKI # 1. Generowanie własnego urzędu CA (Root Certificate Authority): $ openssl genrsa -out ca-key.pem 4096 $ openssl req -new -x509 -days 3650 -key ca-key.pem -out ca.pem -subj "/CN=Syslog-CA" # 2. Generowanie klucza i certyfikatu serwera rsyslog: $ openssl genrsa -out server-key.pem 2048 $ openssl req -new -key server-key.pem -out server.csr -subj "/CN=rsyslog-server" $ openssl x509 -req -days 1095 -in server.csr -CA ca.pem -CAkey ca-key.pem -set_serial 01 -out server-cert.pem Drzewo zaufania infrastruktury klucza publicznego (PKI): • ca.pem – certyfikat główny, kopiowany na serwer i wszystkich klientów • server-cert.pem / server-key.pem – certyfikat i klucz prywatny serwera logów • client-cert.pem / client-key.pem – indywidualne certyfikaty klientów Linux
Slajd 28/35
Bezpieczeństwo transmisji: wdrożenie modułu lmnsd_gtls w rsyslog
Cel slajdu: Pełna konfiguracja sterownika gtls po stronie serwera i klienta Linux z wzajemną autoryzacją.

Bezpieczeństwo i zaawansowany transport

Do obsługi szyfrowania rsyslog wykorzystuje moduł sieciowy lmnsd_gtls oparty na bibliotece GnuTLS (pakiet rsyslog-gnutls).

  • Sterownik DefaultNetstreamDriver: Wskazuje 'gtls' jako domyślny silnik strumieniowy dla modułów sieciowych imtcp oraz omfwd
  • Tryb StreamDriver.Mode=1: Wymusza bezwzględne stosowanie szyfrowania TLS (odrzuca połączenia nieszyfrowane w czystym tekście)
  • Autoryzacja x509/name: Serwer i klient weryfikują podpis CA oraz sprawdzają, czy nazwa w certyfikacie (Common Name / SAN) zgadza się z listą dozwolonych węzłów
  • Port 6514: Gniazdo nasłuchowe dedykowane dla bezpiecznych strumieni, odseparowane od standardowego portu 514
Instalacja wymaganego pakietu: W systemach Debian/Ubuntu obsługa TLS nie jest wbudowana w pakiet podstawowy. Wymaga wydania polecenia: sudo apt install -y rsyslog-gnutls.
Wdrożenie GTLS w rsyslog # Konfiguracja serwera TLS (/etc/rsyslog.d/20-tls.conf): module(load="imtcp" StreamDriver.Name="gtls" StreamDriver.Mode="1" StreamDriver.Authmode="x509/name") global(DefaultNetstreamDriver="gtls" DefaultNetstreamDriverCAFile="/etc/rsyslog.d/keys/ca.pem" DefaultNetstreamDriverCertFile="/etc/rsyslog.d/keys/server-cert.pem" DefaultNetstreamDriverKeyFile="/etc/rsyslog.d/keys/server-key.pem") input(type="imtcp" port="6514" ruleset="RegulyZdalne") # Konfiguracja klienta wysyłającego TLS (omfwd): action(type="omfwd" target="192.168.1.100" port="6514" protocol="tcp" StreamDriver="gtls" StreamDriverMode="1" StreamDriverAuthMode="x509/name" StreamDriverPermittedPeers="rsyslog-server") Weryfikacja: Połączenie szyfrowane z pełnym uwierzytelnieniem tożsamości serwera!
Slajd 29/35
Bezpieczeństwo transmisji: ochrona logów RouterOS przez tunel VPN
Cel slajdu: Zabezpieczenie transmisji UDP ze sprzętowych routerów MikroTik za pomocą tunelu WireGuard lub IPsec.

Bezpieczeństwo i zaawansowany transport

RouterOS nie wspiera natywnego szyfrowania Syslog-over-TLS (RFC 5425). Aby bezpiecznie przesyłać logi z odległych oddziałów firmy przez publiczny Internet, ruch ten kapsułkuje się w tunelu VPN.

  • Ograniczenie sprzętowe RouterOS: Podsystem /system logging w RouterOS potrafi wysyłać pakiety wyłącznie po protokole UDP bez natywnego szyfrowania TLS
  • Tunel WireGuard w RouterOS v7: Nowoczesny, niezwykle szybki protokół VPN oparty na kryptografii ChaCha20-Poly1305, wbudowany bezpośrednio w jądro RouterOS v7 i Linux
  • Adresacja wewnątrz tunelu: Serwer rsyslog otrzymuje dedykowany adres IP w tunelu (np. 10.99.0.1), a router adres 10.99.0.2
  • Brak modyfikacji pakietu: Router wysyła zwykły datagram UDP pod adres 10.99.0.1, a stos sieciowy automatycznie szyfruje go w locie
Alternatywa IPsec: W przypadku starszych routerów z RouterOS v6 stosuje się tunel IPsec w trybie transportowym lub tunel GRE z szyfrowaniem IPsec (IKEv2 z certyfikatami).
Tunelowanie logów przez WireGuard Router MikroTik IP WAN: 203.0.113.1 IP VPN: 10.99.0.2 Serwer rsyslog IP WAN: 198.51.100.2 IP VPN: 10.99.0.1 Szyfrowany tunel VPN WireGuard / IPsec (AES-GCM) # Konfiguracja akcji zdalnej wewnątrz tunelu VPN w RouterOS: /system logging action set [find name=zdalny-syslog] \ remote=10.99.0.1 \ # Adres IP serwera w tunelu WireGuard! remote-port=514 # Pakiety UDP 514 są automatycznie kapsułkowane i szyfrowane w WireGuard!
Slajd 30/35
Cykl życia logów: rotacja i kompresja za pomocą logrotate
Cel slajdu: Zabezpieczenie serwera przed przepełnieniem dysku przez konfigurację automatycznej rotacji katalogu /var/log/remote/.

Utrzymanie, analiza i integracja

Bez automatycznej rotacji serwer logów ulegnie awarii w wyniku wyczerpania przestrzeni dyskowej. Narzędzie logrotate zarządza kompresją i usuwaniem przedawnionych plików.

  • Dyrektywa compress (gzip): Tekstowe pliki dziennika kompresują się ze współczynnikiem sięgającym 90–95%, co drastycznie obniża koszty pamięci masowej
  • Okres retencji (rotate 90): Określa liczbę przechowywanych cykli (dni). Normy branżowe (np. PCI DSS, CIS Controls) oraz polityka firmy określają wymagany czas retencji (np. 90 dni szybkiego dostępu, do roku w archiwum; RODO wymaga zasady ograniczenia przechowywania)
  • Opcja delaycompress: Pozostawia ostatnio zrotowany plik nieskompresowany przez dodatkowy dzień, co ułatwia pracę skryptom analitycznym
  • Sygnał postrotate (HUP): Poinformowanie demona rsyslog o zrotowaniu plików, aby zwolnił stare deskryptory plików i rozpoczął zapis do nowych
Testowanie konfiguracji logrotate: Weryfikacja reguł bez modyfikacji plików (tryb symulacji):
sudo logrotate -d /etc/logrotate.d/remote-syslog.
Rotacja plików logrotate # Plik: /etc/logrotate.d/remote-syslog /var/log/remote/*/*.log { daily rotate 90 # Przechowuj 90 cykli dobowych compress # Kompresja gzip oszczędza 90% dysku delaycompress # Kompresuj od drugiego cyklu missingok notifempty sharedscripts postrotate /usr/lib/rsyslog/rsyslog-rotate endscript } Cykl życia pliku logu w systemie produkcyjnym: • Dzień 0: 2026-09-29.log (aktywny zapis przez rsyslog) • Dzień 1: 2026-09-29.log.1 (zamknięty, gotowy do analizy) • Dzień 2..90: 2026-09-29.log.2.gz (skompresowane archiwum binarne)
Slajd 31/35
Analiza zdarzeń w wierszu poleceń: efektywne potoki tekstowe Linux
Cel slajdu: Praktyczne techniki przeszukiwania, agregacji i ekstrakcji informacji z milionów wpisów logów za pomocą potoków GNU.

Utrzymanie, analiza i integracja

Przed wdrożeniem ciężkich systemów graficznych każdy inżynier sieciowy powinien opanować standardowe narzędzia wiersza poleceń Linux (grep, awk, sed, sort, uniq).

  • Szybkość filtrowania: Potoki uniksowe potrafią przeszukać gigabajty skompresowanych logów (zgrep / zcat) w kilka sekund bez narzutu baz danych
  • Wyciąganie adresów IP: Kombinacja grep -oE z wyrażeniem regularnym IPv4 pozwala wyizolować adresy intruzów bezpośrednio ze strumienia tekstu
  • Agregacja statystyczna: Potok 'sort | uniq -c | sort -nr' tworzy natychmiastowe zestawienie częstości występowania zdarzeń
  • Narzędzie awk: Pozwala na zaawansowaną obróbkę kolumnową i filtrowanie według pól nagłówka RFC 5424
Wyszukiwanie w plikach skompresowanych .gz: Narzędzie zgrep "login failure" /var/log/remote/mikrotik/2026-09-*.log.gz przeszukuje zarchiwizowane logi bez konieczności ich uprzedniego rozpakowywania na dysk.
Potoki analityczne wiersza poleceń # 1. Wykrycie 10 najaktywniejszych adresów IP blokowanych na zaporze: $ grep "FW_DROP" /var/log/remote/mikrotik/*.log | \ grep -oE "[0-9]{1,3}(\.[0-9]{1,3}){3}:[0-9]+->" | cut -d: -f1 | sort | uniq -c | sort -nr | head -10 # 2. Zliczanie błędów logowania SSH w podziale na użytkowników: $ grep "Failed password for" /var/log/remote/srv-*/*.log | \ awk '{for(i=1;i<=NF;i++) if($i=="for") print $(i+1)}' | sort | uniq -c | sort -nr Przykładowe wyniki analizy potoków GNU Coreutils: # Adresy IP (Zadanie 1): 1428 198.51.100.24 (Skaner) 892 203.0.113.88 (Brute-Force SSH) # Użytkownicy (Zadanie 2): 892 root 412 admin 114 user 12 ubnt
Slajd 32/35
Analiza w czasie rzeczywistym: śledzenie strumieni i wykrywanie ataków
Cel slajdu: Monitorowanie napływających zdarzeń w trybie na żywo oraz automatyczne blokowanie intruzów przez integrację z Fail2ban.

Utrzymanie, analiza i integracja

Analiza statyczna po fakcie to tylko jedna strona medalu. Równie ważne jest śledzenie incydentów na żywo oraz natychmiastowa reakcja obronna.

  • Narzędzie multitail: Zaawansowany program konsolowy umożliwiający jednoczesny podgląd wielu plików dziennika w podzielonych oknach z kolorowaniem syntaktycznym
  • Śledzenie journalctl -f: Dla lokalnych i zdalnych serwisów systemd pozwala na ciągły nasłuch nowych rekordów w strumieniu
  • Integracja z Fail2ban: Popularne narzędzie obronne może czytać pliki tworzone przez rsyslog i na podstawie filtrów regex wykrywać złośliwe zachowania
  • Pętla sprzężenia zwrotnego (Feedback loop): Serwer logów wykrywa atak i automatycznie dodaje adres atakującego do czarnej listy na routerze brzegowym MikroTik
Automatyzacja bezpieczeństwa (SOAR): Zestawienie rsyslog + Fail2ban + MikroTik API tworzy lekki, autonomiczny system przeciwdziałania intruzom bez konieczności kupowania drogich licencji komercyjnych.
Analiza na żywo i Fail2ban # Monitorowanie wielu strumieni na żywo z multitail: $ sudo multitail -s 2 \ -i /var/log/remote/mikrotik/firewall.log \ -i /var/log/remote/srv-linux/auth.log # Narzędzie dzieli terminal na okna i koloruje słowa kluczowe! Aktywna obrona z Fail2ban na serwerze Linux: • Monitorowanie pliku: Fail2ban śledzi zdalny plik /var/log/remote/mikrotik/firewall.log • Wykrycie ataku: Reguła Regex wykrywa 5 nieudanych prób logowania w ciągu 60 sekund • Automatyczna blokada: Skrypt wysyła polecenie przez API/SSH do routera: /ip firewall address-list add list=blacklist address=IP_INTRA timeout=1d
Slajd 33/35
Integracja z LibreNMS: centralizacja logów i korelacja ze zdarzeniami SNMP
Cel slajdu: Przekierowanie strumienia zdalnego rsyslog bezpośrednio do bazy LibreNMS i powiązanie wpisów z urządzeniami w panelu NMS.

Utrzymanie, analiza i integracja

W Wykładzie 4 poznaliśmy architekturę LibreNMS. Połączenie metryk odpytywania SNMP z asynchronicznym strumieniem zdarzeń Syslog daje pełen obraz stanu sieci.

  • Architektura hybrydowa: Lokalny rsyslog na serwerze Linux może archiwizować surowe pliki na dysku, a równocześnie przekazywać kopię strumienia do kontenera/procesu LibreNMS
  • Automatyczne mapowanie hostów: LibreNMS dopasowuje pole %FROMHOST-IP% do zdefiniowanych urządzeń sieciowych w swojej bazie i przypisuje logi do właściwego węzła
  • Widok Unified Timeline: Inżynier analizujący awarię portu widzi jednocześnie wykres obciążenia interfejsu (SNMP) oraz komunikat 'link DOWN' przesłany przez Syslog
  • Reguły powiadomień: Możliwość zdefiniowania alertu: 'Jeśli w logach MikroTik pojawi się prefiks FW_DROP_WAN więcej niż 100 razy w ciągu 5 minut, wyślij alert'
Włączenie modułu Syslog w LibreNMS: W pliku konfiguracyjnym lub przez CLI (lnms config:set enable_syslog true) włączamy moduł, a w rsyslog stosujemy wtyczkę omprog ze skryptem /opt/librenms/syslog.php i 8-polowym szablonem t_librenms.
Integracja rsyslog z LibreNMS Serwer rsyslog Odbiór logów z sieci Zapis do /var/log/remote/ LibreNMS NMS Baza MariaDB / Syslog Korelacja z SNMP omprog: syslog.php Korzyści z połączenia Syslog i SNMP w LibreNMS (Wykład 4): • Wspólna oś czasu: Spadek pasma na wykresie SNMP jest skorelowany z wpisem w Syslog • Zakładka 'Syslog' urządzenia: Panel LibreNMS wyświetla zdarzenia przypisane do danego hosta • Silnik alarmowy (Alert Rules): Reguła wyzwala powiadomienie e-mail/Discord po wykryciu słowa kluczowego action(type="omprog" binary="/opt/librenms/syslog.php" template="t_librenms")
Slajd 34/35
Diagnostyka i rozwiązywanie problemów z logowaniem zdalnym
Cel slajdu: Przewodnik rozwiązywania typowych usterek: brak odbioru pakietów UDP, blokady SELinux/AppArmor, błędy uprawnień i pętle logowania.

Utrzymanie, analiza i integracja

Podczas uruchamiania centralnego logowania administratorzy napotykają szereg typowych trudności konfiguracyjnych i systemowych.

  • Weryfikacja składni (rsyslogd -N1): Podstawowy test poprawności wszystkich plików konfiguracyjnych przed restartem demona
  • Przechwytywanie ruchu (tcpdump): Sprawdzenie, czy pakiety fizycznie docierają do interfejsu sieciowego serwera (wyklucza problem z routingiem i zaporami pośrednimi)
  • Błędy uprawnień do katalogów: Demon rsyslog działający jako użytkownik 'syslog' po cichu porzuca zapis, jeśli katalog nie posiada flagi zapisu dla tej grupy
  • Pętle logowania (Syslog Storm): Sytuacja, w której rsyslog generuje komunikat o błędzie zapisu, który następnie próbuje sam zalogować, doprowadzając do natychmiastowego nasycenia CPU
  • Moduły bezpieczeństwa (AppArmor / SELinux): Mogą blokować zapis do niestandardowych ścieżek poza /var/log/. Wymagają aktualizacji profilu w /etc/apparmor.d/
Zwiększenie bufora gniazda UDP w Linux: Przy dużym natężeniu ruchu UDP jądro może gubić pakiety. Zwiększ rozmiar bufora w /etc/sysctl.conf:
net.core.rmem_max = 16777216.
Diagnostyka i rozwiązywanie problemów Drzewo diagnostyczne problemów z logowaniem zdalnym Krok 1: Sieć (Ping) -> Krok 2: Gniazdo (ss) -> Krok 3: Pakiety (tcpdump) -> Krok 4: Składnia (rsyslogd) Objaw awariiPrawdopodobna przyczynaKomenda diagnostyczna / NaprawaBrak logów na serwerzeZapora UFW blokuje port 514sudo tcpdump -i any udp port 514Błąd uprawnieńUżytkownik syslog nie ma prawsudo chown -R syslog:adm /var/log/remoteBłąd składni rsyslogLiterówka w RainerScriptsudo rsyslogd -N1 -f /etc/rsyslog.confUtrata pakietów UDPPrzepełniony bufor jądranetstat -su | grep 'receive errors'Pętla logowaniaRsyslog loguje własne logiZastosuj regułę stop wewnątrz ruleset!
Slajd 35/35
Podsumowanie: produkcyjna lista kontrolna wdrożenia i dobre praktyki
Cel slajdu: Synteza zdobytej wiedzy w postaci gotowej do użycia listy kontrolnej (Checklist) wdrożenia korporacyjnego serwera logów.

Podsumowanie i dobre praktyki

Prawidłowo wdrożony system centralnego logowania to fundament bezpieczeństwa teleinformatycznego, spełniający wyśrubowane normy audytowe i umożliwiający błyskawiczną reakcję na incydenty.

  • Kluczowa rola synchronizacji czasu: Wszystkie urządzenia w sieci (serwer Linux, klienci, routery MikroTik) muszą bezwzględnie synchronizować czas z serwerem NTP. Rozbieżność zegarów uniemożliwia jakąkolwiek korelację zdarzeń
  • Separacja uprawnień i retencja: Logi muszą być chronione przed modyfikacją, a ich cykl życia zautomatyzowany przez skrypty logrotate
  • Niezawodność buforowania: Klienci wyposażeni w kolejki dyskowe chronią organizację przed utratą danych podczas przerw w komunikacji sieciowej
  • Holistyczne podejście do NMS: Centralny magazyn logów w połączeniu z systemem LibreNMS tworzy kompletną platformę monitoringu zgodną z modelem FCAPS
Podsumowanie wdrożenia: Wdrożony został kompletny system zdalnego logowania Syslog i rsyslog w systemie Linux oraz konfiguracja routerów MikroTik RouterOS.
Podsumowanie i lista kontrolna PRODUKCYJNA LISTA KONTROLNA (CHECKLIST) 10 Złotych Zasad Bezpiecznego i Wydajnego Serwera Logów Architektura i Serwer: 1. [x] Synchronizacja czasu NTP (Chrony/PTP) 2. [x] Osobna partycja dyskowa /var/log/remote 3. [x] Uprawnienia 0750 / 0640 (syslog:adm) 4. [x] Izolacja regułami ruleset() i dyrektywą stop 5. [x] Filtrowanie źródłowe na zaporze ogniowej Klienci i Bezpieczeństwo: 6. [x] Klient Linux: bufor dyskowy (LinkedList) 7. [x] MikroTik: bsd-syslog=no i prefiksy zapory 8. [x] Szyfrowanie TLS 6514 lub tunel VPN 9. [x] Rotacja i kompresja gzip (logrotate) 10. [x] Aktywne alarmowanie i integracja NMS