14/07/2025
System audytu Linux to potężne narzędzie, które pozwala administratorom na szczegółowe monitorowanie zdarzeń bezpieczeństwa i działań użytkowników w systemie. Działa jako rejestrator aktywności, zapisując kluczowe informacje, które mogą być później wykorzystane do analizy, wykrywania nieprawidłowości i śledzenia potencjalnych naruszeń bezpieczeństwa. Chociaż sam audyt nie zapobiega bezpośrednio zagrożeniom, dostarcza nieocenionych danych, które umożliwiają podjęcie odpowiednich działań ochronnych i wzmocnienie bezpieczeństwa systemu.

Komponenty systemu audytu Linux
System audytu Linux składa się z kilku kluczowych komponentów, które współpracują ze sobą, tworząc kompleksowe rozwiązanie do monitorowania:
- Moduł jądra audytu: Ten komponent działa w jądrze systemu Linux i przechwytuje wywołania systemowe oraz inne istotne zdarzenia związane z bezpieczeństwem. Rejestruje te zdarzenia, przygotowując dane do dalszego przetwarzania.
- Demon auditd: Jest to demon działający w przestrzeni użytkownika, który odbiera zdarzenia z modułu jądra i zapisuje je do plików logów audytu. Demon `auditd` jest centralnym punktem zbierania i przechowywania danych audytowych.
- Narzędzia linii komend: Dostępne są różne narzędzia linii komend, które umożliwiają interakcję z systemem audytu. Do najważniejszych należą:
- auditctl: Narzędzie do dynamicznego konfigurowania systemu audytu, dodawania reguł i zarządzania jego stanem.
- aureport: Narzędzie do generowania różnorodnych raportów podsumowujących na podstawie logów audytu.
- ausearch: Narzędzie do szczegółowego przeszukiwania logów audytu w celu znalezienia konkretnych zdarzeń.
- autrace: Narzędzie do śledzenia wywołań systemowych i zdarzeń związanych z konkretnym procesem.
Konfiguracja demona auditd
Demon `auditd` jest konfigurowany za pomocą pliku `/etc/audit/auditd.conf`. Plik ten zawiera szereg parametrów, które kontrolują sposób działania demona, w tym:
- log_file: Określa ścieżkę do pliku, w którym będą zapisywane logi audytu. Domyślnie jest to `/var/log/audit/audit.log`.
- log_format: Definiuje format zapisu logów audytu. Dostępne opcje to `RAW` (surowy format) i `NOLOG` (wyłączenie zapisu do pliku, przydatne, gdy używany jest tylko dispatcher). Domyślnie ustawiony jest format `RAW`.
- log_group: Określa grupę, która będzie właścicielem plików logów audytu. Domyślnie jest to `root`.
- priority_boost: Ustawia priorytet demona `auditd`. Wartości od 0 do 20.
- flush i freq: Kontrolują częstotliwość zapisywania logów audytu na dysk. Opcja `flush` określa tryb (np. `INCREMENTAL`, `SYNC`, `DATA`), a `freq` częstotliwość (liczba rekordów po których nastąpi flush).
- num_logs: Określa liczbę plików logów audytu do rotacji, jeśli używana jest opcja `rotate` w `max_log_file_action`.
- disp_qos i dispatcher: Konfigurują dispatcher zdarzeń audytu, który może przekazywać zdarzenia do innych aplikacji. `disp_qos` określa jakość komunikacji (np. `lossy` - dopuszczalne straty, `lossless` - bezstratna). `dispatcher` określa ścieżkę do aplikacji dispatchera.
- name_format i name: Kontrolują format nazw komputerów w logach audytu. `name_format` określa format (np. `NONE`, `HOSTNAME`, `FQDN`), a `name` może definiować niestandardową nazwę.
- max_log_file i max_log_file_action: Określają maksymalny rozmiar pliku logu audytu (w MB) i akcję, która ma być podjęta po osiągnięciu tego rozmiaru (np. `IGNORE`, `SYSLOG`, `SUSPEND`, `ROTATE`, `KEEP_LOGS`).
- space_left i space_left_action: Określają minimalną ilość wolnego miejsca na dysku (w MB) i akcję, która ma być podjęta, gdy poziom wolnego miejsca spadnie poniżej tego progu (np. `IGNORE`, `SYSLOG`, `EMAIL`, `EXEC`, `SUSPEND`, `SINGLE`, `HALT`).
- admin_space_left i admin_space_left_action: Podobne do `space_left` i `space_left_action`, ale dla krytycznie niskiego poziomu wolnego miejsca, przeznaczonego dla administratora.
- disk_full_action: Akcja, która ma być podjęta, gdy dysk jest całkowicie pełny i nie ma miejsca na logi audytu (np. `IGNORE`, `SYSLOG`, `ROTATE`, `EXEC`, `SUSPEND`, `SINGLE`, `HALT`).
- disk_error_action: Akcja, która ma być podjęta w przypadku wystąpienia błędów dysku podczas zapisu logów audytu lub rotacji.
- tcp_listen_port, tcp_listen_queue, tcp_client_ports, tcp_client_max_idle, tcp_max_per_addr: Parametry konfiguracyjne dla odbierania zdarzeń audytu z innych demonów `auditd` przez TCP.
Dla większości zastosowań domyślna konfiguracja demona `auditd` powinna być wystarczająca. Jednak w środowiskach wymagających zgodności z CAPP (Controlled Access Protection Profile) konieczne może być dostosowanie tych parametrów.
Kontrolowanie systemu audytu za pomocą auditctl
Narzędzie `auditctl` służy do kontrolowania stanu i podstawowych parametrów systemu audytu. Pozwala na włączanie i wyłączanie audytu, ustawianie flag błędów, limitów szybkości i limitów backlogu. Najważniejsze polecenia `auditctl` to:
- `auditctl -e [0|1|2]`: Włącza lub wyłącza audyt. `0` - wyłącza, `1` - włącza, `2` - włącza i blokuje konfigurację.
- `auditctl -f [0|1|2]`: Ustawia flagę błędu. `0` - cichy tryb, `1` - logowanie do printk, `2` - panika systemu (natychmiastowe zatrzymanie systemu).
- `auditctl -r RATE`: Ustawia limit szybkości generowania komunikatów audytu (komunikatów na sekundę).
- `auditctl -b BACKLOG`: Ustawia limit backlogu, czyli maksymalną liczbę buforów audytu.
- `auditctl -s`: Wyświetla aktualny status demona `auditd`.
- `auditctl -D`: Usuwa wszystkie aktualnie załadowane reguły audytu.
- `auditctl -l`: Wyświetla listę aktualnie załadowanych reguł audytu.
Parametry `-e`, `-f`, `-r` i `-b` można również ustawić w pliku `/etc/audit/audit.rules`, aby były trwałe po restartach systemu.

