Morpheus
Noyau Linux / Durcissement à l'exécution

Hardening Kernel

Paramètres boot et runtime pour réduire l'exploitation kernel: mémoire, LSM, sysctl, réseau bas niveau et validation post-reboot.

kernel sysctl LSM AppArmor runtime
Couches kernel et runtime dans la défense Morpheus
Vue publique: protections boot, paramètres runtime, LSM, réseau bas niveau et validation continue.
01

Fixer

Activer au boot les protections qui doivent exister avant l'espace utilisateur.

02

Appliquer

Configurer les sysctl runtime pour limiter fuites d'information, ptrace, BPF et réseau.

03

Vérifier

Lire l'état réel après reboot plutôt que supposer que la configuration est chargée.

04

Arbitrer

Documenter les paramètres retenus, les impacts et les exceptions desktop.

Contexte

Le problème réel.

Un noyau durci ne se résume pas à une ligne de commande copiée. Les paramètres doivent être cohérents avec le bootloader, la chaîne UKI, AppArmor, le réseau et les contraintes desktop.

Objectifs

Ce que la solution devait garantir.

  • Réduire les primitives d'exploitation kernel courantes.
  • Activer AppArmor via la pile LSM attendue.
  • Conserver une posture compatible avec Arch, Hyprland, KVM et usage quotidien.
  • Rendre les contrôles vérifiables sans publier de ligne de boot complète.
Architecture publique

Structure documentée, détails exploitables retirés.

Exemples anonymisés

Ce qui peut être montré sans exposer le système réel.

Familles de paramètres boot

La page reprend les familles documentées sans publier la ligne de boot complète ni les identifiants disque.

durcissement mémoire  isolation slab, effacement allocation, effacement libération
durcissement pile     offset de pile noyau randomisé
mitigations CPU       mitigations automatiques des vulnérabilités CPU
pile LSM             landlock, lockdown, yama, apparmor, bpf
activation apparmor   apparmor activé et sélectionné

Sysctl critiques

Les valeurs sont documentées comme contrôles de posture, pas comme fichier complet.

adresses noyau        restricted
logs noyau            root-only
ASLR                  full
ptrace                restricted
BPF non privilégié    disabled
BPF JIT               hardened
liens protégés        enabled
IP forwarding         disabled sauf exception lab

Validation post-reboot

Le principe de la documentation privée est conservé: lire l'état réellement chargé après reboot.

lire la ligne de commande noyau effective
lire la pile LSM active
lire les valeurs sysctl sélectionnées
contrôler les politiques firewall
contrôler l'état AppArmor
comparer la tendance Lynis et la santé SecOps
Runbook public

Commandes et états attendus issus de la documentation privée.

Les commandes ci-dessous sont volontairement anonymisées: chemins, noms de machines, interfaces, dépôts, périphériques et actions destructrices sont remplacés par des placeholders.

Documentation privée: kernel-hardening + hardening-systeme

État boot et LSM

Commandes anonymisées

cat /proc/cmdline | tr ' ' '\n' | rg 'slab|init_on|randomize|mitigations|lsm|apparmor'
cat /sys/kernel/security/lsm
aa-status | head -n 10
lynis audit system --quick --no-colors

État attendu

la ligne de commande effective contient les familles de hardening retenues
la pile LSM active inclut apparmor
le service AppArmor a chargé des profils
la tendance Lynis est revue après changement
aucune entrée de boot complète ni identifiant disque n'est publié
Documentation privée: kernel-hardening

Sysctl runtime

Commandes anonymisées

sysctl kernel.kptr_restrict kernel.dmesg_restrict kernel.randomize_va_space kernel.yama.ptrace_scope kernel.unprivileged_bpf_disabled net.core.bpf_jit_harden
sysctl fs.protected_symlinks fs.protected_hardlinks fs.protected_fifos fs.protected_regular fs.suid_dumpable
sysctl net.ipv4.conf.all.rp_filter net.ipv4.tcp_syncookies net.ipv4.ip_forward

État attendu

l'exposition des pointeurs noyau est restreinte
les logs noyau sont restreints
ASLR est en full
ptrace est limité
le BPF non privilégié est désactivé
les protections de liens du système de fichiers sont actives
IP forwarding reste désactivé sauf exception de lab documentée
Documentation privée: kernel-hardening + nftables

Contrôle réseau bas niveau

Commandes anonymisées

sysctl net.ipv4.conf.all.accept_redirects net.ipv4.conf.default.accept_redirects net.ipv6.conf.all.accept_redirects net.ipv6.conf.default.accept_redirects
sysctl net.ipv4.conf.all.accept_source_route net.ipv4.conf.default.accept_source_route net.ipv6.conf.all.accept_source_route net.ipv6.conf.default.accept_source_route
nft list ruleset | rg 'policy'

