Document de Suivi de POC : Déploiement & Viabilité d’Ubuntu Workstation
- Période du test : Juillet 2026 – Septembre 2026 (1,5 mois)
- Périmètre : Validation technique du socle Ubuntu pour un déploiement en environnement institutionnel
- Auteur : Équipe Systèmes & Réseaux
1. Contexte & Objectifs du POC
L’objectif de cette phase d’expérimentation est d’évaluer la faisabilité technique, opérationnelle et sécuritaire du remplacement ou de la coexistence d’Ubuntu avec le parc Windows existant.
Objectifs clés à valider
- Intégration Active Directory : Authentification fluide via SSSD / Kerberos sur le domaine interne.
- Sécurité du poste : Chiffrement matériel via la puce TPM 2.0 (
systemd-cryptenroll) et conformité antivirus (WithSecure).
- Services d’infrastructure : Impression réseau (CUPS/SMB), montages de partages de fichiers (cifs/smb), inventaire centralisé (GLPI) et sauvegardes (UrBackup).
- Usages avancés : Virtualisation locale (KVM/QEMU) pour la rétrocompatibilité des outils Windows métier via des machines virtuelles locales.
- Mobilité : Connectivité Wi-Fi.
2. Fiche d’Identité du Poste de Test
| Paramètre |
Valeur / Nom de convention |
| Nom du poste Linux (AD) |
WS001-L-LNX (Suffixe -LNX obligatoire) |
| Domaine AD |
ad.entreprise.lan |
| Compte de jonction AD |
svc_ldap |
| OS Déployé |
Ubuntu 26.04 LTS |
| Type de chiffrement |
LUKS2 + TPM2 (PCR 7) + Recovery Key |
3. Matrice de Validation Technique
Phase 1 : Préparation & Chiffrement Système
| Étape |
Action / Procédure |
Statut |
Remarques / Bloqueurs |
| BIOS |
Reset de la puce de sécurité (Clear security chip). |
🟩 Validé |
Obligatoire avant le premier enrôlement. |
| Installation OS |
Partitionnement chiffré par passphrase initiale. |
🟩 Validé |
Passphrase consignée dans le gestionnaire de mots de passe. |
| Enrôlement TPM2 |
Liaison de la partition crypto avec systemd-cryptenroll --tpm2-pcrs=7. |
🟩 Validé |
Contournement du bug d’installation PCR_UNUSABLE. |
| Clé de secours |
Génération de la recovery key (--recovery-key) + sauvegarde gestionnaire. |
🟩 Validé |
Clé d’urgence hors ligne générée. |
| Boot Automatique |
Configuration de /etc/crypttab (tpm2-device=auto) + update-initramfs. |
🟩 Validé |
Déverrouillage matériel opérationnel sans prompt. |
Phase 2 : Intégration Annuaire & Authentification
| Étape |
Action / Procédure |
Statut |
Remarques / Bloqueurs |
| DNS / Réseau |
Résolution FQDN du contrôleur de domaine via nslookup. |
🟩 Validé |
Pointer impérativement sur l’IP du DC. |
| Jonction Domaine |
Exécution de realm join -U 'svc_ldap'. |
🟩 Validé |
Création de l’objet ordinateur dans l’AD. |
| Tickets Kerberos |
Obtention des TGT via kinit USER@AD.ENTREPRISE.LAN. |
🟩 Validé |
Majuscules strictes pour le domaine Kerberos. |
| Dossiers Utilisateurs |
Génération auto du /home/ (pam-auth-update --enable mkhomedir). |
🟩 Validé |
Effectif à la première ouverture de session. |
| Droits d’administration |
Fichier sudoers /etc/sudoers.d/ad-admins pour le groupe AD. |
🟨 En cours |
À tester sur un panel d’utilisateurs restreint. |
Phase 3 : Services Réseau & Périphériques
| Service |
Méthode & Commandes |
Statut |
Observations |
| Montage lecteur réseau |
Script cifs avec délégation sudo mount. Lancement au démarrage avec gnome-tweaks. |
🟨 En cours |
Créer les scripts par groupe. |
| Imprimerie |
Publication CUPS vers dc-print (Driver PPD ou RAW). |
🟩 Validé |
Authentification transparente via smbclient -k. |
| Wi-Fi Eduroam |
Configuration via le script Python officiel CAT eduroam. |
🟨 À ajuster |
Profil de certificat appliqué. Spécification explicite du domaine requise. |
Phase 4 : Agents de Gestion, Sécurité & Sauvegarde
| Agent / Outil |
Installation & Configuration |
Statut |
Commentaires |
| Antivirus WithSecure |
Exécution de linuxsecurity-installer.sh. |
🟨 En cours |
Moteur local actif, remontée console à surveiller. |
| Inventaire GLPI |
Déploiement de glpi-agent en mode service. |
🟩 Validé |
Inventaire OK (gestion du dual-boot confirmée). |
| UrBackup Client |
Configuration du mode Internet (srv-backup.entreprise.lan:55415) + AuthKey. |
🟩 Validé |
Ingestion du dossier /home/ de l’utilisateur OK. |
| Téléassistance |
Utilisation de l’agent de téléassistance pour prise en main à distance. |
🟩 Validé |
Opérationnel. |
Phase 5 : Virtualisation & Rétrocompatibilité (KVM / Samba)
| Composant |
Configuration effectuée |
Statut |
Notes techniques |
| Hyperviseur |
Paquets qemu-system-x86, libvirt, virt-manager. |
🟩 Validé |
Utilisateur rattaché aux groupes libvirt et kvm. |
| Pilotes Guest |
Intégration de l’ISO virtio-win pour les VM Windows. |
🟩 Validé |
Réseau et stockage optimisés dans l’invité. |
| Partage Hôte / VM |
Serveur Samba local sur virbr0 (/srv/samba/partage). |
🟩 Validé |
Workgroup configuré sur WS-VM-SHARED. |
| VM sur serveur |
VM Windows Server avec licences RDS/CAL pour connexions simultanées. |
⬜ À créer |
Étude d’architecture en cours. |
4. Retours d’Expérience & Points de Vigilance
Points forts
- Performance matérielle : Démarrage très rapide du système déverrouillé directement par le module TPM.
- Virtualisation intégrée : KVM offre un fonctionnement fluide et des performances quasi natives pour faire tourner ponctuellement des applications Windows métier.
Points d’attention & Axes d’amélioration
- Temps de déploiement initial : L’installation manuelle actuelle nécessite environ une journée par poste. Une automatisation (via des scripts PXE / Autoinstall YAML) sera indispensable en cas de passage à l’échelle.
- Mises à jour BIOS : Toute mise à jour de carte mère ou de firmware BIOS invalide le registre PCR 7 et nécessite une réinitialisation manuelle du slot TPM :
```bash
sudo systemd-cryptenroll /dev/nvme0n1p3 –wipe-slot=tpm2
sudo systemd-cryptenroll /dev/nvme0n1p3 –tpm2-device=auto –tpm2-pcrs=7
sudo update-initramfs -u -k all
1
2
3
4
5
6
7
8
9
10
|
* **Client VPN :** En l'absence de paquet graphique Linux supporté en version 26.04, la connexion s'effectue en ligne de commande via `openconnect` (script utilisateur documenté ci-dessous).
* **Eduroam :** Nécessite de spécifier manuellement le domaine (`ad.entreprise.lan`) et de valider les options de certificat dans le gestionnaire réseau GNOME.
* **Wine :** À évaluer pour exécuter certains utilitaires Windows légers sans l'empreinte mémoire d'une machine virtuelle complète.
* **Instabilité réseau / reprise de veille :** En cas de perte de session après un changement de réseau ou une veille prolongée, exécuter :
```bash
sudo systemctl restart NetworkManager systemd-resolved sssd
sudo resolvectl flush-caches
|
Pour désactiver la mise en veille agressive de la carte Wi-Fi, éditer /etc/NetworkManager/conf.d/default-wifi-powersave-on.conf et renseigner wifi.powersave = 2.
5. Procédure Technique : Script & Raccourci VPN OpenConnect
Phase 1 : Configuration Administrateur (Root / Sudo)
1. Délégation des privilèges sudoers :
1
2
| sudo visudo /etc/sudoers.d/vpn-openconnect
|
Contenu à insérer :
1
2
| %ad-users ALL=(ALL) NOPASSWD: /usr/sbin/openconnect, /bin/kill, /usr/bin/kill, /bin/rm /var/run/openconnect-vpn.pid
|
2. Déploiement du script système :
1
2
| sudo nano /usr/local/bin/vpn.sh
|
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
| #!/bin/bash
SERVER="vpn.entreprise.lan"
PID_FILE="/var/run/openconnect-vpn.pid"
echo "=========================================="
echo " Connexion VPN Institutionnel "
echo "=========================================="
if ! command -v openconnect &> /dev/null; then
echo "Erreur : openconnect n'est pas installé sur cette machine."
echo ""
read -p "Appuyez sur Entrée pour quitter..."
exit 1
fi
check_status() {
if [ -f "$PID_FILE" ] && sudo kill -0 $(cat "$PID_FILE") 2>/dev/null; then
return 0
else
return 1
fi
}
echo "Que souhaitez-vous faire ?"
echo "1) Se connecter"
echo "2) Se déconnecter"
echo "3) Voir le statut"
read -p "Votre choix [1-3] : " CHOIX
case $CHOIX in
1)
if check_status; then
echo "Le VPN est déjà connecté !"
else
echo ""
echo "Veuillez saisir vos identifiants VPN :"
echo "------------------------------------------"
sudo openconnect --protocol=gp -b --pid-file="$PID_FILE" "$SERVER"
if [ $? -eq 0 ]; then
echo ""
echo "Connexion établie en arrière-plan !"
else
echo ""
echo "Échec de la connexion."
fi
fi
;;
2)
if ! check_status; then
echo "Le VPN n'est pas actif."
[ -f "$PID_FILE" ] && sudo rm -f "$PID_FILE" 2>/dev/null
else
echo "Déconnexion en cours..."
sudo kill -SIGINT $(cat "$PID_FILE") 2>/dev/null
sudo rm -f "$PID_FILE" 2>/dev/null
echo "VPN déconnecté."
fi
;;
3)
echo ""
if check_status; then
echo "Statut : CONNECTÉ (PID: $(cat $PID_FILE 2>/dev/null))"
ip a show dev tun0 2>/dev/null | grep -E "inet " || true
else
echo "Statut : DÉCONNECTÉ"
fi
;;
*)
echo "Choix invalide."
;;
esac
echo ""
read -p "Appuyez sur Entrée pour quitter..."
|
3. Permissions :
1
2
| sudo chmod +x /usr/local/bin/vpn.sh
|
Phase 2 : Configuration Session Utilisateur
1. Raccourci d’application GNOME :
1
2
| nano ~/.local/share/applications/vpn-service.desktop
|
1
2
3
4
5
6
7
8
9
10
11
| [Desktop Entry]
Type=Application
Name=VPN Entreprise
Comment=Connexion VPN OpenConnect
Exec=/usr/local/bin/vpn.sh
Icon=network-vpn-symbolic
Terminal=true
Categories=Network;
Keywords=VPN;openconnect;reseau;
StartupNotify=true
|
2. Droits et indexation :
1
2
3
| chmod 755 ~/.local/share/applications/vpn-service.desktop
update-desktop-database ~/.local/share/applications
|
6. Procédure Technique : Script de Montage CIFS / GVfs
1. Script de montage Bash
Emplacement : ~/.local/bin/mount-cifs.sh
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
| #!/bin/bash
# Extraction et export du ticket Kerberos pour la session utilisateur
CCACHE_FILE=$(klist 2>/dev/null | awk -F':' '/Ticket cache/ {print $3}' | tr -d ' ')
export KRB5CCNAME="FILE:${CCACHE_FILE}"
# Montage GVfs pour Partage Principal
if ! gio mount -l | grep -q "smb://srv-nas.ad.entreprise.lan/Services"; then
gio mount "smb://srv-nas.ad.entreprise.lan/Services" 2>/dev/null
fi
# Montage GVfs pour Partage Public
if ! gio mount -l | grep -q "smb://srv-nas.ad.entreprise.lan/Public"; then
gio mount "smb://srv-nas.ad.entreprise.lan/Public" 2>/dev/null
fi
|
1
2
| chmod +x ~/.local/bin/mount-cifs.sh
|
2. Lanceur GNOME Desktop
Emplacement : ~/.local/share/applications/mount-cifs.desktop
1
2
3
4
5
6
7
8
9
10
11
| [Desktop Entry]
Type=Application
Name=Montage Partages CIFS
Comment=Lancer le montage manuel des lecteurs réseau
Exec=bash -c "$HOME/.local/bin/mount-cifs.sh"
Icon=folder-remote-symbolic
Terminal=true
Categories=Network;
Keywords=CIFS;partage;lecteur;montage;
StartupNotify=true
|
3. Fonctionnement & Précisions
- Authentification transparente : Le script s’appuie sur le ticket Active Directory déjà présent dans la session (
klist) sans réclamer de mot de passe.
- Intégration Nautilus : L’utilisation de
gio mount (GVfs) permet un montage utilisateur accessible dans le panneau latéral de l’explorateur ou sous /run/user/$UID/gvfs/.
- Réinitialisation : En cas d’erreur de point de montage après bascule réseau, démonter les chemins orphelins via
sudo umount -l /mnt/* 2>/dev/null || true avant de relancer le script.
7. Bilan Final & Décision
- Taux de satisfaction utilisateur :
[ / 10]
- Consommation de support / tickets N1/N2 :
[Élevé / Modéré / Faible]
- Avis sur la viabilité en production :
- GO : Déploiement validé (avec industrialisation du déploiement).
- NO GO : Bloquages métiers / incompatibilités trop critiques.
- RÉSERVE : Nécessite une prolongation du test sur d’autres profils.
Commentaires de clôture :
À renseigner à l’issue de la période de test.