Set-OPS-Public/roles/ssh_baseline/defaults/main.yml
Daniel Allaire 0b6c036f8c ssh : retirer les drop-ins d'une nomenclature abandonnee
Mesure sur forge-01 (par l'agent invite, sans dependre du reseau) : quatre drop-ins SSH
coexistent la ou il devrait y en avoir deux. Les roles se sont appeles `chezlepro` avant
de porter le nom du moteur ; le renommage a change le fichier DEPOSE sans retirer le
precedent.

Et les paires divergent : MaxSessions 2 contre 10, MaxStartups 5:30:20 contre 10:30:60.
sshd retient la PREMIERE valeur rencontree pour chaque mot-cle et lit les drop-ins dans
l'ordre lexical — c'est donc l'ANCIEN fichier qui gagne. Une configuration qu'on croit
avoir remplacee reste aux commandes, en silence.

ssh_baseline et ssh_hardening retirent chacun le fichier de la nomenclature qu'ils ont
abandonnee, AVANT de deposer le leur, et notifient la meme validation. La liste est
declarative et ne contient que des noms reellement deposes un jour : supprimer un fichier
qu'on n'a jamais ecrit serait effacer la configuration d'un autre.

PAS ENCORE EPROUVE : les seules machines portant les anciens fichiers sont celles de
patient 0, hors d'atteinte depuis le poste. Ecrit, linte, reste a le voir agir.

42 preuves vertes, ansible-lint profil production.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-25 03:40:24 -04:00

41 lines
2.1 KiB
YAML

---
ssh_baseline_password_authentication: "no"
ssh_baseline_permit_root_login: "no"
ssh_baseline_pubkey_authentication: "yes"
# --- QUI A LE DROIT D'ENTRER --------------------------------------------------
#
# La cle du compte d'administration est posee par CLOUD-INIT, a la creation de la VM.
# Il n'existait donc aucun moyen declaratif d'en autoriser une SECONDE sur des machines
# deja nees — constate le 2026-08-24 : le poste d'exploitation fabriquait sa propre paire
# depuis son premier deploiement, et n'a jamais pu joindre un seul hote
# (`Permission denied (publickey)`).
#
# CHAQUE ENTREE PORTE SON `etat`, ET C'EST DELIBERE. Une liste purement additive ne sait
# pas RETIRER : une cle autorisee une fois le resterait pour toujours, et « revoquer »
# voudrait dire se connecter a la main sur chaque machine. Ici, passer une entree a
# `absent` la retire au prochain passage, sur toute la flotte.
#
# ON N'UTILISE PAS `exclusive: true` : il effacerait la cle posee par cloud-init si le
# plan ne la reprenait pas, et fermerait la flotte a tout le monde d'un seul deploiement.
# Le prix de ce choix est qu'une cle posee HORS du plan ne sera pas detectee ici.
#
# ssh_baseline_cles_admin:
# - cle: "ssh-ed25519 AAAA… setops@ops-01.exemple.internal"
# pourquoi: "poste d'exploitation — configure la flotte"
# etat: present # `absent` pour revoquer
ssh_baseline_admin_user: "{{ sudo_ansible_admin_user | default('ansible') }}"
ssh_baseline_cles_admin: []
# LES FICHIERS QU'UNE NOMENCLATURE ABANDONNEE A LAISSES DERRIERE ELLE.
#
# Ce role a porte le nom `chezlepro` avant de porter celui du moteur. Le renommage a
# change le fichier DEPOSE sans retirer le precedent : les deux coexistent sur toute
# machine anterieure au changement, et sshd retient la PREMIERE valeur qu'il rencontre —
# donc l'ancienne, l'ordre lexical la placant devant.
#
# Cette liste est le registre de ces mues. On n'y ajoute que des noms qu'on a REELLEMENT
# deposes un jour : retirer un fichier qu'on n'a jamais ecrit serait s'arroger le droit de
# supprimer la configuration de quelqu'un d'autre.
ssh_baseline_fichiers_perimes:
- 10-chezlepro.conf