Kernel hardening — sprawdź bezpieczeństwo swojego kernela w 30 sekund
Większość ludzi kompiluje kernel albo z defconfig, albo kopiuje config z dystrybucji i robi make oldconfig. W obu przypadkach nikt nie sprawdza, ile opcji bezpieczeństwa jest wyłączonych.
A jest ich sporo.
Typowy config z Debiana 13 przechodzi mniej więcej 60% sprawdzeń bezpieczeństwa. Domyślny defconfig z upstream – jeszcze gorzej. Opcje typu CONFIG_STACKPROTECTOR_STRONG, CONFIG_INIT_STACK_ALL_ZERO czy CONFIG_RANDOMIZE_KSTACK_OFFSET_DEFAULT często nie są włączone, bo nikt ich ręcznie nie szuka w gąszczu kilku tysięcy opcji.
Jak to sprawdzić?
Narzędzie na vmlinuz.pl sprawdzi to za Ciebie: Kernel Checker.
Wrzucasz plik .config swojego kernela, a po kilku sekundach dostajesz:
- wynik procentowy (ile sprawdzeń przeszło)
- listę problemów pogrupowanych po kategoriach (self_protection, cut_attack_surface, harden_userspace, security_policy)
- pełną tabelę ze wszystkimi opcjami i ich statusem
Sprawdzenia bazują na zaleceniach KSPP (Kernel Self Protection Project), grsecurity, CLIP OS i CIS Benchmark.
Gdzie znaleźć swój config?
Na większości dystrybucji:
ls /boot/config-$(uname -r)
Jeśli kernel ma wkompilowane CONFIG_IKCONFIG_PROC:
zcat /proc/config.gz > ~/my-kernel.config
A jeśli kompilowałeś ze źródeł, to .config leży w katalogu źródłowym.
Co z tym zrobić?
Nie chodzi o to, żeby mieć 100%. Część opcji jest wzajemnie wykluczająca, a część wpływa na wydajność. Ale jeśli masz 45%, to warto przejrzeć listę i włączyć to, co ma sens w Twoim przypadku.
Kilka opcji, które prawie zawsze warto mieć:
CONFIG_STACKPROTECTOR_STRONG=y
CONFIG_INIT_STACK_ALL_ZERO=y
CONFIG_RANDOMIZE_BASE=y
CONFIG_RANDOMIZE_MEMORY=y
CONFIG_HARDENED_USERCOPY=y
CONFIG_FORTIFY_SOURCE=y
CONFIG_STRICT_KERNEL_RWX=y
CONFIG_STRICT_MODULE_RWX=y
CONFIG_MODULE_SIG=y
CONFIG_MODULE_SIG_FORCE=y
Po zmianie konfiga:
make oldconfig
make -j$(nproc)
sudo make modules_install install
I restart.
Prywatność
Config nie jest nigdzie zapisywany. Trafia do analizy, wynik wraca do przeglądarki, plik jest kasowany. Nic nie logujemy, nic nie przechowujemy.