Morpheus
Sécurité / Défense en profondeur

Vue d'ensemble du hardening système complet

Synthèse du durcissement Arch Linux complet: kernel, sysctl, nftables, services, AppArmor, Firejail, permissions, audit et limites connues.

kernel nftables AppArmor Firejail Lynis
Vue d'ensemble publique des couches de hardening
Lecture publique: applications sandboxées, AppArmor, firewall, services systemd, sysctl réseau et kernel hardening.
01

Objectif

Réduire surface d'attaque, privilèges, exposition réseau et impact d'une compromission.

02

Couches

Assembler kernel, sysctl, nftables, services, AppArmor, Firejail et permissions.

03

Valider

Contrôler l'état réel avec cmdline, LSM, firewall, profils, sysctl et audit Lynis.

04

Évoluer

Documenter limites, priorités et liens vers les pages détaillées.

Contexte

Le problème réel.

Une posture de sécurité complète devient illisible si chaque brique reste isolée. La synthèse doit montrer comment kernel, réseau, services, isolation, permissions, audit et recovery se complètent sans publier les fichiers privés.

Objectifs

Ce que la solution devait garantir.

  • Donner une vue globale du durcissement système validé.
  • Relier les couches techniques aux attaques mitigées.
  • Conserver les compromis desktop, virtualisation et services locaux.
  • Publier la méthode sans exposer chemins, UUID, rulesets complets ou profils privés.
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.

Audit de permissions public

Exemple basé sur le durcissement documenté: le workspace local est privé et les secrets restent root-only.

composant              propriétaire attendu  mode attendu
racine workspace       user                  700
sous-arbre backup      user                  700
unité service publique privilégié           644
environnement secret   privilégié           600
script opérateur       user                  700 ou 750
cache généré           compte de service    non world-writable

Lecture des symlinks

La documentation explique un faux positif fréquent sans exposer de chemin privé.

constat                  interprétation
symlink affiché 777      comportement Linux normal
répertoire parent 700    les autres utilisateurs ne peuvent pas traverser
permissions cible OK     le contrôle d'accès est appliqué sur la cible
fichier régulier 777     vrai problème, investiguer

Couches de contrôle

La structure reprend la documentation hardening: boot trust, kernel, services, firewall, MAC, sandbox, audit, PRA.

01 boot trust          Secure Boot / UKI / racine chiffrée
02 runtime noyau       paramètres boot et posture sysctl
03 privilèges service  restrictions systemd et modes fichiers
04 exposition réseau   revue nftables et services locaux
05 contrôle obligatoire stratégie AppArmor
06 sandbox desktop     Firejail là où stable
07 audit intégrité     auditd, FIM et checks paquets
08 reprise             Restic et chemin de restauration testé
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: hardening-systeme

Vérification globale

Commandes anonymisées

cat /proc/cmdline | tr ' ' '\n' | rg 'slab|init_on|randomize|mitigations|lsm|apparmor'
cat /sys/kernel/security/lsm
nft list ruleset | rg 'policy'
aa-status | head -n 10
firejail --list
sysctl kernel.kptr_restrict kernel.dmesg_restrict kernel.unprivileged_bpf_disabled net.ipv4.conf.all.rp_filter net.ipv4.tcp_syncookies net.ipv4.ip_forward

État attendu

les paramètres boot montrent le durcissement mémoire et LSM
apparmor est présent dans la liste LSM
les policies input et forward du firewall sont en drop
AppArmor est chargé
une liste de sandbox vide peut être normale si rien n'est lancé
les sysctl critiques correspondent à la posture documentée
Documentation privée: journal-sécurité-2026-06-24

Audit permissions

Commandes anonymisées

find <sensitive-system-scope> <writable-or-special-mode-query> -printf '<mode> <owner>:<group> <path>\n' | sort
stat -c '%A %U:%G %n' <privileged-units> <privileged-scripts> 2>/dev/null | sort
find <operator-workspace> <group-or-world-writable-query> -printf '<mode> <owner>:<group> <path>\n' | sort

