Vous avez déjà appliqué les bases de la protection d'une distribution Linux (sauvegardes, pare-feu, anti-malwares) ? Très bien, on passe à la suite. Cet article s'adresse à un profil intermédiaire ou initié, prêt à toucher au noyau, à la configuration système et au matériel.

🚨
Certaines de ces optimisations peuvent empêcher votre système de démarrer ou casser des fonctions utiles (virtualisation, Bluetooth, Wi-Fi avec certains chipsets...). Procédez par étapes, testez à chaque modification, et n'enchaînez pas tout d'un coup.

Introduction

Linux n'est pas, de base, un système d'exploitation pour station de travail durci. Il est conçu pour la souplesse et la compatibilité, et il vous laisse toute liberté pour pousser le curseur de la sécurité. Cet article propose un parcours cohérent pour le faire sans tout casser.

L'article reprend en grande partie les recommandations de privsec.dev, avec quelques ajouts et des arbitrages pour rester praticables au quotidien. Si vous voulez aller encore plus loin, le projet Kicksecure (la base de Whonix) reste la référence en 2026.

À l'installation

Partition chiffrée

La majorité des distributions proposent nativement, dans leur installateur, le chiffrement intégral du disque (LUKS sur la plupart, FileVault sur macOS, BitLocker sur Windows). Faites-le dès l'installation, c'est infiniment plus simple qu'après coup.

Voyez l'article dédié au chiffrement pour les détails et les compromis :
Le Chiffrement
Article traitant des notions de chiffrement dans son ensemble et les outils recommandés.

ZRAM

Le noyau Linux supporte des modules chargeables (LKM, Loadable Kernel Module). ZRAM (anciennement compcache) crée un espace de mémoire virtuelle compressée à l'intérieur de la RAM. Plutôt que de swapper sur le disque, ZRAM compresse en mémoire.

Trois bénéfices majeurs :

  • moins d'écritures sur le disque (utile sur SSD) ;
  • des opérations plus rapides (la RAM est beaucoup plus véloce qu'un SSD, a fortiori qu'un disque mécanique) ;
  • moins d'exposition aux fuites mémoire qui passent par le swap disque.