État attendu

les redirects sont refusés
le source routing est refusé
les SYN cookies sont actifs
le firewall garde input en drop
le hardening runtime et le firewall sont revus ensemble
Travail réalisé

Décisions techniques publiables.

Paramètres mémoire

La configuration documente slab_nomerge, init_on_alloc, init_on_free et randomize_kstack_offset comme défenses anti-fuite et anti-exploitation.

LSM

La pile attendue inclut Landlock, Lockdown, Yama, AppArmor et BPF dans un ordre documenté.

Sysctl

Les valeurs critiques limitent les adresses kernel, dmesg, BPF non privilégié, ptrace et certains comportements réseau.

Exception réseau

net.ipv4.ip_forward=1 peut rester volontairement actif quand l'hôte porte un NAT libvirt documenté; ce n'est pas la posture par défaut d'un poste sans virtualisation.

Validation

Preuves et contrôles retenus.

Preuves visuelles

Contrôles observables et portée de la preuve.

Résultats publics

Ce que le chantier démontre.

Anonymisation

Ce qui reste privé.

  • Pas de ligne de boot complète.
  • Pas d'UUID, chemin d'entrée bootloader ou artifact exact.
  • Pas de fichier sysctl complet copiable.
  • Les paramètres sont publiés par familles et contrôles attendus.
Sources privées

Documentation d'origine.

  • Documentation Hardening Kernel.
  • Documentation hardening système.
  • Documentation AppArmor.
  • Audit Lynis.

Supplément de documentation privée anonymisé

Hardening du noyau Linux sur Arch

Guide public pour renforcer le noyau Linux avec paramètres boot et runtime. Les chemins exacts, UUID, entrées de boot, périphériques et fichiers privés sont remplacés par des placeholders.

Objectif

  • Réduire la surface d'attaque kernel.
  • Limiter l'exploitation des vulnérabilités noyau.
  • Sécuriser mémoire, ptrace, BPF et interactions système.
  • Renforcer la sécurité réseau bas niveau.
  • Conserver une posture compatible desktop et lab.

Contexte

SystèmeArch Linux rolling release
KernelLTS privilégié pour stabilité
CPUPlateforme x86_64 avec microcode à jour
Bootloadersystemd-boot, UKI et Secure Boot selon cible
UsagePoste personnel sécurisé, non exposé WAN

Stratégie de hardening

Deux axes sont combinés:

  • Boot: paramètres appliqués dès le démarrage, avant l'espace utilisateur.
  • Runtime: paramètres sysctl testables et rechargeables pendant la session.

Les deux approches sont complémentaires: le boot fixe les protections structurantes, le runtime ajuste les comportements noyau, fichiers et réseau.

Chaîne de confiance au boot

Le périmètre validé relie systemd-boot, UKI, Secure Boot, LUKS, TPM et FIDO2. Cette page ne remplace pas Boot Trust: elle décrit seulement l'impact kernel des paramètres boot.

  • UKI assemble noyau, initramfs et cmdline.
  • Secure Boot vérifie les binaires de boot signés.
  • LUKS protège les données au repos.
  • TPM et FIDO2 ajoutent des voies de déverrouillage liées au matériel.

Hardening au boot

Entrée de boot anonymisée:

title   <BOOT_ENTRY_NAME>
linux   <KERNEL_IMAGE>
initrd  <MICROCODE_IMAGE>
initrd  <INITRAMFS_IMAGE>
options root=UUID=<ROOT_UUID> rw quiet splash loglevel=3 amd_pstate=passive slab_nomerge init_on_alloc=1 init_on_free=1 randomize_kstack_offset=on mitigations=auto lsm=landlock,lockdown,yama,apparmor,bpf apparmor=1 security=apparmor
UKI

Quand l'UKI est utilisé, la cmdline doit être reconstruite, signée et vérifiée avec l'image de boot. Modifier seulement une ancienne entrée texte peut ne rien changer au boot réel.

Explication des paramètres boot

