Systemy logowania i audytu w systemie Linux

Systemy logowania i audytu w systemie Linux

W systemach Linux logowanie zdarzeń i audyt bezpieczeństwa stanowią jeden z kluczowych mechanizmów kontroli i diagnostyki. Dzienniki systemowe pozwalają śledzić działanie usług, wykrywać błędy oraz analizować aktywność użytkowników. W tym artykule omówię podstawowe elementy systemu logów, ich strukturę, konfigurację oraz narzędzia audytu dostępne w środowisku Linux.


1. Czym jest logowanie systemowe

Logowanie w systemie Linux polega na zapisywaniu zdarzeń i komunikatów generowanych przez jądro, usługi, aplikacje oraz użytkowników. Dzięki logom możliwe jest diagnozowanie problemów, kontrolowanie dostępu oraz odtwarzanie historii zdarzeń systemowych.

Najczęściej spotykane typy logów to:

  • logi systemowe – dotyczą działania jądra i usług systemowych,
  • logi aplikacyjne – generowane przez serwery i programy,
  • logi bezpieczeństwa – rejestrujące zdarzenia autoryzacji i dostępu,
  • logi audytowe – służące do śledzenia działań użytkowników i procesów.

2. Struktura katalogu /var/log

Wszystkie najważniejsze logi systemowe znajdują się w katalogu /var/log. Każdy plik logu odpowiada określonej usłudze lub grupie zdarzeń.

Najczęściej używane pliki logów:

  • /var/log/syslog – ogólne komunikaty systemowe (Ubuntu, Debian),
  • /var/log/messages – komunikaty jądra i usług (Red Hat, CentOS),
  • /var/log/auth.log – logi związane z autoryzacją i logowaniem,
  • /var/log/secure – odpowiednik auth.log w systemach Red Hat,
  • /var/log/dmesg – komunikaty startowe jądra,
  • /var/log/boot.log – przebieg uruchamiania systemu,
  • /var/log/faillog – nieudane próby logowania,
  • /var/log/audit/audit.log – logi audytowe generowane przez usługę auditd.

3. System rsyslog

W większości współczesnych dystrybucji Linux domyślnym systemem logowania jest rsyslog. Jest to następca starszego syslogd, oferujący filtrowanie, formatowanie i zdalne wysyłanie logów.

Plik konfiguracyjny znajduje się w: /etc/rsyslog.conf oraz w katalogu /etc/rsyslog.d/.

Przykładowa reguła zapisu logów:

auth,authpriv.* /var/log/auth.log
mail.* -/var/log/mail.log
*.info;mail.none;authpriv.none;cron.none /var/log/syslog

Każda linia określa źródło logów (facility), poziom ważności (priority) oraz miejsce zapisu.


4. Poziomy ważności logów

W systemie syslog i rsyslog stosowany jest standardowy zestaw poziomów ważności:

  • emerg – sytuacja krytyczna (system bezużyteczny),
  • alert – konieczna natychmiastowa reakcja,
  • crit – poważny błąd,
  • err – błąd programu lub procesu,
  • warning – ostrzeżenie,
  • notice – normalne, ale istotne zdarzenie,
  • info – informacja,
  • debug – szczegóły diagnostyczne.

Ustalanie odpowiedniego poziomu ważności pozwala na selektywne gromadzenie logów i unikanie nadmiernego obciążenia systemu.


5. Przeglądanie logów systemowych

Do przeglądania logów służą proste narzędzia tekstowe, takie jak:

  • cat, less, grep – do wyszukiwania i filtrowania zawartości,
  • tail -f – do bieżącego śledzenia logów,
  • journalctl – do analizy logów w systemd.

Przykłady:
sudo tail -f /var/log/syslog
sudo grep „error” /var/log/auth.log
sudo journalctl -xe

Polecenie journalctl umożliwia filtrowanie logów według usług, jednostek systemd lub zakresów czasu.


6. System journalctl i journald

W dystrybucjach wykorzystujących systemd logi są obsługiwane przez usługę systemd-journald. Dane przechowywane są w postaci binarnej w katalogu /var/log/journal/.

Podstawowe przykłady użycia:

  • Wyświetlanie wszystkich logów – journalctl
  • Logi z ostatniego uruchomienia – journalctl -b
  • Logi konkretnej usługi – journalctl -u ssh
  • Logi od określonego czasu – journalctl –since „2025-11-01 10:00”

System journald umożliwia także przekazywanie logów do rsysloga lub zewnętrznego serwera centralnego.


7. Rotacja logów

W celu uniknięcia nadmiernego rozrostu plików logów stosowane jest narzędzie logrotate. Zadaniem logrotate jest automatyczne tworzenie kopii archiwalnych logów i usuwanie starych wpisów.

Konfiguracja znajduje się w: /etc/logrotate.conf oraz w katalogu /etc/logrotate.d/.

Przykład konfiguracji rotacji logów:

/var/log/syslog {
  weekly
  rotate 4
  compress
  missingok
  notifempty
}

W tym przykładzie logi są rotowane co tydzień, przechowywane w czterech kopiach i automatycznie kompresowane.


8. System audytu (auditd)

Linux posiada wbudowany system audytu – auditd – pozwalający na szczegółowe rejestrowanie zdarzeń bezpieczeństwa, np. dostępu do plików lub zmian konfiguracji.

Usługa auditd działa w oparciu o reguły definiowane w pliku /etc/audit/audit.rules lub /etc/audit/rules.d/.

Przykłady reguł audytu:

  • Rejestrowanie wszystkich prób modyfikacji pliku /etc/passwd:
    -w /etc/passwd -p wa -k passwd_changes
  • Śledzenie uruchomień polecenia sudo:
    -w /usr/bin/sudo -p x -k sudo_exec

Wyświetlanie zdarzeń audytu:

sudo ausearch -k passwd_changes
sudo aureport -x –summary

Usługa auditd jest szczególnie przydatna w środowiskach wymagających zgodności z normami bezpieczeństwa (np. ISO 27001, PCI-DSS).


9. Dobre praktyki logowania i audytu

  • regularne monitorowanie plików logów w katalogu /var/log,
  • stosowanie rotacji logów w celu oszczędzania przestrzeni dyskowej,
  • centralizacja logów z wielu serwerów przy użyciu rsysloga lub journald,
  • analiza logów bezpieczeństwa (auth.log, secure) pod kątem prób nieautoryzowanego dostępu,
  • wdrażanie systemu audytu (auditd) w środowiskach produkcyjnych,
  • utrzymywanie odpowiednich uprawnień do plików logów (tylko root powinien mieć pełny dostęp).

10. Podsumowanie

Systemy logowania i audytu w Linuxie umożliwiają pełną kontrolę nad bezpieczeństwem i stabilnością środowiska. Zarówno rsyslog, jak i systemd-journald pozwalają rejestrować, filtrować i archiwizować zdarzenia w sposób czytelny i bezpieczny. Dzięki integracji z mechanizmami audytu możliwe jest śledzenie działań użytkowników oraz wykrywanie prób naruszeń bezpieczeństwa. Świadome monitorowanie logów to podstawa skutecznego zarządzania każdym systemem Linux.

Przewijanie do góry