Sections du handbook▾
Fondations
Comprendre les menaces qui pèsent sur un hôte LinuxPourquoi on durcitLes principes de défense derrière chaque règleConfiguration effective : la vérité qu'aucun fichier ne contientLes normes que Pavois cartographieModèle d'identifiant de contrôle SOCLEPreuves & exportsComment la note A-E est calculéeCe qu'un PASS prouve : le verdict qualifiéModèle de confiance du bundle de preuveSOCLE, n'est-ce pas votre propre norme ? (gouvernance & la question de la circularité)Ce que Pavois couvre, et ce qu'il ne couvre pasDomaines
Durcir SSHDurcir PAMContrôle d'accès obligatoire (SELinux / AppArmor)Durcir le pare-feu localDurcir sudoPermissions et propriété des fichiersDurcir les montages et le système de fichiersDurcir les modules noyauDurcir le noyau et le réseau avec sysctlJournalisation d'audit avec auditdDurcir la journalisation avec journald et rsyslogDurcir les services systemdHygiène des paquetsDurcir le chargeur d'amorçage (GRUB)Synchroniser l'heureBannières de connexion et MOTDContrôler l'accès à cron et atDurcir le bureau GNOME (dconf)Outillage
Annuler un durcissement : les points de restaurationExploiter Pavois : privilèges, air-gap, durée, dérogationsLancer Pavois en CI (GitHub Actions)État des fonctionnalités : livré, partiel, roadmapGouvernance : licence, versionnement, provenance, sécuritéDurcir les montages et le système de fichiers
Revu le
Isolez les répertoires à risque sur leurs propres montages et bridez-les avec nodev, nosuid, noexec pour qu'un coin inscriptible du disque ne devienne pas une rampe de lancement.
La menace : écrire une charge, puis l'exécuter
Un attaquant a presque toujours besoin d'un endroit pour écrire une charge utile puis l'exécuter. Les répertoires accessibles en écriture à tous comme /tmp et /dev/shm, ou les arborescences très mouvantes comme /var, sont les candidats évidents : binaire malveillant déposé, étape d'exploitation, boîte à outils téléchargée, ou charge « fileless » en mémoire partagée. Deux faiblesses au niveau des montages rendent cela trivial :
- Exécution depuis un stockage inscriptible : si n'importe quel utilisateur non privilégié peut déposer un fichier sous
/tmpet l'exécuter, un seul service compromis devient une exécution de code arbitraire. - Abus setuid/périphérique : un binaire
setuidou un nœud de périphérique placé sur un montage inscriptible peut servir à une élévation de privilèges ou à accéder aux périphériques bruts et contourner les permissions du système de fichiers.
Quand tout réside sur une unique partition /, aucun de ces répertoires ne peut porter de restrictions indépendantes : tout le disque partage un seul jeu d'options de montage, et il n'existe aucune frontière à imposer.
Pourquoi le durcir
Les options de montage sont un contrôle peu coûteux, appliqué par le noyau : c'est le noyau, pas une application, qui décide de ce qui est autorisé. Trois drapeaux neutralisent les principaux abus :
noexec: le noyau refuse d'exécuter tout programme stocké sur le montage, supprimant le terrain de jeu de l'attaquant.nosuid: les bitssetuid/setgidsont ignorés ; un binaire setuid-root déposé s'exécute avec les privilèges de l'appelant, pas ceux de root.nodev: les nœuds de périphérique sur le montage ne sont pas pris en compte, bloquant un nœud pirate de type/dev/sdautilisé pour lire le disque brut.
Mais un drapeau ne peut s'appliquer qu'à un montage qui existe. C'est pourquoi le durcissement associe ces options à des partitions séparées (ou des tmpfs/unités de montage systemd) pour les arborescences sensibles : /tmp, /var, /var/tmp, /var/log, /var/log/audit, /home, /dev/shm, /boot, /srv, /opt, /usr. Un /var/log séparé empêche aussi un afflux de logs de saturer /, et une partition d'audit dédiée protège la piste de preuves.
Principes de défense appliqués
- Réduction de la surface d'attaque : désactiver les pilotes de systèmes de fichiers inutilisés (
cramfs,freevxfs,jffs2,hfs,udf,usb-storage) pour qu'un attaquant ne puisse pas auto-monter un système de fichiers exotique ou amovible afin de contourner vos options. - Moindre privilège :
nosuidetnodevrefusent les deux primitives classiques d'élévation sur les partitions de données, qui n'en ont jamais besoin. - Défense en profondeur : les options de montage s'ajoutent aux permissions et au MAC ; même si les permissions sont mauvaises,
noexecbloque encore l'étape d'exécution. - Confinement : des partitions séparées empêchent un répertoire d'épuiser l'espace partout et isolent la piste d'audit de toute altération ou débordement.
Le piège dpkg/noexec
noexec sur /var et /tmp a un coût concret sous Debian/Ubuntu. APT et dpkg déposent et exécutent les scripts de mainteneur (preinst, postinst) depuis des emplacements temporaires, et certaines opérations exécutent des utilitaires depuis /var ou /tmp : sous un noexec strict, elles peuvent échouer en pleine mise à jour, laissant des paquets à moitié configurés. Cela vaut aussi pour les outils de build, certains plugins pip/dnf, les auto-updaters, et les navigateurs en bac à sable qui s'exécutent depuis /dev/shm. Ce n'est pas une raison d'abandonner le contrôle : redirigez l'outillage avec $TMPDIR/APT::ExtractTemplates::TempDir vers une zone autorisant l'exécution, accordez une exception temporaire et délimitée pendant la maintenance, ou utilisez des hooks dpkg qui remontent brièvement, ne retirez jamais silencieusement noexec de /tmp à l'échelle du système. Testez en pré-production avant d'appliquer.
Ce que Pavois audite : la table de montage effective
Pavois lit la table de montage effective, la vue en temps réel du noyau via /proc/self/mountinfo exposée par la ressource InSpec mount('<chemin>'), et non /etc/fstab. C'est tout l'intérêt : il voit un /tmp fourni à l'exécution par l'unité systemd tmp.mount, un /dev/shm absent de fstab, une partition remontée en silence sans un drapeau, ou une ligne fstab jamais prise en compte, autant de cas qu'un scanner basé sur les fichiers (OVAL/oscap) déclarerait conformes à tort. Concrètement, les règles du domaine Mounts vérifient :
noexec,nosuid,nodevsur/tmp,/var,/var/tmp,/var/log,/var/log/audit,/home,/dev/shm,/boot,/boot/efi,/srv,/opt, en s'assurant que chaque jeu d'options résolu contient le drapeau.- Des règles de partition séparée (
be_mounted) confirmant que/tmp,/var,/var/tmp,/var/log,/var/log/audit,/home,/dev/shm,/boot,/srv,/opt,/usrsont sur leur propre système de fichiers plutôt que sur/.
Chaque règle porte ses correspondances de normes (CIS, ANSSI BP-028 R28, NIST) et une étape de vérification basée sur findmnt.
Comment vérifier et opérer ?
- Voir les options effectives :
findmnt /tmpoufindmnt -o TARGET,OPTIONSmontre ce que le noyau applique réellement ;/proc/self/mountinfoest la vérité brute en vigueur. Ne vous fiez pas à/etc/fstabseul. - Appliquer sans redémarrer :
mount -o remount,noexec,nosuid,nodev /tmpune fois la ligne fstab (ou l'unité systemd) en place, puis confirmez avecfindmnt. /tmpest souvent une unité systemd, pas fstab :systemctl enable --now tmp.mount(ou un drop-intmp.mount) fournit/tmpentmpfs; éditez l'unité, pas seulement fstab.- Rendre persistant : les options
nodev,nosuid,noexecvont dans l'entrée/etc/fstab(ou l'unité de montage systemd) pour survivre au redémarrage ; Pavois, qui lit le montage vivant, détecte l'écart quand ce n'est pas le cas.
Pièges
noexecpeut casser les mises à jour de paquets et les outils de build (voir le piègedpkg) : délimitez un$TMPDIRautorisant l'exécution plutôt que de retirer le drapeau.- Un drapeau dans
fstabjamais remonté n'est pas effectif : seul le montage vivant compte. /tmpentmp.mountsystemd ignore la ligne fstab : durcissez l'unité.- Certaines applications s'exécutent depuis
/dev/shm(Chrome, certains runtimes) : testez avant d'y imposernoexec.
FAQ
Pourquoi Pavois lit-il le montage vivant plutôt que /etc/fstab ? Parce que le noyau applique les options en vigueur ; une entrée fstab pas encore remontée, ou un /tmp fourni par tmp.mount, fait de fstab une source fausse. Pavois lit /proc/self/mountinfo.
noexec a cassé un apt upgrade. Que faire ? Redirigez l'exécution temporaire d'APT/dpkg vers une zone autorisant l'exécution ($TMPDIR, APT::ExtractTemplates::TempDir) ou remontez brièvement pendant la maintenance ; ne retirez jamais noexec de /tmp définitivement.
Faut-il des partitions séparées, ou juste les options ? Les deux : un drapeau ne peut s'appliquer qu'à un montage existant, donc isolez les arborescences sensibles puis bridez-les avec nodev,nosuid,noexec.