ParamètreProtection
slab_nomergeRéduit les attaques heap overflow entre caches slab.
init_on_alloc=1Nettoie la mémoire à l'allocation.
init_on_free=1Nettoie la mémoire à la libération.
randomize_kstack_offset=onRend l'exploitation stack kernel moins prévisible.
mitigations=autoActive les protections CPU pertinentes.
lsm=...Fixe l'ordre des Linux Security Modules.
apparmor=1 security=apparmorActive AppArmor comme MAC attendu.
cat /proc/cmdline
cat /sys/kernel/security/lsm
grep . /sys/devices/system/cpu/vulnerabilities/*

Hardening runtime (sysctl)

Le fichier sysctl dédié reste privé; la page publique liste les valeurs critiques par rôle.

kernel.kptr_restrict = 2
kernel.dmesg_restrict = 1
kernel.randomize_va_space = 2
kernel.yama.ptrace_scope = 1
kernel.core_uses_pid = 1
kernel.sysrq = 0
kernel.unprivileged_bpf_disabled = 1
net.core.bpf_jit_harden = 2
fs.suid_dumpable = 0
dev.tty.ldisc_autoload = 0

Paramètres sysctl réseau et fichiers

fs.protected_symlinks = 1
fs.protected_hardlinks = 1
fs.protected_fifos = 2
fs.protected_regular = 2

net.ipv4.conf.all.rp_filter = 1
net.ipv4.conf.default.rp_filter = 1
net.ipv4.icmp_echo_ignore_broadcasts = 1
net.ipv4.icmp_ignore_bogus_error_responses = 1
net.ipv4.conf.all.accept_redirects = 0
net.ipv4.conf.default.accept_redirects = 0
net.ipv6.conf.all.accept_redirects = 0
net.ipv6.conf.default.accept_redirects = 0
net.ipv4.conf.all.accept_source_route = 0
net.ipv4.conf.default.accept_source_route = 0
net.ipv6.conf.all.accept_source_route = 0
net.ipv6.conf.default.accept_source_route = 0
net.ipv4.conf.all.send_redirects = 0
net.ipv4.conf.default.send_redirects = 0
net.ipv4.conf.all.log_martians = 1
net.ipv4.conf.default.log_martians = 1
net.ipv4.tcp_syncookies = 1
net.ipv4.ip_forward = 0
net.ipv4.conf.all.forwarding = 0
net.ipv6.conf.all.forwarding = 0
sudo sysctl --system
sysctl kernel.kptr_restrict
sysctl -a | rg 'kernel\.|net\.|fs\.|dev\.'

Vérification complète

La version portfolio évite le script heredoc et liste les contrôles directement:

cat /proc/cmdline | tr ' ' '\n' | rg 'slab|init_on|randomize|mitigations|lsm|apparmor'
cat /sys/kernel/security/lsm
grep . /sys/devices/system/cpu/vulnerabilities/*
sysctl kernel.kptr_restrict kernel.dmesg_restrict kernel.yama.ptrace_scope
sysctl kernel.unprivileged_bpf_disabled fs.suid_dumpable
sysctl net.ipv4.conf.all.rp_filter net.ipv4.tcp_syncookies net.ipv4.ip_forward
sysctl fs.protected_symlinks fs.protected_hardlinks fs.protected_fifos fs.protected_regular
lynis audit system --quick --no-colors

Sécurité apportée

  • Réduction des fuites d'adresses kernel.
  • Restriction BPF et ptrace côté utilisateurs non privilégiés.
  • Protection contre symlink, hardlink, FIFO et fichiers réguliers dangereux.
  • Mitigations CPU contre familles Spectre/Meltdown selon matériel.
  • Anti-spoofing, SYN cookies, redirects et source routing désactivés.

Impact performance

L'impact dépend du CPU et de la charge. En usage desktop, il reste généralement acceptable; les charges intensives CPU/I/O peuvent être plus sensibles.

sysbench cpu --cpu-max-prime=<N> run
sysbench memory --memory-total-size=<SIZE> run
grep . /sys/devices/system/cpu/vulnerabilities/*

Limitations

  • Certaines protections dépendent du CPU et du microcode.
  • Les mitigations CPU ont un coût variable.
  • Le hardening kernel ne remplace pas AppArmor, Firejail, nftables ou LUKS.
  • Les paramètres doivent être revus après incident, update majeure ou changement matériel.

Dépannage

En cas d'instabilité, comparer logs, paramètres boot et sysctl actifs avant de retirer une protection.

journalctl -b -p err
dmesg | tail -n 50
journalctl -k | rg 'denied|blocked|refused'
sysctl kernel.yama.ptrace_scope
sysctl kernel.unprivileged_bpf_disabled

Les retours arrière sont traités comme temporaires et documentés: désactiver un fichier sysctl, retirer un paramètre boot problématique, recharger, tester, puis réintroduire proprement.

Commandes de référence rapide

bootctl status
cat /proc/cmdline
cat /sys/kernel/security/lsm
sudo sysctl --system
sysctl kernel.kptr_restrict
grep . /sys/devices/system/cpu/vulnerabilities/*
lynis audit system --quick --no-colors

Ressources

  • Kernel Self Protection Project.
  • Linux Kernel Parameters.
  • Documentation sysctl.
  • Arch Wiki Security.
  • Lynis.