Set-OPS-Public/roles/serveur_backup/tasks/main.yml
Daniel Allaire 3ea0c95492
Some checks are pending
verifier / verifier (push) Waiting to run
sauvegarde : l etat d un locataire quitte enfin sa propre flotte
Chezlepro rangeait ses instantanes sur une VM DE SA PROPRE FLOTTE. Raser
l ecosysteme pour le reconstruire, c etait raser le filet avec.

Le site a son depot ; les neuf detenteurs d etat y deposent ; une
restitution est sortie (annuaire LDAP lisible, hors flotte).

Isolation par compte Unix, pas par convention : home 0700, cle exclusive,
racine partagee a root en 0711 (traversable, non listable). Les deux refus
constates. Le site heberge du chiffre : il ne peut ni lire ni ouvrir, d ou
la verification deplacee chez le locataire qui detient la cle.

Quatre defauts reveles par ce deuxieme usage :
- la racine des depots ne peut etre le home de personne (StrictModes rendait
  Permission denied publickey pour un refus de CHEMIN)
- la racine nie le TLD internal, et harden-below-nxdomain etendait ce non a
  toute la zone sans jamais interroger l autoritatif : aucun locataire ne
  pouvait nommer un service du site
- le gabarit transporte des fichiers de durcissement perimes, et les machines
  du site ne recoivent jamais ssh_hardening
- MaxStartups compte les connexions non authentifiees : un depot de site en
  voit la somme de ses locataires

Constat non corrige : les machines du site ne sont pas durcies.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_019f91zs9SDdwSzL2CVei6on
2026-09-01 22:16:20 -04:00

44 lines
1.7 KiB
YAML

---
- name: Exiger la clé publique de sauvegarde
ansible.builtin.assert:
that:
- serveur_backup_pubkey | length > 0
fail_msg: "serveur_backup_pubkey requis (clé publique de la paire de sauvegarde)."
- name: Créer l'utilisateur de sauvegarde
ansible.builtin.user:
name: "{{ serveur_backup_utilisateur }}"
home: "{{ serveur_backup_racine }}"
shell: /bin/bash
create_home: true
system: true
- name: Sécuriser la racine des dépôts
ansible.builtin.file:
path: "{{ serveur_backup_racine }}"
state: directory
owner: "{{ serveur_backup_utilisateur }}"
group: "{{ serveur_backup_utilisateur }}"
mode: "0700"
- name: Autoriser la clé SSH de sauvegarde
ansible.posix.authorized_key:
user: "{{ serveur_backup_utilisateur }}"
key: "{{ serveur_backup_pubkey }}"
state: present
# LA VÉRIFICATION SUPPOSE DE POUVOIR OUVRIR LES DÉPÔTS — CE QUI N'EST PAS TOUJOURS VRAI.
#
# Ce qui suit interroge restic, donc déchiffre. Un dépôt ne peut le faire que s'il
# détient le mot de passe des dépôts qu'il garde — vrai chez un écosystème, qui garde
# les siens ; FAUX chez le dépôt d'un site, qui garde ceux de ses locataires et ne
# détient aucun de leurs mots de passe. Il héberge du chiffré : c'est la propriété qui
# rend l'hébergement acceptable, pas une lacune à combler.
#
# Là où le site ne peut pas vérifier, c'est le LOCATAIRE qui vérifie — il détient la
# clé, et il est seul à savoir ce qu'il a envoyé. La surveillance ne disparaît donc
# pas : elle reste chez celui qui peut réellement l'exercer.
- name: Vérification locale des dépôts (là où ce dépôt peut les ouvrir)
ansible.builtin.include_tasks: verification.yml
when: serveur_backup_verification_locale | bool