LKRG — ochrona jądra Linux w czasie rzeczywistym
LKRG (Linux Kernel Runtime Guard) to moduł jądra monitorujący integralność struktur jądra w czasie rzeczywistym, wykrywający rootkity i exploity typu privilege escalation. Projekt jest rozwijany przez grupę Openwall, a jego głównym autorem jest Adam “pi3” Zabrocki.
Jak to działa?
LKRG opiera się na dwóch głównych filarach:
-
Weryfikacja integralności (Integrity Checking): LKRG okresowo (oraz w odpowiedzi na pewne zdarzenia) oblicza sumy kontrolne kluczowych obszarów pamięci jądra (takich jak
.text,.rodataoraz tablica wywołań systemowychsys_call_table). Jeśli wykryje, że “tylko do odczytu” pamięć jądra została zmieniona (co jest typowym działaniem rootkitów), natychmiast reaguje (np. panikując jądro, aby zapobiec dalszym szkodom). -
Weryfikacja metadanych procesów (Exploit Detection): Większość exploitów typu “local privilege escalation” (podniesienie uprawnień) działa poprzez bezpośrednią modyfikację struktury
credw pamięci jądra, zmieniając np. UID procesu na 0 (root). LKRG monitoruje te zmiany. Jeśli proces nagle zyskuje uprawnienia roota bez przejścia przez standardowe, autoryzowane ścieżki (jaksetuidczyexecve), LKRG blokuje taką próbę i zabija proces.
LKRG vs. Grsecurity/PaX
Często LKRG jest porównywane do Grsecurity/PaX. Chociaż oba projekty zwiększają bezpieczeństwo, działają na innej zasadzie:
- Grsecurity/PaX: To zestaw łat (patches), które modyfikują kod źródłowy jądra, aby utrudnić wykorzystanie błędów (prewencja). Wymaga rekompilacji jądra.
- LKRG: To moduł ładowalny (LKM), który można dodać do standardowego jądra dystrybucyjnego (np. Ubuntu, Fedora) bez konieczności jego modyfikacji czy rekompilacji. Skupia się na wykrywaniu już trwającego ataku (detekcja).
Instalacja (na przykładzie Debiana/Ubuntu)
LKRG nie jest zazwyczaj dostępny w standardowych repozytoriach (z wyjątkiem dystrybucji nastawionych na bezpieczeństwo, jak Whonix). Najlepiej zainstalować go ze źródeł, używając DKMS, co zapewni automatyczną przebudowę modułu przy aktualizacji jądra.
-
Instalacja zależności:
sudo apt install git dkms build-essential linux-headers-$(uname -r) -
Pobranie źródeł:
git clone https://github.com/lkrg-org/lkrg.git cd lkrg -
Instalacja i uruchomienie:
sudo make sudo make install # Moduł powinien załadować się automatycznie. Sprawdź to: sudo dmesg | grep LKRG
LKRG jest lekki, nie wymaga rekompilacji jądra i pokrywa całą klasę exploitów — w tym zero-day opierające się na modyfikacji struktur jądra. Najbardziej przydatny na serwerach wystawionych do internetu i systemach o podwyższonym ryzyku.