LKRG - Strażnik Twojego Jądra Linux (Linux Kernel Runtime Guard)
Co to jest LKRG?
LKRG (Linux Kernel Runtime Guard) to zaawansowany moduł jądra, którego celem jest ochrona systemu Linux przed exploitami i złośliwym oprogramowaniem próbującym zmodyfikować działające jądro.
W przeciwieństwie do antywirusów, które szukają sygnatur znanych plików, LKRG działa na znacznie niższym poziomie. Monitoruje on integralność struktur jądra w czasie rzeczywistym. Można o nim myśleć jak o “systemie alarmowym”, który sprawdza, czy nikt nie próbuje podmienić kodu jądra lub nielegalnie zmienić uprawnień procesu.
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
Czy warto?
Dla typowego użytkownika desktopu LKRG może być nadmiarowy, ale dla serwerów wystawionych na publiczny internet lub systemów o podwyższonym ryzyku ataku, jest to doskonała, dodatkowa warstwa ochrony. Jest lekki, nie wymaga rekompilacji jądra i skutecznie chroni przed całą klasą exploitów, nawet tych jeszcze nieznanych (zero-day), które polegają na modyfikacji struktur jądra.