💡
Mise à jour 2026 : Fedora active ZRAM par défaut depuis la version 33 (et c'est toujours le cas en 2026). De plus en plus de distributions suivent cette voie. Vérifiez si c'est déjà actif chez vous avant d'installer quoi que ce soit, avec swapon --show ou zramctl.

Debian/Ubuntu

Installez zram-tools :

sudo apt install zram-tools

Configurez l'algorithme zstd et 60 % de la RAM :

echo -e "ALGO=zstd\nPERCENT=60" | sudo tee -a /etc/default/zramswap

💡
tee modifie les valeurs ALGO et PERCENT dans /etc/default/zramswap. Vous pouvez aussi éditer le fichier à la main avec nano.

Rechargez :

sudo service zramswap reload

Arch Linux

Installez zram-generator :

sudo pacman -S zram-generator

Configurez l'algorithme zstd et 100 % de la RAM :

echo -e "[zram0]\nzram-size=ram\ncompression-algorithm=zstd" | sudo tee /etc/systemd/zram-generator.conf

💡
tee crée le fichier zram-generator.conf avec le contenu fourni. Attention : les \n sont interprétés par echo -e comme des retours à la ligne réels. Si vous éditez à la main, mettez de vrais retours à la ligne.

Redémarrez la machine.

RedHat/Fedora

ZRAM est utilisé par défaut depuis Fedora 33. Rien à faire.

openSUSE

sudo zypper install systemd-zram-service
sudo systemctl enable --now zramswap.service

Pour vérifier que le swap utilise bien ZRAM :

cat /proc/swaps

Vous devez voir des lignes /dev/zramX (une par cœur de processeur). Pour visualiser l'utilisation :

zramctl
free -h

Petits ajustements

Optimiser la journalisation

Les logs (journaux) peuvent gonfler considérablement et finir par ralentir le système. Une rotation et un plafond de taille évitent l'emballement.

Nettoyage des journaux actuels :

sudo systemd-resolve --flush-caches
sudo journalctl --rotate

Configuration :

sudo journalctl --vacuum-time=1s
sudo journalctl --vacuum-size=40M
sudo sed -i 's/#SystemMaxUse=/SystemMaxUse=100M/' /etc/systemd/journald.conf
sudo sed -i 's/#SystemMaxFiles=100/SystemMaxFiles=7/g' /etc/systemd/journald.conf

Dernière rotation pour appliquer :

sudo journalctl --rotate

/tmp en mémoire

Le répertoire /tmp est très sollicité (système et applications), ce qui implique beaucoup d'écritures disque. Le rediriger en mémoire vive limite l'usure des SSD et améliore parfois les performances.

echo -e "\ntmpfs /tmp   tmpfs defaults,noatime,nodiratime,noexec,nodev,mode=1777,nosuid,size=4G         0 0" | sudo tee -a /etc/fstab
echo -e "\ntmpfs /var/tmp  tmpfs defaults,noatime,nodiratime,noexec,nodev,mode=1777,nosuid,size=4G         0 0" | sudo tee -a /etc/fstab

🚨
N'appliquez ceci que si vous n'avez pas de partition séparée pour /tmp. Sinon vous risquez un comportement incohérent au prochain démarrage.
💡
Note 2026 : sur certaines distributions modernes (Fedora, openSUSE Tumbleweed), /tmp est déjà monté en tmpfs par défaut via tmp.mount. Vérifiez avec mount | grep tmp avant de modifier /etc/fstab.

Randomisation MAC

La majorité des distributions utilisent NetworkManager. Vous pouvez renforcer la confidentialité réseau en randomisant les adresses MAC des cartes Wi-Fi et Ethernet.

⚠️
Cette optimisation peut poser problème sur certains réseaux d'entreprise ou universitaires (filtrage par MAC). Si vous perdez la connexion, faites machine arrière sur cette section.

Créez le fichier de configuration :

sudo nano /etc/NetworkManager/conf.d/00-macrandomize.conf

Avec ce contenu :

[device]
wifi.scan-rand-mac-address=yes

[connection]
wifi.cloned-mac-address=random
ethernet.cloned-mac-address=random

Puis pour le nom d'hôte transitoire :

sudo nano /etc/NetworkManager/conf.d/01-transient-hostname.conf

[main]
hostname-mode=none

Redémarrez NetworkManager :

sudo systemctl restart NetworkManager

Et passez le nom d'hôte sur localhost :

sudo hostnamectl set-hostname "localhost"

💡
Quelques précisions importantes : ▶️ La randomisation MAC peut ne pas fonctionner selon le firmware/microcode de votre carte Wi-Fi ▶️ Le 1er bloc de 3 octets de l'adresse MAC est l'OUI (Organizational Unique Identifier), un identifiant fabricant. Spoofer ce bloc est contre-productif : on peut le détecter en interrogeant une base d'OUI, ce qui révèle au passage l'usurpation (et parfois l'utilisation d'un VPN). Mieux vaut ne randomiser que les 3 derniers octets (le NIC, votre numéro de carte). C'est ce que fait NetworkManager par défaut, mais macchanger permet plus de finesse (attention : projet en stagnation depuis 2017, encore fonctionnel mais non maintenu activement) ▶️ Vous ne vous soustrayez jamais complètement au fingerprinting. L'idée est de réduire le risque, pas de l'annuler.

Identification

Plusieurs petits réflexes à l'installation :

  • évitez un nom d'utilisateur explicite (votre prénom, votre pseudo principal). Préférez un pseudonyme jetable ou un mot générique comme user ;
  • évitez un nom d'hôte explicite (mac-de-jean). Préférez un mot générique comme ordi ou localhost ;
  • vérifiez que l'identifiant unique de la machine est bien une suite aléatoire de chiffres et de lettres (du genre b08dff433e7567a1921a7150ab01). Vous le trouverez dans /etc/machine-id (systemd) ou /var/lib/dbus/machine-id (anciens systèmes).

Télémétrie

La majorité des distributions remontent des informations vers leurs serveurs (nombre d'installations, paquets installés, etc.). Si votre modèle de menaces l'exige, ou simplement pour réduire votre empreinte réseau, voici comment couper :

Distribution / outil Commande / action
Fedora Ajouter countme=false dans /etc/dnf/dnf.conf. Sur rpm-ostree (Silverblue), suivre la procédure countme.
openSUSE Supprimer /var/lib/zypp/AnonymousUniqueId.
Zorin OS sudo apt purge --auto-remove zorin-os-census puis sudo apt-mark hold zorin-os-census.
Ubuntu sudo apt purge --auto-remove ubuntu-report popularity-contest apport whoopsie.

Pour Snap (déconseillé par défaut), si vous l'avez par accident :

sudo snap remove --purge firefox
sudo snap remove --purge gtk-common-themes
sudo snap remove --purge snapd-desktop-integration
sudo snap remove --purge snap-store
sudo snap remove --purge bare
sudo snap remove --purge core22 core20 core18
sudo snap remove --purge snapd
sudo apt -y purge --auto-remove snapd
sudo apt-mark hold snapd

💡
Mise à jour 2026 : sous Ubuntu 24.04+ et 26.04, les snaps Firefox et autres ont évolué. Adaptez les noms (core24 apparaît, core18 disparaît). Le principe reste identique. À noter : Ubuntu pousse de plus en plus fort sur Snap, et désinstaller Firefox-snap nécessite parfois d'ajouter manuellement le PPA Mozilla pour la version .deb.

Flatpak

Flatpak isole les applications dans un bac à sable (sandboxing), à la manière d'Android, mais le filtrage par défaut est plus permissif. Vous pouvez le durcir avec Flatseal, une interface graphique qui expose les permissions de chaque application.

L'idée générale : désactiver tout accès des applications aux fichiers système (filesystem), puis les lancer une à une et n'autoriser que ce qui est strictement nécessaire au fonctionnement.

Pour vous aider, privsec et rusty-snake ont publié des exemples d'overrides pour les applications courantes.

⚠️
N'activez pas les mises à jour automatiques Flatpak : elles peuvent réinitialiser les permissions par défaut. Vérifiez les permissions après chaque mise à jour.

Contrôle d'accès (MAC)

Les distributions Linux implémentent un contrôle d'accès renforcé : SELinux (Red Hat, Fedora, Android) ou AppArmor (Debian, Ubuntu, openSUSE).

Recommandations :

  • sur Fedora et Red Hat : laissez SELinux en mode Enforcing (jamais Permissive, encore moins désactivé). C'est l'une des raisons pour lesquelles ces distributions sont perçues comme plus sûres ;
  • sur les autres distributions : conservez l'outil par défaut, qui vient avec des règles raisonnables ;
  • sur Arch : à vous d'installer et configurer AppArmor en suivant le wiki Arch. Si vous voulez créer ou renforcer vos propres profils, voici des points de départ sérieux :
  • bubblewrap (sandboxing à la main)
  • seccomp (filtrage des appels système)
  • Kicksecure apparmor-profile-everything
  • Krathalan AppArmor profiles
  • noatsecure SELinux templates
⚠️
Cette piste est fastidieuse et réservée à ceux qui veulent vraiment passer du temps sur leur configuration. La sécurité a presque toujours un coût en ergonomie.

Pare-feu avancé

Au-delà de UFW et firewalld (vus dans l'article de base), deux outils permettent un contrôle plus fin par application, particulièrement utile pour repérer les fuites :

  • OpenSnitch : pare-feu interactif par application, avec interface graphique. Très actif en 2026.
  • Portmaster : pare-feu applicatif avec filtrage DNS intégré, multi-plateforme. Le projet a connu un creux en 2024 mais reste maintenu.
⚠️
Tous ces outils peuvent être contournés par un attaquant qui aurait déjà des privilèges élevés sur la machine : il pourra simplement modifier les règles. La défense en profondeur reste de mise.

Durcissement

Firmware et microcode

Les microcodes CPU (Intel, AMD) reçoivent des correctifs de vulnérabilités matérielles (Meltdown, Spectre, Downfall, Inception et leurs descendants...). Activez les paquets non-free (ou équivalent) et installez :

  • intel-microcode pour Intel (intel-ucode sur Arch) ;
  • amd-microcode pour AMD (amd-ucode sur Arch). Pour les firmwares (BIOS/UEFI, périphériques), utilisez fwupd régulièrement :
sudo fwupdmgr refresh
sudo fwupdmgr update

Si fwupd n'est pas installé par défaut :

# Debian/Ubuntu
sudo apt install fwupd

# Fedora
sudo dnf install fwupd

# Arch
sudo pacman -S fwupd

# openSUSE
sudo zypper install fwupd

Noyau (kernel)

Sujet complexe : le durcissement du noyau Linux. Sur Arch et dérivés, vous pouvez choisir le noyau linux-hardened qui inclut des patchs de sécurité et une configuration plus stricte (au prix de quelques régressions sur certains logiciels). Les autres distributions livrent généralement un noyau standard.

⚠️
Cette section s'adresse à des profils intermédiaires à initiés. Le risque de bloquer des usages quotidiens est réel. La sécurité vient presque toujours avec des compromis sur l'ergonomie.

sysctl

Pour durcir le noyau côté privilèges, swap et réseau, deux options :

💡
Vous pouvez les télécharger depuis le dépôt et les copier en root, ou créer manuellement les fichiers et y coller le contenu. Une fois en place, appliquez avec sudo sysctl --system.

Boot

Le boot est un moment critique. Renforcer la ligne de commande du noyau ferme plusieurs portes (Spectre, Meltdown, et compagnie).

Debian/Ubuntu

sudo sed -i'.bkp' -E 's|(GRUB_CMDLINE_LINUX_DEFAULT="quiet splash)|\1 slab_nomerge init_on_alloc=1 init_on_free=1 page_alloc.shuffle=1 pti=on vsyscall=none debugfs=off oops=panic mce=0 loglevel=0 spectre_v2=on spec_store_bypass_disable=on tsx=off tsx_async_abort=full,nosmt mds=full,nosmt l1tf=full,force nosmt=force kvm.nx_huge_pages=force randomize_kstack_offset=on|' /etc/default/grub
sudo update-grub

Arch Linux

sudo sed -i'.bkp' -E 's|(GRUB_CMDLINE_LINUX_DEFAULT="quiet )|\1 slab_nomerge init_on_alloc=1 init_on_free=1 page_alloc.shuffle=1 pti=on vsyscall=none debugfs=off oops=panic mce=0 loglevel=0 spectre_v2=on spec_store_bypass_disable=on tsx=off tsx_async_abort=full,nosmt mds=full,nosmt l1tf=full,force nosmt=force kvm.nx_huge_pages=force randomize_kstack_offset=on |' /etc/default/grub
sudo grub-mkconfig -o /boot/grub/grub.cfg

RedHat/Fedora

sudo sed -i'.bkp' -E 's|(GRUB_CMDLINE_LINUX="rhgb quiet)|\1 slab_nomerge init_on_alloc=1 init_on_free=1 page_alloc.shuffle=1 pti=on vsyscall=none debugfs=off oops=panic mce=0 loglevel=0 spectre_v2=on spec_store_bypass_disable=on tsx=off tsx_async_abort=full,nosmt mds=full,nosmt l1tf=full,force nosmt=force kvm.nx_huge_pages=force randomize_kstack_offset=on|' /etc/default/grub

Pour BIOS legacy :

sudo grub2-mkconfig -o /etc/grub2.cfg

Pour UEFI :

sudo grub2-mkconfig -o /etc/grub2-efi.cfg

openSUSE

sudo sed -i'.bkp' -E 's|(GRUB_CMDLINE_LINUX_DEFAULT="splash=silent mitigations=auto quiet security=apparmor)|\1 slab_nomerge init_on_alloc=1 init_on_free=1 page_alloc.shuffle=1 pti=on vsyscall=none debugfs=off oops=panic mce=0 loglevel=0 spectre_v2=on spec_store_bypass_disable=on tsx=off tsx_async_abort=full,nosmt mds=full,nosmt l1tf=full,force nosmt=force kvm.nx_huge_pages=force randomize_kstack_offset=on|' /etc/default/grub

Pour BIOS legacy :

sudo grub2-mkconfig -o /etc/grub2.cfg

Pour UEFI :

sudo grub2-mkconfig -o /etc/grub2-efi.cfg

💡
Note 2026 : nosmt=force désactive l'hyperthreading. C'est cher en performance pour un usage bureautique mais ça ferme une famille entière de vulnérabilités spéculatives. Si vos cas d'usage en pâtissent (compilation, jeu, virtualisation), retirez ce flag spécifiquement et gardez le reste.

Modules

Kicksecure fournit aussi une configuration durcie pour les modules du noyau :

  • /etc/modprobe.d/30_security-misc.conf À copier dans /etc/modprobe.d/. Quelques précautions :
  • ce fichier désactive le Bluetooth par défaut. Pour le garder, commentez les lignes qui commencent par install bluetooth et install btusb (un # en début de ligne) ;
  • les systèmes de fichiers Apple sont désactivés. Sur une machine Apple, vérifiez le système de fichiers de votre partition EFI et commentez la ligne correspondante (par exemple install hfsplus /bin/disabled-filesys-by-security-misc), sinon Linux ne bootera plus.

Accès /proc et /sys

Limiter l'accès à /proc et /sys réduit la surface d'attaque : ces répertoires révèlent l'état du noyau, les processus en cours, les informations matérielles. C'est complexe à mettre en place mais efficace.

Reprenez les configurations Kicksecure utilisées par Whonix :

Montage automatique

Sur la plupart des distributions, l'insertion d'une clé USB ou d'un disque externe déclenche un montage automatique. Pratique, mais cela ajoute un vecteur d'attaque : n'importe qui peut brancher une clé piégée et déclencher l'exécution de programmes.

Pour désactiver ce comportement :

Sur GNOME :

echo '[org/gnome/desktop/media-handling]
automount=false
automount-open=false' | sudo tee /etc/dconf/db/local.d/automount-disable

echo '/org/gnome/desktop/media-handling/automount
/org/gnome/desktop/media-handling/automount-open' | sudo tee /etc/dconf/db/local.d/locks/automount-disable

sudo dconf update

Sur Cinnamon : remplacez gnome par cinnamon dans les chemins ci-dessus.

Pour un modèle de menace élevé, USBGuard ajoute une surveillance active des ports USB : seuls les périphériques que vous avez explicitement autorisés sont activés. Le projet est très actif en 2026 et reste la référence dans ce domaine.

Secure Boot

Lors de l'installation de votre distribution, vous avez sans doute désactivé Secure Boot dans le BIOS. C'est l'usage classique : la majorité des firmwares ne fait confiance qu'aux clés Microsoft, ce qui bloque l'installation de la plupart des distributions Linux. Vous avez donc, de fait, un peu augmenté la surface d'attaque.

Comprenez bien ce que Secure Boot apporte (et ce qu'il n'apporte pas) :

  • il valide l'authenticité et l'intégrité des composants chargés au démarrage (par signature) ;
  • il ne protège pas la confidentialité du système. Un attaquant qui démonte la machine et clone le disque s'en moque éperdument. Pour la confidentialité, c'est le chiffrement qui répond. À retenir :
  • même avec Secure Boot activé, si le boot sur clé USB est autorisé, un attaquant qui boote sur sa propre clé contourne la mesure ;
  • Secure Boot peut être désactivé depuis le BIOS si rien ne protège l'accès au BIOS.
Bonnes pratiques complémentaires : chiffrer toutes les partitions sensibles, mettre un mot de passe administrateur au BIOS, désactiver le boot USB, et idéalement chiffrer/protéger la séquence de boot elle-même.

Sur certaines machines, il est possible d'utiliser Secure Boot avec une distribution Linux grâce à sbctl qui gère vos propres clés.

🚨
Toutes les machines ne supportent pas cette manipulation. Le risque est de bricker le mécanisme UEFI, ce qui bloque la machine. Vous devrez alors faire un reset de l'EEPROM. Lisez impérativement notre page Avertissement avant de tenter quoi que ce soit.

Procédure (sbctl est très actif en 2026, version 0.16+) :

sudo sbctl status

Sortie attendue :

Installed:  ✘ Sbctl is not installed
Setup Mode: ✘ Enabled
Secure Boot:    ✘ Disabled

Créez vos clés :

sudo sbctl create-keys

Created Owner UUID a9fbbdb7-a05f-48d5-b63a-08c5df45ee70
Creating secure boot keys...✔
Secure boot keys created!

Inscrivez-les en EFI :

sudo sbctl enroll-keys

Enrolling keys to EFI variables...✔
Enrolled keys to the EFI variables!

Signez les binaires de boot (kernel, bootloader). sbctl peut le faire automatiquement avec sbctl sign-all. Puis redémarrez et activez Secure Boot dans le BIOS.

sudo sbctl status

Après redémarrage et activation BIOS :

Installed:  ✔ Sbctl is installed
Owner GUID: a9fbbdb7-a05f-48d5-b63a-08c5df45ee70
Setup Mode: ✔ Disabled
Secure Boot:    ✔ Enabled

Si cela ne fonctionne pas (certains firmwares refusent l'inscription via EFI), exportez la clé publique sur la partition EFI et importez-la manuellement via le BIOS :

sudo openssl x509 -in /usr/share/secureboot/keys/db/db.pem -outform DER -out /boot/efi/EFI/fedora/DB.cer

À adapter :

  • /usr/share/secureboot/keys/db/db.pem : chemin de votre clé publique ;
  • /boot/efi/EFI/fedora/DB.cer : chemin de destination, ici sur Fedora. Adaptez selon votre distribution.

Conclusion

Pour fermer le tour d'horizon, ajoutez ces gestes simples :

  • chiffrement intégral du disque (FDE), si ce n'est pas déjà fait. Voir l'article correspondant :
Le Chiffrement
Article traitant des notions de chiffrement dans son ensemble et les outils recommandés.
  • désactivation des rapports d'erreur et de la télémétrie résiduelle
  • désactivation du Bluetooth et du Wi-Fi quand vous n'en avez pas besoin (clic droit dans la barre de tâches, ou via rfkill block)
  • couvrir la webcam (un cache physique vaut tous les logiciels)
  • désinstaller tout service ou application inutile, fermer les ports réseau non utilisés La sécurité n'est jamais finie : c'est un curseur que vous déplacez selon votre modèle de menaces. L'important est de comprendre ce que vous activez et pourquoi.

Pour les bases (sauvegarde, pare-feu simple, anti-malwares), revoyez l'article de protection de base.