Skip to content

Durcissement des systèmes de fichiers et montages

Durcissez vos systèmes de fichiers Linux avec nodev/nosuid/noexec, auditez les binaires SUID/SGID, corrigez les fichiers accessibles en écriture et resserrez les permissions sensibles.

Publié le Mis à jour le 3 min de lecture

Les options de montage et les permissions de fichiers sont les contrôles les moins coûteux et les plus rentables sur un hôte Linux. Un simple drapeau nosuid peut neutraliser toute une classe d'exploits d'élévation de privilèges, et un audit SUID de cinq minutes révèle souvent des binaires oubliés qui n'ont plus besoin de leur bit spécial. Cet article couvre les options /etc/fstab durcies, la sécurisation de /tmp et /dev/shm, l'audit des fichiers SUID/SGID et accessibles en écriture, ainsi que le resserrement des permissions sur les fichiers système sensibles.

Options de montage durcies dans /etc/fstab

Trois options comptent le plus pour les partitions non système :

  • nodev — ignore les fichiers de périphérique (un attaquant ne peut pas glisser un nœud /dev/sda sur /tmp).
  • nosuid — ignore les bits SUID/SGID, neutralisant les binaires SUID déposés.
  • noexec — refuse l'exécution de binaires depuis le montage.

Si /tmp, /var/tmp, /home et /var sont déjà des partitions séparées, modifiez /etc/fstab :

UUID=xxxx-tmp     /tmp      ext4  defaults,nodev,nosuid,noexec   0 2
UUID=xxxx-vartmp  /var/tmp  ext4  defaults,nodev,nosuid,noexec   0 2
UUID=xxxx-home    /home     ext4  defaults,nodev,nosuid          0 2
UUID=xxxx-var     /var      ext4  defaults,nodev                 0 2

Attention à la nuance pour /home : noexec y casse les outils installés par les utilisateurs, les chaînes de langage et certains IDE ; la plupart des équipes s'arrêtent donc à nodev,nosuid. Appliquez les changements sans redémarrer :

mount -o remount /tmp
mount -o remount /var/tmp
findmnt /tmp        # vérifier que les options sont actives

Quand les partitions ne sont pas séparées, deux solutions. Utilisez un tmpfs pour /tmp via le tmp.mount de systemd, ou créez un montage bind :

systemctl enable tmp.mount      # fourni par systemd, monte un tmpfs sur /tmp
# ou un montage bind autonome dans /etc/fstab :
/var/secure-tmp  /var/secure-tmp  none  bind,nodev,nosuid,noexec  0 0

Sécuriser /tmp et /dev/shm

/dev/shm est de la mémoire partagée et un terrain de jeu classique pour les logiciels malveillants sans fichier. Son durcissement est presque toujours sûr :

tmpfs  /dev/shm  tmpfs  defaults,nodev,nosuid,noexec  0 0
mount -o remount /dev/shm
findmnt /dev/shm

Pour /tmp sur tmpfs, vous pouvez aussi limiter sa taille contre les attaques par saturation : ajoutez size=2G aux options. Combinez ces contrôles avec les protections noyau décrites dans notre guide de durcissement du noyau.

Audit des binaires SUID et SGID

Les binaires SUID/SGID s'exécutent avec les privilèges du propriétaire. Chacun est une surface d'attaque. Énumérez-les :

find / -xdev \( -perm -4000 -o -perm -2000 \) -type f 2>/dev/null -exec ls -la {} \;

Comparez la liste à une référence connue. Outils généralement conservés : sudo, su, passwd, mount, umount, newgrp, ping. Candidats à retirer après test : wall, chsh, chfn, pkexec (cf. CVE-2021-4034) et tout binaire tiers. Retirez le bit :

chmod u-s /usr/bin/outil-legacy      # retirer SUID
chmod g-s /usr/bin/autre-outil       # retirer SGID

Lorsqu'un outil n'a besoin que d'une capability (ex. ping requiert CAP_NET_RAW), préférez les capabilities à un bit SUID complet. L'audit SUID se marie naturellement avec le durcissement des comptes et privilèges.

Fichiers accessibles en écriture et sans propriétaire

Les répertoires accessibles en écriture sans bit sticky permettent à tout utilisateur de supprimer ou remplacer les fichiers d'autrui. Trouvez-les :

find / -xdev -type d -perm -0002 ! -perm -1000 2>/dev/null
find / -xdev -type f -perm -0002 2>/dev/null

Corrigez les répertoires en restaurant le bit sticky (ou en resserrant le mode) :

chmod +t /chemin/vers/repertoire/partage
chmod o-w /chemin/vers/fichier

Les fichiers sans utilisateur ou groupe valide signalent souvent un compte supprimé ou une archive déposée par un attaquant. Localisez-les et réattribuez-les :

find / -xdev \( -nouser -o -nogroup \) 2>/dev/null
chown root:root /chemin/vers/orphelin

Resserrer les permissions sensibles

Les fichiers de credentials et de démarrage ne doivent pas être lisibles par tous :

chmod 0640 /etc/shadow      # 0600 sur certaines distributions, selon votre politique
chmod 0640 /etc/gshadow
chmod 0644 /etc/passwd
chmod 0644 /etc/group
chmod 0600 /boot/grub/grub.cfg
chmod -R go-rwx /etc/cron.d /etc/cron.daily /etc/crontab

Définissez un masque par défaut restrictif dans /etc/login.defs et les profils shell :

UMASK 027

Un umask 027 produit des fichiers en 640 et des répertoires en 750 — un défaut serveur sain. L'application d'une politique MAC sur ces chemins ajoute une défense en profondeur ; voir contrôle d'accès obligatoire.

Vérifier

Relancez l'audit après les changements et capturez une référence :

findmnt --noheadings -o TARGET,OPTIONS | grep -E '/tmp|/var/tmp|/dev/shm'
find / -xdev \( -perm -4000 -o -perm -2000 \) -type f 2>/dev/null | sort > /root/suid-baseline.txt
find / -xdev -type d -perm -0002 ! -perm -1000 2>/dev/null
stat -c '%a %n' /etc/shadow /etc/gshadow

Le durcissement des montages et permissions est statique : il rattrape la dérive d'hier, pas l'altération de demain. La suite logique est une surveillance continue de l'intégrité des fichiers, afin que toute modification d'un binaire SUID ou de /etc/shadow déclenche une alerte. Poursuivez avec notre guide de détection d'intrusion et d'intégrité des fichiers.