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.
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/sdasur/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.