Czym jest pakiet audytu w systemie Linux?

Audyt systemu Linux: Kompleksowy przewodnik

14/07/2025

Rating: 4.5 (8145 votes)

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.

Gdzie znajduje się plik audytu w systemie Linux?
Domyślnie Linux Audit Framework rejestruje wszystkie dane w katalogu /var/log/audit . Zwykle powiązany plik nazywa się audit. log i zawiera informacje związane z audytem, takie jak zdarzenia.
Spis treści

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.

Jak sprawdzić usługę audytu w systemie Linux?
Aby sprawdzić status usługi auditd, uruchom service auditd status . Jednak aby przeładować usługę auditd, użyj service auditd reload. Użyj polecenia service auditd rotate, jeśli chcesz obrócić pliki dziennika w katalogu /var/log/audit/.

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).

Jak używać audytu w systemie Linux?
Polecenia kontrolujące system audytu można wywołać indywidualnie z powłoki za pomocą auditctl lub wsadowo odczytać z pliku za pomocą auditctl - R. Ta ostatnia metoda jest używana przez skrypty init do ładowania reguł z pliku /etc/audit/audit. rules po uruchomieniu demona audytu.

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 audytu

Należ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`.

Jak używać audytu w systemie Linux?
Polecenia kontrolujące system audytu można wywołać indywidualnie z powłoki za pomocą auditctl lub wsadowo odczytać z pliku za pomocą auditctl - R. Ta ostatnia metoda jest używana przez skrypty init do ładowania reguł z pliku /etc/audit/audit. rules po uruchomieniu demona audytu.

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ść.

Go up