État attendu

aucun fichier régulier sensible n'est group- ou world-writable
aucun setuid ou setgid inattendu n'apparaît dans le scope audité
les unités privilégiées restent de la config lisible, pas writable par les utilisateurs
le workspace et le sous-arbre backup restent privés
un symlink 777 s'interprète via les permissions du parent et de la cible
Documentation privée: hardening-systeme

État de référence

Commandes anonymisées

lynis audit system --quick --no-colors
arch-audit
<secops-status-script>
<backup-status-script>

État attendu

la tendance Lynis tourne autour de 71/100 pour un desktop durci
les constats d'audit sont classés manuellement
SecOps revient à OK T0 quand aucune menace active n'existe
l'état du backup est visible dans l'interface opérateur
le score sert de boussole, pas d'objectif
Travail réalisé

Décisions techniques publiables.

Synthèse couches

La page présente sept couches: kernel, firewall, surface réseau, systemd, AppArmor, Firejail et permissions.

État validé

L'état de référence inclut boot trust, LUKS, nftables, AppArmor, Firejail, auditd, backup et monitoring local.

Commandes rapides

Les contrôles sont publiés sous forme de commandes directes, sans script heredoc ni fichiers réels.

Documentation liée

Chaque brique renvoie vers sa page détaillée: kernel, boot, FIDO2/LUKS, firewall, AppArmor, Firejail, SecOps et Lynis.

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 fichiers PAM, sudoers, firewall ou boot complets.
  • Pas de valeurs exactes de paramètres sensibles.
  • Pas de commandes destructrices ni de rebaseline copiables.
  • Les chemins privés sont remplacés par des rôles d'architecture.
Sources privées

Documentation d'origine.

  • Documentation hardening système.
  • Documentation kernel hardening.
  • Journal de durcissement post-update.
  • Documentation Lynis et SecOps.

Supplément de documentation privée anonymisé

Hardening système complet - Arch Linux

Guide de synthèse du durcissement système complet mis en place sur Arch Linux. Cette version publique conserve l'architecture et les contrôles, mais anonymise les chemins, identifiants, noms de machine et fichiers privés.

Objectif global

  • Réduire la surface d'attaque.
  • Limiter les privilèges des services.
  • Sécuriser la configuration réseau.
  • Améliorer la résilience face aux attaques locales.
  • Protéger contre les exploitations kernel.
  • Isoler les applications critiques.

Environnement

OSArch Linux rolling release
Kernellinux-lts, stabilité prioritaire
Bootsystemd-boot, Secure Boot, UKI signé
DesktopWayland / environnement personnel sécurisé
Score de postureLynis 71/100 comme tendance de référence desktop

La chaîne de confiance de boot est détaillée dans les pages Boot Trust, FIDO2 + LUKS et Secure Boot / UKI.

État validé

  • VPN principal validé.
  • Secure Boot personnalisé, UKI signé et suivi post-update.
  • LUKS avec voies TPM2 + PIN, FIDO2, phrase de passe et clé de récupération.
  • AppArmor et Firejail actifs selon périmètre.
  • nftables en deny-by-default.
  • auditd, FIM, widget SecOps et suivi backup Restic.
  • Monitoring disque exposé au dashboard local sans mot de passe sudo.

Vue d'ensemble du hardening

Applications sandboxées       Firejail
Contrôle d'accès obligatoire AppArmor
Filtrage réseau              nftables
Services                     systemd hardening
Réseau runtime               sysctl
Base système                 kernel boot + runtime hardening

Couche 1 : Hardening kernel

Les paramètres boot et runtime limitent exploitation mémoire, fuite d'information, ptrace, BPF et comportements réseau dangereux.

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
kernel.kptr_restrict=2
kernel.dmesg_restrict=1
kernel.randomize_va_space=2
kernel.yama.ptrace_scope=1
kernel.unprivileged_bpf_disabled=1
net.core.bpf_jit_harden=2
fs.protected_symlinks=1
fs.protected_hardlinks=1
fs.suid_dumpable=0

