Téléverser les fichiers vers "/"
This commit is contained in:
@@ -0,0 +1,32 @@
|
||||
# Changelog v1.8 LAB — provisioning première session
|
||||
|
||||
## Objectif
|
||||
|
||||
La v1.8 met en œuvre le parcours cible suivant :
|
||||
|
||||
1. `localadm` active la configuration NixOS.
|
||||
2. NixOS précrée `alice` avec `systemd-homed`, un home LUKS2 et le mot de passe temporaire LAB.
|
||||
3. Alice ouvre sa première session avec ce mot de passe temporaire.
|
||||
4. L'assistant plein écran :
|
||||
- remplace le mot de passe temporaire avec `homectl passwd` ;
|
||||
- initialise le premier PIN d'une YubiKey FIDO2 vierge via `python-fido2` ;
|
||||
- enrôle cette YubiKey directement dans le home `systemd-homed` via `homectl update`.
|
||||
5. Alice peut ensuite déverrouiller son home avec son mot de passe ou avec la YubiKey + PIN.
|
||||
|
||||
## Changements
|
||||
|
||||
- Précréation idempotente du compte `alice` par un service systemd NixOS ordonné avant SDDM.
|
||||
- Home `alice` en LUKS2/ext4, 10 Gio en LAB.
|
||||
- Aucun `users.users.alice` classique.
|
||||
- Conservation du correctif SDDM validé pour énumérer les comptes `systemd-homed` sous NixOS.
|
||||
- Changement de mot de passe via les credentials systemd `home.password` et `home.new-password`.
|
||||
- YubiKey vierge : `ClientPin.set_pin()` ; aucun PIN par défaut.
|
||||
- Enrôlement FIDO2 via les credentials `home.password` et `home.token-pin`.
|
||||
- Aucun secret dans les arguments de processus.
|
||||
- Aucun `pam_u2f` et aucun `u2f-mappings`.
|
||||
- Aucun recovery key créé avant l'enrôlement FIDO2 : l'assistant n'en demande donc aucune.
|
||||
- Trois marqueurs de reprise : mot de passe, PIN, FIDO2.
|
||||
|
||||
## LAB uniquement
|
||||
|
||||
Le mot de passe temporaire `LaboTest@1980` est volontairement connu et apparaît dans la configuration/Nix store. Il ne doit pas être considéré comme un secret de production.
|
||||
+18
-75
@@ -1,89 +1,32 @@
|
||||
# Déploiement du candidat production
|
||||
# Déploiement v1.8 LAB
|
||||
|
||||
## 1. Préparer les fichiers locaux propres au poste
|
||||
La procédure de référence est décrite dans `PROVISIONING-v1.8-LAB.md`.
|
||||
|
||||
Le matériel reste local :
|
||||
## Commande de déploiement
|
||||
|
||||
```text
|
||||
/etc/nixos/hardware-configuration.nix
|
||||
```
|
||||
|
||||
Pour une nouvelle création du compte `alice`, aucun fichier de secret local n'est nécessaire dans ce lab.
|
||||
|
||||
Le mot de passe temporaire est déclaré dans `modules/users.nix` :
|
||||
|
||||
```text
|
||||
LaboTest@1980
|
||||
```
|
||||
|
||||
Avec `users.mutableUsers = true`, il sert à la création initiale du compte puis le mot de passe choisi par l'utilisateur est conservé.
|
||||
|
||||
> En vraie production, le dépôt étant privé, la stratégie de mot de passe initial pourra être adaptée sans modifier le fonctionnement de l'assistant.
|
||||
|
||||
|
||||
## 2. Remplacer l'ancien assistant
|
||||
|
||||
La version production utilise :
|
||||
|
||||
```text
|
||||
modules/workstation-setup.nix
|
||||
workstation-setup/
|
||||
```
|
||||
|
||||
L'ancien `modules/yubikey-first-login.nix` et l'ancien frontend d'aperçu `modules/first-login-ui.nix` / `first-login-ui/` ne doivent plus être importés. `modules/security.nix` reste utilisé.
|
||||
|
||||
## 3. Construire sans activer
|
||||
Depuis `localadm` :
|
||||
|
||||
```bash
|
||||
cd ~/nixos-workstations
|
||||
|
||||
sudo nixos-rebuild build \
|
||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||
sudo nixos-rebuild switch -I nixos-config="$PWD/configuration.nix"
|
||||
```
|
||||
|
||||
## 4. Examiner l'activation
|
||||
Cette activation :
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild dry-activate \
|
||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||
```
|
||||
1. installe/configure le poste ;
|
||||
2. active `systemd-homed` ;
|
||||
3. précrée `alice` si elle n'existe pas ;
|
||||
4. crée `/home/alice.home` en LUKS2 avec le mot de passe temporaire LAB ;
|
||||
5. lance SDDM avec le support d'énumération des comptes homed.
|
||||
|
||||
## 5. Activer temporairement
|
||||
Aucune action `homectl` manuelle n'est demandée à `localadm`.
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild test \
|
||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||
```
|
||||
## Première session
|
||||
|
||||
Avant de continuer, vérifier immédiatement que `localadm` fonctionne toujours.
|
||||
Alice se connecte avec le mot de passe temporaire et l'assistant finalise automatiquement :
|
||||
|
||||
## 6. Valider le parcours utilisateur
|
||||
- mot de passe personnel ;
|
||||
- PIN d'une YubiKey vierge ;
|
||||
- enrôlement FIDO2 dans `systemd-homed`.
|
||||
|
||||
Ouvrir une session `alice` avec la YubiKey et le PIN temporaire, puis :
|
||||
|
||||
1. saisir le mot de passe temporaire ;
|
||||
2. choisir et confirmer le mot de passe personnel ;
|
||||
3. vérifier que l'étape ne passe à YubiKey qu'après succès réel de `passwd` ;
|
||||
4. saisir le PIN temporaire de la YubiKey ;
|
||||
5. choisir et confirmer le nouveau PIN ;
|
||||
6. vérifier qu'un mauvais PIN ne déclenche aucune nouvelle tentative automatique ;
|
||||
7. terminer l'assistant ;
|
||||
8. se déconnecter/reconnecter et vérifier que l'assistant ne revient plus ;
|
||||
9. vérifier l'authentification YubiKey + nouveau PIN ;
|
||||
10. vérifier le mot de passe local comme mécanisme de secours.
|
||||
|
||||
Marqueurs attendus :
|
||||
|
||||
```text
|
||||
~/.local/state/nixos-workstations/password-initialized
|
||||
~/.local/state/nixos-workstations/yubikey-pin-initialized
|
||||
```
|
||||
|
||||
## 7. Passer réellement en production
|
||||
|
||||
Uniquement après la validation complète :
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch \
|
||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||
```
|
||||
Aucune recovery key n'est créée à ce stade.
|
||||
|
||||
+56
-57
@@ -1,79 +1,78 @@
|
||||
# Checklist de mise en production — NixOS Workstations
|
||||
# Checklist de validation — v1.8 LAB
|
||||
|
||||
## Avant activation
|
||||
Cette checklist correspond au workflow de provisioning `systemd-homed + LUKS2 + FIDO2`.
|
||||
|
||||
## État de départ
|
||||
|
||||
- `localadm` existe et reste administrateur local classique ;
|
||||
- `alice` n'existe pas encore ;
|
||||
- `/home/alice.home` n'existe pas ;
|
||||
- la YubiKey est vierge/reset FIDO2 et ne possède aucun PIN.
|
||||
|
||||
## Construction puis activation
|
||||
|
||||
Depuis `localadm` :
|
||||
|
||||
```bash
|
||||
cd ~/nixos-workstations
|
||||
|
||||
sudo nixos-rebuild build \
|
||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||
|
||||
sudo nixos-rebuild dry-activate \
|
||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||
-I nixos-config="$PWD/configuration.nix"
|
||||
```
|
||||
|
||||
## Test contrôlé
|
||||
|
||||
1. Vérifier que `localadm` se connecte toujours par mot de passe.
|
||||
2. Vérifier que `/etc/nixos/hardware-configuration.nix` est bien le fichier local du poste.
|
||||
3. Exécuter :
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild test \
|
||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||
```
|
||||
|
||||
4. Fermer la session `localadm` et ouvrir la session `alice`.
|
||||
5. Vérifier que l'assistant plein écran démarre automatiquement.
|
||||
6. Tester avec le mot de passe temporaire du lab `LaboTest@1980` et le PIN temporaire réel de la YubiKey.
|
||||
7. Vérifier qu'un mauvais PIN produit une erreur et **ne déclenche aucune tentative automatique supplémentaire**.
|
||||
8. Vérifier qu'après succès les deux fichiers existent :
|
||||
|
||||
```bash
|
||||
ls -l ~/.local/state/nixos-workstations/
|
||||
```
|
||||
|
||||
Attendu :
|
||||
|
||||
```text
|
||||
password-initialized
|
||||
yubikey-pin-created
|
||||
```
|
||||
|
||||
9. Se déconnecter/reconnecter : l'assistant ne doit plus démarrer.
|
||||
10. Tester l'authentification YubiKey + nouveau PIN, puis le mot de passe local de secours.
|
||||
|
||||
## Passage persistant
|
||||
|
||||
Uniquement après validation complète :
|
||||
Si le build est OK, activer la génération :
|
||||
|
||||
```bash
|
||||
sudo nixos-rebuild switch \
|
||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
||||
-I nixos-config="$PWD/configuration.nix"
|
||||
```
|
||||
|
||||
## Important
|
||||
`build` seul ne modifie pas le système actif. La précréation d'Alice est exécutée lors de l'activation (`switch`).
|
||||
|
||||
- Ne jamais supprimer/réinitialiser la YubiKey en cas d'erreur de PIN.
|
||||
- Ne jamais modifier manuellement `/etc/shadow`.
|
||||
- Le retour à une ancienne génération NixOS ne restaure pas les mots de passe mutables.
|
||||
## Précréation attendue
|
||||
|
||||
## Diagnostic v1.4 avant test de l'interface
|
||||
Le déploiement doit avoir créé :
|
||||
|
||||
Dans la session `alice` :
|
||||
- le compte `alice` via `systemd-homed` ;
|
||||
- `/home/alice.home` en LUKS2 ;
|
||||
- le mot de passe temporaire LAB `LaboTest@1980` ;
|
||||
- aucun token FIDO2 ;
|
||||
- aucune recovery key.
|
||||
|
||||
```bash
|
||||
nixos-workstations-setup --target-user alice --diagnose
|
||||
```
|
||||
Le correctif SDDM doit afficher Alice dans le greeter.
|
||||
|
||||
Attendu au minimum :
|
||||
## Première session Alice
|
||||
|
||||
Alice se connecte avec :
|
||||
|
||||
```text
|
||||
current_user=alice
|
||||
target_user=alice
|
||||
current_user_utf8_hex=616c696365
|
||||
target_user_utf8_hex=616c696365
|
||||
authorized=yes
|
||||
LaboTest@1980
|
||||
```
|
||||
|
||||
Le diagnostic indique également les deux marqueurs et le chemin du journal local.
|
||||
L'assistant doit démarrer automatiquement et effectuer, dans cet ordre :
|
||||
|
||||
1. changement du mot de passe temporaire ;
|
||||
2. création du premier PIN sur la YubiKey vierge ;
|
||||
3. enrôlement FIDO2 de la YubiKey dans le home `systemd-homed`.
|
||||
|
||||
Pendant l'étape FIDO2, Alice saisit son **nouveau mot de passe** et son **PIN YubiKey**, puis touche la clé quand elle clignote.
|
||||
|
||||
**Aucune recovery key ne doit être demandée.**
|
||||
|
||||
## État final attendu
|
||||
|
||||
Les trois marqueurs doivent exister :
|
||||
|
||||
```text
|
||||
~/.local/state/nixos-workstations/password-initialized
|
||||
~/.local/state/nixos-workstations/yubikey-pin-created
|
||||
~/.local/state/nixos-workstations/yubikey-fido-enrolled
|
||||
```
|
||||
|
||||
Après déconnexion :
|
||||
|
||||
1. connexion avec YubiKey + PIN : OK ;
|
||||
2. connexion avec mot de passe : OK ;
|
||||
3. les deux ouvrent le même `/home/alice` LUKS2.
|
||||
|
||||
La recovery key d'administration sera ajoutée dans une étape ultérieure ; elle ne fait volontairement pas partie de la v1.8.
|
||||
|
||||
@@ -0,0 +1,83 @@
|
||||
# Test v1.8 LAB — provisioning première session
|
||||
|
||||
## État de départ
|
||||
|
||||
- `localadm` existe et peut lancer `nixos-rebuild`.
|
||||
- `alice` n'existe pas.
|
||||
- aucune `/home/alice.home`.
|
||||
- YubiKey FIDO2 vierge/reset, sans PIN.
|
||||
|
||||
## Déploiement
|
||||
|
||||
Depuis `localadm` :
|
||||
|
||||
```bash
|
||||
cd ~/nixos-workstations
|
||||
sudo nixos-rebuild switch -I nixos-config="$PWD/configuration.nix"
|
||||
```
|
||||
|
||||
> `nixos-rebuild build` seul ne modifie pas l'état du système actif. Pour que le service de précréation d'Alice s'exécute, utiliser `switch` dans ce scénario.
|
||||
|
||||
Après activation, Alice doit exister dans `systemd-homed` avec un home LUKS2, mais sans FIDO2 et sans recovery key.
|
||||
|
||||
Contrôle facultatif :
|
||||
|
||||
```bash
|
||||
sudo homectl inspect alice | grep -E 'State:|Storage:|FIDO2 Token:|Recovery Key:|Passwords:|Disk Size:'
|
||||
```
|
||||
|
||||
Attendu avant première session : stockage LUKS, un mot de passe, aucun token FIDO2, aucune recovery key.
|
||||
|
||||
## Première session Alice
|
||||
|
||||
Dans SDDM, choisir Alice puis utiliser :
|
||||
|
||||
```text
|
||||
LaboTest@1980
|
||||
```
|
||||
|
||||
L'assistant doit se lancer automatiquement.
|
||||
|
||||
### 1. Mot de passe
|
||||
|
||||
- saisir `LaboTest@1980` ;
|
||||
- choisir le nouveau mot de passe ;
|
||||
- confirmer.
|
||||
|
||||
### 2. YubiKey vierge
|
||||
|
||||
- brancher une seule YubiKey ;
|
||||
- choisir son premier PIN ;
|
||||
- confirmer.
|
||||
|
||||
### 3. Enrôlement FIDO2
|
||||
|
||||
- saisir le nouveau mot de passe personnel ;
|
||||
- saisir le PIN choisi à l'étape précédente ;
|
||||
- toucher la YubiKey lorsqu'elle demande la présence utilisateur.
|
||||
|
||||
Aucune recovery key ne doit être demandée.
|
||||
|
||||
## Validation finale
|
||||
|
||||
Après la fin de l'assistant :
|
||||
|
||||
```bash
|
||||
sudo homectl inspect alice | grep -E 'State:|Storage:|FIDO2 Token:|Recovery Key:|Passwords:'
|
||||
```
|
||||
|
||||
Résultat cible :
|
||||
|
||||
```text
|
||||
Storage: luks
|
||||
FIDO2 Token: 1
|
||||
Recovery Key: 0 / absent
|
||||
Passwords: 1
|
||||
```
|
||||
|
||||
Puis tester séparément :
|
||||
|
||||
1. déconnexion → connexion Alice avec YubiKey + PIN ;
|
||||
2. déconnexion → connexion Alice avec mot de passe uniquement.
|
||||
|
||||
Les deux doivent ouvrir le même home LUKS2.
|
||||
+14
-5
@@ -10,11 +10,20 @@
|
||||
./modules/workstation-setup.nix
|
||||
];
|
||||
|
||||
# Étape 2 LAB : l'assistant de première connexion est volontairement
|
||||
# désactivé. Alice est désormais un compte systemd-homed et son mot de
|
||||
# passe est créé directement avec homectl pour valider LUKS2/PAM/SDDM
|
||||
# indépendamment de la YubiKey.
|
||||
nixosWorkstations.workstationSetup.enable = false;
|
||||
# Pré-provisionnement automatique : le rebuild crée Alice avec systemd-homed
|
||||
# et un home LUKS2. L'assistant se lance ensuite à sa première session.
|
||||
nixosWorkstations.homedUser = {
|
||||
enable = true;
|
||||
user = "alice";
|
||||
realName = "Alice";
|
||||
initialPassword = "LaboTest@1980";
|
||||
diskSize = "10G";
|
||||
};
|
||||
|
||||
nixosWorkstations.workstationSetup = {
|
||||
enable = true;
|
||||
user = "alice";
|
||||
};
|
||||
|
||||
# Bootloader.
|
||||
boot.loader.systemd-boot.enable = true;
|
||||
|
||||
Reference in New Issue
Block a user