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.
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.
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.
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
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
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
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.
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"
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 commeordioulocalhost; - 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
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.
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(jamaisPermissive, 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
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.
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-microcodepour Intel (intel-ucodesur Arch) ;amd-microcodepour AMD (amd-ucodesur Arch). Pour les firmwares (BIOS/UEFI, périphériques), utilisezfwupdré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.
sysctl
Pour durcir le noyau côté privilèges, swap et réseau, deux options :
- Sur Debian/Ubuntu, appliquez les règles Kicksecure en suivant leur tutoriel.
- Sur les autres distributions, copiez ces deux fichiers dans
/etc/sysctl.d/: /etc/sysctl.d/30_security-misc.conf/etc/sysctl.d/990-security-misc.conf
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
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 bluetoothetinstall 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.
Sur certaines machines, il est possible d'utiliser Secure Boot avec une distribution Linux grâce à sbctl qui gère vos propres clés.
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 :
- 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.