Reguły audytu
Reguły audytu definiują, które zdarzenia mają być rejestrowane przez system audytu. Reguły można dodawać za pomocą narzędzia `auditctl` lub definiować w pliku `/etc/audit/audit.rules`. Plik ten jest domyślnie czytany przez demona `auditd` podczas uruchamiania. Reguły audytu są przetwarzane od góry do dołu.
Składnia reguł jest oparta na opcjach narzędzia `auditctl`. Najważniejsze opcje to:
- `-w PATH`: Dodaje obserwację (watch) na plik lub katalog o podanej ścieżce. System audytu będzie monitorował dostęp do tego pliku/katalogu.
- `-p PERMISSIONS`: Określa filtry uprawnień dla obserwacji pliku/katalogu. `r` - odczyt, `w` - zapis, `x` - wykonanie, `a` - zmiana atrybutów.
- `-k KEY`: Przypisuje klucz do reguły audytu. Klucz ten może być później użyty do filtrowania logów audytu.
- `-a ACTION,LIST`: Dodaje regułę wywołania systemowego. `ACTION` może być `exit` (po zakończeniu wywołania) lub `entry` (przed wywołaniem). `LIST` może być `always` lub `never`.
- `-S SYSCALL`: Określa nazwę lub numer wywołania systemowego, do którego ma być zastosowana reguła.
- `-F FIELD=VALUE`: Dodaje filtr na pole i wartość. Pozwala na bardziej szczegółowe filtrowanie zdarzeń.
Przykładowe reguły audytu:
- `-w /etc/shadow -p rwxa`: Monitoruje dostęp do pliku `/etc/shadow` (odczyt, zapis, wykonanie, zmiana atrybutów).
- `-w /etc -p rx`: Monitoruje odczyt i wykonanie w katalogu `/etc`.
- `-w /etc/passwd -k fk_passwd -p rwxa`: Monitoruje dostęp do pliku `/etc/passwd` (odczyt, zapis, wykonanie, zmiana atrybutów) i przypisuje klucz `fk_passwd`.
- `-a exit,always -S mkdir`: Rejestruje każde wywołanie systemowe `mkdir`.
- `-a exit,always -S access -F a1=4`: Rejestruje wywołania systemowe `access` tylko wtedy, gdy drugi argument (tryb) wynosi 4 (R_OK - sprawdzenie prawa do odczytu).
- `-a task,always -F auid=0`: Rejestruje wszystkie zadania (procesy) z identyfikatorem audytu (auid) równym 0 (zwykle root).
Analiza logów audytu
Logi audytu domyślnie zapisywane są w pliku `/var/log/audit/audit.log`. Format logów audytu jest surowy i może być trudny do bezpośredniego odczytu. Do analizy logów audytu służą narzędzia `aureport` i `ausearch`.
Narzędzie aureport
`aureport` generuje raporty podsumowujące z logów audytu. Dostępne są różne typy raportów, m.in.:
- Raport podsumowujący: `aureport` - podstawowy raport podsumowujący, zawierający ogólne statystyki (liczba zmian konfiguracji, logowań, nieudanych wywołań systemowych itp.).
- Raport logowań: `aureport -l` - raport dotyczący prób logowania do systemu.
- Raport użytkowników: `aureport -u` - raport dotyczący działań poszczególnych użytkowników.
- Raport plików: `aureport -f` - raport dotyczący dostępu do plików.
- Raport wywołań systemowych: `aureport -s` - raport dotyczący wywołań systemowych.
- Raport wykonywalnych plików: `aureport -x` - raport dotyczący wykonywanych plików.
- Raport zdarzeń: `aureport -e` - raport zawierający listę wszystkich zdarzeń audytu.
Raporty można filtrować za pomocą opcji, np. `-ts` (czas rozpoczęcia), `-te` (czas zakończenia), `-if` (plik logu audytu do analizy), `-failed` (tylko nieudane zdarzenia), `-success` (tylko udane zdarzenia), `-summary` (raporty podsumowujące).