Couche 2 : Firewall nftables

La politique de base reste deny-by-default en entrée et en forward, avec sortie libre et diagnostics limités.

chain input
  policy drop
  allow loopback
  drop invalid
  allow established,related
  allow limited icmp
  allow dhcp client

chain forward
  policy drop

chain output
  policy accept

Les exceptions libvirt NAT sont documentées séparément pour ne pas élargir globalement le firewall.

Couche 3 : Réduction surface réseau

Les protocoles réseau inutilisés sont bloqués par configuration module:

install dccp /bin/true
install sctp /bin/true
install rds /bin/true
install tipc /bin/true

lsmod | rg 'dccp|sctp|rds|tipc'

Couche 4 : Hardening services systemd

Les services exposés sont relus avec restrictions adaptées au besoin fonctionnel.

NoNewPrivileges=true
PrivateTmp=true
ProtectSystem=full
ProtectHome=true
UMask=027

Certains services réseau gardent des capacités nécessaires; le compromis sécurité/fonctionnalité est documenté au cas par cas.

Couche 5 : AppArmor

AppArmor est activé via LSM et appliqué progressivement sur services et applications.

aa-status
cat /sys/kernel/security/lsm
journalctl -k --since '1 hour ago' | rg 'apparmor.*DENIED'

État public validé: profils chargés, majorité en enforce, quelques profils en complain et absence de violation récente sur la fenêtre observée.

Couche 6 : Sandbox applicative Firejail

Firejail isole certaines applications desktop exposées. Les applications complexes ou incompatibles restent explicitement hors périmètre.

firejail --list
firejail <APPLICATION>
rg 'Exec=firejail' <DESKTOP_FILES_SCOPE>

Couche 7 : Permissions système

  • UMASK restrictif pour éviter des fichiers trop ouverts.
  • Core dumps désactivés pour limiter les fuites mémoire.
  • Répertoire utilisateur privé.
  • Résolution locale du hostname sans requête externe inutile.
umask
sysctl fs.suid_dumpable
stat -c '%A %U:%G %n' <HOME_DIR>

Audit et validation

Lynis donne une tendance, pas un objectif absolu. Les findings sont triés manuellement selon le contexte desktop.

lynis audit system --quick --no-colors
arch-audit
rg 'hardening_index|tests_performed' <LYNIS_REPORT>
<SECOPS_STATUS_SCRIPT>
<BACKUP_STATUS_SCRIPT>

Forces et limites

Forces: kernel durci, firewall strict, surface réseau réduite, services confinés, MAC actif, sandbox applicative, permissions restrictives et chaîne de boot documentée.

Limites: monitoring temps réel partiel, rolling release à suivre, exceptions desktop nécessaires et ajustements continus sur authentification matérielle hors boot.

Prochaines étapes

  • Haute priorité: FIDO2 au-delà du boot, SDDM, Hyprlock, widget SecOps.
  • Priorité moyenne: API locale sécurité, automatisation des checks, homelab sécurisé.
  • Priorité basse: rationalisation secrets, WebAuthn infrastructure, SSH hardware-backed.

Commandes de vérification rapide

La version portfolio évite le script heredoc et présente les contrôles ligne par ligne:

cat /proc/cmdline | tr ' ' '\n' | rg 'slab|init_on|randomize|mitigations|lsm|apparmor'
cat /sys/kernel/security/lsm
nft list ruleset | rg 'policy'
aa-status | head -n 10
firejail --list
lsmod | rg 'dccp|sctp|rds|tipc'
sysctl kernel.kptr_restrict kernel.dmesg_restrict kernel.unprivileged_bpf_disabled
sysctl net.ipv4.conf.all.rp_filter net.ipv4.tcp_syncookies net.ipv4.ip_forward
rg 'hardening_index' <LYNIS_REPORT>

Conclusion

Le hardening système complet repose sur une défense en profondeur: refus par défaut, moindre privilège, isolation, audit et récupération. Il reste évolutif, car une posture de sécurité doit suivre les usages et les menaces.