Kernel hardening cz. 2 — sprawdź ustawienia sysctl
W poprzednim artykule opisałem sprawdzanie pliku .config kernela. Ale bezpieczeństwo jądra to nie tylko opcje kompilacji — równie ważne są ustawienia runtime.
Kernel Checker obsługuje teraz sprawdzanie sysctl. Sprawdzenia bazują na rekomendacjach KSPP, grsecurity, CLIP OS i CIS Benchmark.
Sysctl — ustawienia runtime
Sysctl to parametry jądra dostępne w runtime. Większość z nich można zmieniać bez rekompilacji, choć część jest read-only i zależy od opcji wkompilowanych w kernel. Część z nich ma bezpośredni wpływ na bezpieczeństwo:
# Ochrona przed symlink/hardlink atakami
kernel.yama.ptrace_scope = 1
fs.protected_symlinks = 1
fs.protected_hardlinks = 1
# ASLR
kernel.randomize_va_space = 2
# Ochrona sieci
net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.all.send_redirects = 0
Żeby sprawdzić swoje ustawienia:
sudo sysctl -a > sysctl.txt
Plik sysctl.txt wrzucasz do Kernel Checkera w zakładce Sysctl. Dostajesz listę opcji, które odbiegają od rekomendacji.
sudo jest ważne — bez uprawnień root część opcji nie będzie widoczna i sprawdzenie będzie niekompletne.
Co jeśli coś jest źle?
Większość parametrów można zmienić w locie, bez restartu:
sudo sysctl -w kernel.yama.ptrace_scope=1
Żeby zmiana przetrwała restart, dodaj ją do /etc/sysctl.d/99-hardening.conf:
kernel.yama.ptrace_scope = 1
kernel.randomize_va_space = 2
net.ipv4.conf.all.rp_filter = 1
I załaduj:
sudo sysctl -p /etc/sysctl.d/99-hardening.conf
Pliki z /etc/sysctl.d/ są ładowane automatycznie przy starcie systemu. Część dystrybucji dostarcza własne pliki z podstawowymi ustawieniami bezpieczeństwa.