SEC.01
Le playbook
Le run démarre en lecture seule : les sondes de reconnaissance décident de la suite. Les étapes qui suivent sont adaptées à la distribution et à l'état trouvés — une vraie machine est rarement propre.
- 01reconl’utilisateur existe-t-il ? dossier home et shell
- 02reconemplacement des clés (AuthorizedKeysFile peut être non standard)
- 03reconempreintes des clés actuelles
- 04reconla nouvelle clé est-elle valide ? son empreinte SHA256
- 05reconla nouvelle clé est-elle déjà présente ?
- 06reconSELinux (restorecon nécessaire sur ~/.ssh)
- 07agirSauvegarder les clésvérif
- 08agirAjouter la nouvelle clévérif
- 09agirCorriger propriétaire et permissionsvérif
- 10agirTester la nouvelle clé (connexion par l’utilisateur)vérif
- 11agirRetirer les anciennes clés (seulement si remove_old = true et test réussi)destructifvérif
SEC.02
Ce qu'elle vérifie
Chaque étape embarque sa propre vérification. Le run ne continue que si elle passe, donc ce que la recette annonce comme fait est ce qui est réellement sur le serveur.
- 01vérifSauvegarder les clésVérifié par
ls -1 "$(getent passwd ${user} | cut -d: -f6)"/.ssh/authorized_keys.bak.*attendu : un fichier de sauvegarde - 02vérifAjouter la nouvelle cléVérifié par
grep -cxF '${pubkey}' "$(getent passwd ${user} | cut -d: -f6)/.ssh/authorized_keys"attendu : 1 - 03vérifCorriger propriétaire et permissionsVérifié par
H=$(getent passwd ${user} | cut -d: -f6) && stat -c "%a %U" "$H/.ssh" "$H/.ssh/authorized_keys"attendu : 700 <user> puis 600 <user> - 04vérifTester la nouvelle clé (connexion par l’utilisateur)Vérifié par
journalctl --since '-15 min' --no-pager | grep 'Accepted publickey for ${user}'attendu : une ligne avec l’empreinte SHA256 de la nouvelle clé - 05vérifRetirer les anciennes clés (seulement si remove_old = true et test réussi)Vérifié par
ssh-keygen -lf "$(getent passwd ${user} | cut -d: -f6)/.ssh/authorized_keys"attendu : une seule empreinte : celle de la nouvelle clé
SEC.03
Les garde-fous
Les consignes non négociables que le run doit respecter, quoi qu'il trouve sur le serveur.
Utilise le home réel (getent passwd), jamais /home/<user> en dur (root = /root). N’écrase jamais authorized_keys avant que la NOUVELLE clé ait été testée avec succès ; sans test réussi, garde les anciennes. Ne verrouille jamais le dernier accès. N’affiche que des empreintes, pas les clés.
SEC.04
Les variables
Ce que vous choisissez avant de lancer — la recette s'occupe du reste.
| Nom | Signification |
|---|---|
| ${user} | Utilisateur |
| ${pubkey} | Nouvelle clé publique |
| ${remove_old} | Retirer les anciennes clés (après test de la nouvelle) |
SEC.05
Comment une recette s'exécute dans Servor
Servor est zero-knowledge : la plateforme ne peut rien exécuter seule. Quand vous lancez cette recette, un run lit la reconnaissance, planifie les étapes et demande votre validation. Chaque commande approuvée est signée par votre navigateur — avec une clé que le serveur ne voit jamais — puis relayée telle quelle à l'agent, qui vérifie la signature localement avant d'exécuter.
recherche par intention — tapez « firewall », obtenez ufw
- 01Reconnaissance en lecture seule avant tout changement
- 02Chaque commande signée par votre navigateur, validée par vous
- 03Chaque étape vérifiée avant de continuer, chaque run conservé dans l'historique
SEC.06
Bouton Deploy on Servor
Vous maintenez Rotation des clés SSH ou un projet qui en dépend ? Ajoutez ce bouton à votre README ou à votre site : en un clic, vos utilisateurs l'installent sur leur propre serveur.
SEC.07
D'autres recettes sécurité
- 01Durcir SSHCoupe le login par mot de passe et le root par mot de passe, garde les clés. Destructif : vérifie ton accès par clé d’abord.
- 02fail2banfail2ban avec la jail SSH sur le bon port, actif et vérifié.
- 03Pare-feu UFWUFW : refuse l’entrant par défaut, autorise le port SSH réel + ports choisis, avec filet de sécurité. Destructif : garde SSH ouvert.
- 04Mises à jour de sécurité autoActive les mises à jour de sécurité automatiques : unattended-upgrades (Debian/Ubuntu) ou dnf-automatic (RHEL/Fedora).
- 05CrowdSecIPS collaboratif CrowdSec, collections SSH et bouncer pare-feu.
Recette vérifiée
Lancez cette recette sur votre serveur
Connectez un serveur, lancez la recette, et validez chaque étape pendant que Servor exécute et vérifie. Plan gratuit, sans carte bancaire.