« Ajouter nodev,nosuid,noexec partout est toujours plus sûr. »
Une option peut être appropriée sur /tmp et incompatible avec un volume qui exécute un helper requis. La cible doit être restrictive et fonctionnelle.
01Relie le chemin à son usage
Le dossier représente notamment :
/etc/shadow
/etc/sudoers
/var/lib/postgresql/data
/var/lib/soria-backup/config
/srv/soria-web/public
Chaque chemin possède hôte, propriétaire, groupe, mode source, mode cible, sensibilité, fonction et rollback.
02Manipule les rapports
lab=/tmp/soria-hardening-linux-$USER
bash module3-linux-hardening.sh setup "$lab"
bash module3-linux-hardening.sh run "$lab"
column -s, -t "$lab/output/file-permissions-review.csv"
column -s, -t "$lab/output/mount-hardening-review.csv"
Le changement porte sur des colonnes CSV. Aucun chmod, chown, mount ou umount n’est exécuté.
03Observe les modes sensibles
Exemples de cibles :
/etc/shadow 0640
/etc/sudoers 0440
/var/lib/postgresql/data 0700
configuration de sauvegarde 0640
Le mode n’est qu’une partie du contrôle. Le propriétaire et le groupe doivent aussi correspondre au besoin d’accès.
04Comprends le test world-writable
Pour un fichier sensible, le bit d’écriture des autres utilisateurs doit être absent. Le validateur inspecte le dernier chiffre octal et refuse 2, 3, 6 ou 7.
Il refuse aussi un propriétaire vide.
sensitive file is world-writable or ownerless
Cette règle ne remplace pas l’analyse des ACL, attributs étendus, labels MAC ou liens.
05Adapte les options de montage
Le dossier cible :
/tmp nodev|nosuid|noexec
/var/lib/postgresql nodev|nosuid
/home nodev|nosuid
/var/tmp/backup-work nodev|nosuid
/home et le volume de travail de sauvegarde déclarent un besoin d’exécution. Le lab interdit donc d’y ajouter silencieusement noexec.
06Observe le test négatif fonctionnel
Le validateur crée une variante :
/home → nodev|nosuid|noexec
required_exec → yes
Elle doit échouer avec :
mount policy conflicts with functional requirement
Le contrôle ne récompense pas une option plus restrictive lorsqu’elle contredit une exigence approuvée.
07Teste positivement la cible
Pour chaque montage, le lab exige :
nodev;nosuid;noexecsur/tmplorsque l’exécution n’est pas requise ;- absence de
noexeclorsqu’un besoin d’exécution est déclaré ; - propriétaire, test et rollback.
Sur un hôte autorisé, il faudrait compléter avec findmnt, un test d’écriture, un test d’exécution borné et une observation du démarrage.
08Prépare l’effet fonctionnel
Avant de changer un mode ou un montage :
identifier le processus et son identité
identifier lecture écriture exécution requises
capturer le before state
préparer une session de secours
appliquer sur un périmètre pilote
rejouer le test métier
annuler si le test échoue
Une absence d’erreur de syntaxe ne prouve pas la compatibilité applicative.
09Conserve la preuve du changement
Les rapports enregistrent :
- mode ou options avant ;
- cible ;
- justification ;
- test ;
- exception ;
- rollback ;
- limite.
Le delta est conservé séparément de la baseline afin de distinguer la norme et le changement réellement proposé.
10Respecte la frontière
Le lab ne prouve pas :
- le comportement du noyau ;
- la persistance dans
fstab; - les ACL ou labels SELinux/AppArmor ;
- la compatibilité d’une application réelle ;
- la résistance à un attaquant local.
Évalue quatre chemins
Pour deux fichiers sensibles et deux montages, documente propriétaire, mode ou options, besoin fonctionnel, test positif, test négatif, rollback et limite. Refuse une cible qui brise une fonction déclarée.
✓À retenir
Un mode ou un montage est sûr lorsqu’il réduit l’exposition tout en conservant uniquement les accès et fonctions approuvés.