« Une bonne baseline Linux est identique sur tous les serveurs. »
Un bastion, une base de données, un serveur web et un dépôt de sauvegarde n’ont ni les mêmes fonctions ni les mêmes chemins d’administration. Le socle commun existe, mais sa cible doit rester liée au rôle.
01Pars de la mission, pas d’une liste générique
SORIA Distribution représente quatre hôtes :
lin-web-01 servir le portail
lin-db-01 stocker les commandes
lin-bastion-01 fournir l'entrée d'administration
lin-backup-01 protéger les sauvegardes
La baseline commence par les fonctions à préserver, les propriétaires et les interdictions. Elle ne commence pas par une commande copiée d’un guide.
02Manipule le dossier de référence
lab=/tmp/soria-hardening-linux-$USER
bash module3-linux-hardening.sh setup "$lab"
bash module3-linux-hardening.sh status "$lab"
bash module3-linux-hardening.sh run "$lab"
column -s, -t "$lab/source/inventory/hosts.csv"
column -s, -t "$lab/output/linux-role-baseline.csv"
Le lab ne lit pas /etc. Il copie dix-sept fixtures synthétiques dans une racine protégée et rend source/ non modifiable.
03Observe les différences de rôle
Le serveur web cible notamment :
SSH root refusé
/tmp avec nodev nosuid noexec
avahi-daemon désactivé
Le serveur de sauvegarde cible :
service exécuté par soria-backup
volume de travail avec nodev nosuid
pas de noexec car un helper représenté doit s'exécuter
Appliquer mécaniquement noexec au second volume produirait un contrôle plus strict sur le papier, mais casserait la fonction déclarée.
04Comprends le contrat d’un contrôle
Chaque ligne de baseline possède :
rôle
catégorie
paramètre
état source
état cible
justification
propriétaire
test
rollback
limite de preuve
Une cible sans test ni rollback n’est pas prête à être déployée. Une cible sans propriétaire ne peut pas être acceptée ni maintenue.
05Distingue commun et spécifique
nodev et nosuid évaluésnoexec dépend du workloadLe socle commun exprime un principe. La baseline par rôle transforme ce principe en cible testable.
06Teste positivement la couverture
awk -F, 'NR>1 {count[$2]++} END {for (r in count) print r,count[r]}' \
"$lab/source/baseline/controls.csv"
Le validateur exige les rôles web, database, bastion et backup, ainsi qu’un propriétaire, une justification, un test et un rollback pour chaque contrôle.
07Teste négativement une baseline orpheline
Pendant validate, une copie de contrôle perd son propriétaire. Elle doit être rejetée avec :
baseline control missing role owner justification test or rollback
Le test empêche de considérer une ligne techniquement plausible comme un contrôle gouverné.
08Mesure la conséquence fonctionnelle
La baseline web doit conserver nginx. La baseline base de données doit conserver postgresql. La baseline bastion doit conserver sshd et le compte admin-ops. La baseline sauvegarde doit conserver backup-agent.
Le lab croise ces exigences avec l’état cible. Il ne se contente pas de compter les contrôles de sécurité.
09Prépare le rollback dès la conception
Chaque contrôle référence RB-LNX-001. Le rollback ne signifie pas « remettre comme avant si nécessaire ». Il définit :
source de restauration
artefacts concernés
condition d'arrêt
méthode de vérification
propriétaire
limite
Le lab restaure les copies before vers une destination séparée et compare leurs manifestes SHA-256.
10Respecte la limite de preuve
Le résultat peut démontrer :
- cohérence de la baseline ;
- présence des exigences ;
- détection des écarts ;
- préservation des fonctions représentées ;
- rollback par copie.
Il ne démontre ni une machine durcie ni l’application d’un paramètre Linux réel.
Défends une baseline par rôle
Choisis deux rôles SORIA Distribution. Pour chacun, fournis cinq contrôles avec état source, cible, justification, test positif, test négatif, test fonctionnel, rollback et limite. Explique une différence de cible entre les deux rôles.
✓À retenir
Une baseline Linux n’est pas un maximum uniforme. C’est un contrat de sécurité adapté au rôle, à la mission et aux preuves disponibles.