Narzędzie ausearch
`ausearch` służy do szczegółowego przeszukiwania logów audytu. Umożliwia wyszukiwanie zdarzeń na podstawie różnych kryteriów, m.in.:
- Identyfikator zdarzenia audytu: `ausearch -a EVENT_ID`
- Typ komunikatu: `ausearch -m MESSAGE_TYPE` (np. `PATH`, `SYSCALL`, `USER_LOGIN`)
- Identyfikator logowania użytkownika: `ausearch -ul LOGIN_ID`
- Identyfikator użytkownika: `ausearch -ui UID`
- Identyfikator grupy: `ausearch -gi GID`
- Nazwa polecenia: `ausearch -c COMM_NAME`
- Nazwa pliku wykonywalnego: `ausearch -x EXE`
- Nazwa wywołania systemowego: `ausearch -sc SYSCALL`
- Identyfikator procesu: `ausearch -p PID`
- Wartość sukcesu wywołania systemowego: `ausearch -sv SUCCESS_VALUE` (`yes` lub `no`)
- Nazwa pliku: `ausearch -f FILE_NAME`
- Terminal: `ausearch -tm TERM`
- Nazwa hosta: `ausearch -hn HOSTNAME`
- Klucz audytu: `ausearch -k KEY_FIELD`
- Słowo kluczowe: `ausearch -w WORD`
- Zakres czasu: `-ts` (czas rozpoczęcia), `-te` (czas zakończenia)
Opcje wyszukiwania można łączyć za pomocą operatora logicznego AND, aby zawęzić wyniki wyszukiwania.
Śledzenie procesów za pomocą autrace
Narzędzie `autrace` pozwala na śledzenie wywołań systemowych i zdarzeń związanych z konkretnym procesem. Działa podobnie do `strace`, ale zapisuje dane do logów audytu. Użycie `autrace`:
auditctl -D # Usuwa wszystkie reguły audytu autrace /usr/bin/less # Śledzi proces /usr/bin/less # Po zakończeniu śledzenia można wyszukać logi za pomocą ausearch: ausearch -i -p PID_PROCESU systemctl restart auditd # Przywraca normalne reguły audytuNależy zawsze używać pełnej ścieżki do pliku wykonywalnego śledzonego procesu.
Lokalizacja plików logów audytu
Domyślnie logi audytu systemu Linux znajdują się w katalogu `/var/log/audit/`. Głównym plikiem logu audytu jest `audit.log`. Lokalizację pliku logu audytu można zmienić w pliku konfiguracyjnym `/etc/audit/auditd.conf` za pomocą parametru `log_file`.

Zaleca się monitorowanie i zabezpieczanie plików logów audytu, ponieważ zawierają one cenne informacje dotyczące bezpieczeństwa systemu.
Podsumowanie
System audytu Linux jest niezwykle przydatnym narzędziem do monitorowania i analizowania zdarzeń bezpieczeństwa w systemie. Poprawna konfiguracja i umiejętność korzystania z narzędzi `auditctl`, `aureport` i `ausearch` pozwalają na skuteczne śledzenie działań użytkowników, wykrywanie nieprawidłowości i wzmacnianie bezpieczeństwa systemu. Regularna analiza logów audytu i dostosowywanie reguł audytu do specyficznych potrzeb środowiska są kluczowe dla utrzymania wysokiego poziomu bezpieczeństwa systemu Linux.
Jeśli chcesz poznać inne artykuły podobne do Audyt systemu Linux: Kompleksowy przewodnik, możesz odwiedzić kategorię Rachunkowość.
