Sécurisation des systèmes et des réseaux · Étape 15

Réduis paquets, services et privilèges d'exécution

Retire ce qui n'est pas requis, conserve les dépendances métier et réduit capacités Linux et privilèges systemd.

Durée indicative · ~1 h 40Niveau intermédiairePrérequis conseillé · Leçon 14 — protéger fichiers, montages et répertoires temporairesPratique · TP
L’idée reçue

« Moins de paquets signifie automatiquement plus de sécurité. »

Retirer une dépendance nécessaire dégrade la mission. La réduction doit distinguer l’inutile du requis et vérifier le résultat fonctionnel.

01Construis l’inventaire de décision

Chaque paquet ou service possède :

hôte
état source
état cible
caractère requis
justification
propriétaire
test fonctionnel
rollback

L’inventaire ne se limite pas au nom et à la version.

02Manipule les plans de réduction

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/package-reduction-plan.csv"
column -s, -t "$lab/output/service-reduction-plan.csv"
column -s, -t "$lab/output/execution-privilege-review.csv"

Le lab ne lance aucun gestionnaire de paquets et ne contacte aucun service manager.

03Observe les retraits proposés

telnet       installed → absent
ftp          installed → absent
avahi-daemon enabled   → disabled
rpcbind      enabled   → disabled

Chaque retrait est relié à un rôle où la fonction n’est pas requise.

04Observe ce qui doit rester

web      nginx et service nginx
bastion  openssh-server et sshd
database postgresql et service postgresql
backup   backup-agent et service backup-agent

Le validateur refuse toute cible qui retire un élément requis.

05Teste négativement un retrait fonctionnel

Une variante marque nginx comme absent alors que FUNC-WEB l’exige. Elle doit échouer avec :

required package or service removed

Le test empêche une réduction de surface qui détruit la mission représentée.

06Réduis les capabilities

Le dossier représente :

CAP_NET_RAW          retirée de soria-health
CAP_NET_BIND_SERVICE conservée pour soria-bind
CAP_DAC_READ_SEARCH  retirée du helper de sauvegarde

Une capability conservée doit avoir un besoin explicite. Une capability dangereuse n’est pas justifiée par la seule commodité.

07Durcis l’identité du service

État source :

soria-web.service    User=root
soria-backup.service User=root

Cible :

User=soria-web
User=soria-backup
NoNewPrivileges=yes
ProtectSystem=strict ou full

Le lab vérifie la cohérence des colonnes. Il ne charge aucune unité systemd.

08Observe le test négatif d’exécution

Une variante conserve CAP_NET_RAW alors que le besoin est no. Elle doit être rejetée avec :

execution privilege remains excessive

Le même validateur bloque une unité requise encore exécutée par root sans protection représentée.

09Prépare les tests fonctionnels

Après un changement réel autorisé, il faudrait vérifier :

portail disponible
connexion applicative à la base
login administratif via bastion
écriture et lecture du dépôt de sauvegarde
journaux sans refus inattendu
redémarrage après reboot de test

Le lab représente ces fonctions dans functional-test-report.csv sans les exécuter.

10Prépare le retour arrière

Le rollback doit connaître :

  • paquet ou service à restaurer ;
  • état précédent ;
  • fichier de configuration associé ;
  • utilisateur et droits précédents ;
  • test fonctionnel à rejouer ;
  • condition qui impose l’arrêt.

Réinstaller un paquet sans restaurer sa configuration ne suffit pas.

11Respecte la limite de preuve

Le rapport ne démontre pas :

  • qu’un paquet a été supprimé ;
  • qu’un port n’écoute plus ;
  • qu’une capability a été retirée ;
  • qu’une unité systemd accepte les options ;
  • qu’un service survit au redémarrage.
Livrable

Décide KEEP, REMOVE ou REDUCE

Analyse deux paquets, deux services et deux privilèges d’exécution. Pour chaque élément, fournis besoin, cible, test fonctionnel, test négatif, rollback et limite. Toute décision de retrait doit préserver la mission.

✓À retenir

Réduire la surface d’exécution signifie supprimer l’inutile, borner le nécessaire et prouver que les fonctions requises restent disponibles.

Ta progression

Chargement de l’état… Se connecter pour synchroniser.