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
|
Depuis `localadm` :
|
||||||
/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
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
cd ~/nixos-workstations
|
cd ~/nixos-workstations
|
||||||
|
sudo nixos-rebuild switch -I nixos-config="$PWD/configuration.nix"
|
||||||
sudo nixos-rebuild build \
|
|
||||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## 4. Examiner l'activation
|
Cette activation :
|
||||||
|
|
||||||
```bash
|
1. installe/configure le poste ;
|
||||||
sudo nixos-rebuild dry-activate \
|
2. active `systemd-homed` ;
|
||||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
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
|
## Première session
|
||||||
sudo nixos-rebuild test \
|
|
||||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
|
||||||
```
|
|
||||||
|
|
||||||
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 :
|
Aucune recovery key n'est créée à ce stade.
|
||||||
|
|
||||||
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
|
|
||||||
```
|
|
||||||
|
|||||||
+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
|
```bash
|
||||||
cd ~/nixos-workstations
|
cd ~/nixos-workstations
|
||||||
|
|
||||||
sudo nixos-rebuild build \
|
sudo nixos-rebuild build \
|
||||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
-I nixos-config="$PWD/configuration.nix"
|
||||||
|
|
||||||
sudo nixos-rebuild dry-activate \
|
|
||||||
-I nixos-config=/home/localadm/nixos-workstations/configuration.nix
|
|
||||||
```
|
```
|
||||||
|
|
||||||
## Test contrôlé
|
Si le build est OK, activer la génération :
|
||||||
|
|
||||||
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 :
|
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
sudo nixos-rebuild switch \
|
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.
|
## Précréation attendue
|
||||||
- Ne jamais modifier manuellement `/etc/shadow`.
|
|
||||||
- Le retour à une ancienne génération NixOS ne restaure pas les mots de passe mutables.
|
|
||||||
|
|
||||||
## 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
|
Le correctif SDDM doit afficher Alice dans le greeter.
|
||||||
nixos-workstations-setup --target-user alice --diagnose
|
|
||||||
```
|
|
||||||
|
|
||||||
Attendu au minimum :
|
## Première session Alice
|
||||||
|
|
||||||
|
Alice se connecte avec :
|
||||||
|
|
||||||
```text
|
```text
|
||||||
current_user=alice
|
LaboTest@1980
|
||||||
target_user=alice
|
|
||||||
current_user_utf8_hex=616c696365
|
|
||||||
target_user_utf8_hex=616c696365
|
|
||||||
authorized=yes
|
|
||||||
```
|
```
|
||||||
|
|
||||||
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
|
./modules/workstation-setup.nix
|
||||||
];
|
];
|
||||||
|
|
||||||
# Étape 2 LAB : l'assistant de première connexion est volontairement
|
# Pré-provisionnement automatique : le rebuild crée Alice avec systemd-homed
|
||||||
# désactivé. Alice est désormais un compte systemd-homed et son mot de
|
# et un home LUKS2. L'assistant se lance ensuite à sa première session.
|
||||||
# passe est créé directement avec homectl pour valider LUKS2/PAM/SDDM
|
nixosWorkstations.homedUser = {
|
||||||
# indépendamment de la YubiKey.
|
enable = true;
|
||||||
nixosWorkstations.workstationSetup.enable = false;
|
user = "alice";
|
||||||
|
realName = "Alice";
|
||||||
|
initialPassword = "LaboTest@1980";
|
||||||
|
diskSize = "10G";
|
||||||
|
};
|
||||||
|
|
||||||
|
nixosWorkstations.workstationSetup = {
|
||||||
|
enable = true;
|
||||||
|
user = "alice";
|
||||||
|
};
|
||||||
|
|
||||||
# Bootloader.
|
# Bootloader.
|
||||||
boot.loader.systemd-boot.enable = true;
|
boot.loader.systemd-boot.enable = true;
|
||||||
|
|||||||
Reference in New Issue
Block a user