MISE EN PLACE D'UN SERVEUR APACHE GUACAMOLE
Installation de Docker :
Installation d’Apache Guacamole :

Préparation de l'environnement Guacamole :

Création du fichier docker-compose :

Démarrage de l'infrastructure :

Gestion des conteneurs Docker :

Accès à l'interface web :

Mise en place des connections distantes :

Connection au serveur Linux en SSH :

Connection au serveur Windows en RDP :

Sécurisation des connexions
Connexion SSH sécurisée

Étape 1 — Générer la paire de clés SSH pour Guacamole

Sur le serveur Guacamole :

  • Créer le dossier et sécuriser ses permissions :
    mkdir -p /etc/guacamole/keys
        chmod 700 /etc/guacamole/keys
  • Générer la paire de clés RSA 4096 bits :
    ssh-keygen -t rsa -b 4096 -f /etc/guacamole/keys/guac_rsa -N ""
  • Appliquer les permissions sur les clés :
    chmod 600 /etc/guacamole/keys/guac_rsa
        chmod 644 /etc/guacamole/keys/guac_rsa.pub
        chown root:root /etc/guacamole/keys/guac_rsa
  • Deux fichiers sont générés :
    • /etc/guacamole/keys/guac_rsa → clé privée (reste sur le serveur Guacamole, ne bouge jamais)
    • /etc/guacamole/keys/guac_rsa.pub → clé publique (à déposer sur chaque serveur Linux cible)

Étape 2 — Déployer la clé publique sur chaque serveur Debian

Depuis le serveur Guacamole, exécuter la commande suivante pour chaque serveur cible (remplacer utilisateur@ip-serveur-cible) :

cat /etc/guacamole/keys/guac_rsa.pub | ssh utilisateur@ip-serveur-cible \
    "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Exemple pour le serveur DHCP :

cat /etc/guacamole/keys/guac_rsa.pub | ssh cedric@172.30.99.10 \
    "mkdir -p ~/.ssh && chmod 700 ~/.ssh && cat >> ~/.ssh/authorized_keys && chmod 600 ~/.ssh/authorized_keys"

Étape 3 — Déployer la clé privée dans Guacamole

  • Afficher le contenu de la clé privée :
    cat /etc/guacamole/keys/guac_rsa
  • Se connecter à l'interface web de Guacamole et aller dans Paramètres → Connexions.
  • Sélectionner un serveur et descendre jusqu'à Paramètres / Authentification.
  • Coller le contenu de la clé privée dans le champ Clé privée.
Connexion RDP sécurisée

Étape 1 — Créer le template de certificat sur AD CS

Sur le serveur AD CS :

  • Ouvrir certsrv.msc
  • Clic droit sur Modèles de certificatsGérer
  • Trouver le template Ordinateur → clic droit → Dupliquer
  • Configurer le template dupliqué :
    • Onglet Général :
      • Nom du modèle : RDP-Ordinateur
      • Cocher Publier le certificat dans AD
    • Onglet Sécurité :
      • Ajouter Ordinateurs du domaine → droits : Lire + Inscrire + Inscription automatique
      • Ajouter Contrôleurs de domaine → mêmes droits
    • Onglet Extensions → Stratégies d'application :
      • Vérifier que Authentification du bureau à distance est présent (OID 1.3.6.1.4.1.311.54.1.2)
      • Si absent : cliquer sur Ajouter → rechercher "Bureau à distance" → OK

Étape 2 — Publier le template

Retour dans certsrv.msc :

  • Clic droit Modèles de certificatsNouveauModèle de certificat à délivrer
  • Sélectionner RDP-Ordinateur → OK

Étape 3 — GPO d'enrollment automatique

Dans gpmc.msc, créer ou modifier une GPO liée à l'OU des machines Windows :

Configuration ordinateur
    → Paramètres Windows
        → Paramètres de sécurité
        → Stratégies de clé publique
            → Client des services de certificats - Inscription automatique
  • Modèle de configuration : Activé
  • Cocher Renouveler les certificats expirés
  • Cocher Mettre à jour les certificats qui utilisent les modèles de certificats

Étape 4 — GPO pour forcer RDP à utiliser le certificat

Dans la même GPO, naviguer vers :

Configuration ordinateur
    → Modèles d'administration
        → Composants Windows
        → Services Bureau à distance
            → Hôte de session Bureau à distance
            → Sécurité
  • Modèle de certificat d'authentification du serveur → Activé → valeur : RDP-Ordinateur
  • Nécessite l'utilisation d'une couche de sécurité spécifique pour les connexions distantes → Activé → SSL (TLS 1.0)

Étape 5 — Appliquer les GPO sur les machines cibles

Sur chaque machine Windows :

gpupdate /force

Vérifier l'enrollment du certificat :

certlm.msc
    # → Personnel → Certificats
    # Un certificat émis par cbaudiment.fr doit être visible

Étape 6 — Importer le certificat racine CA dans Guacamole

Cette étape est indispensable pour que Guacamole fasse confiance aux certificats RDP signés par l'AD CS.

  • Exporter le certificat racine depuis Windows :
    • Ouvrir certsrv.msc → clic droit sur le CA → PropriétésCertificat CAAfficherDétailsCopier dans un fichier
    • Format : X.509 encodé en Base64 (.CER)
  • Transférer le fichier sur le serveur Guacamole, puis importer dans le truststore Java :
    keytool -import -trustcacerts \
        -alias "CA-cbaudiment" \
        -file /tmp/ca-cbaudiment.cer \
        -keystore /etc/guacamole/truststore.jks \
        -storepass changeit
  • Référencer le truststore dans guacamole.properties :
    echo "ssl-truststore: /etc/guacamole/truststore.jks" >> /etc/guacamole/guacamole.properties
        echo "ssl-truststore-password: changeit" >> /etc/guacamole/guacamole.properties
  • Redémarrer les services :
    systemctl restart tomcat9 guacd
Erreurs fréquentes
Symptôme Cause probable Solution
Connexion SSH refusée dans Guacamole Clé privée mal collée ou retours à la ligne manquants Recopier le contenu de guac_rsa en incluant les lignes -----BEGIN----- et -----END-----
Clé publique non reconnue sur le serveur cible Permissions incorrectes sur ~/.ssh ou authorized_keys Vérifier chmod 700 ~/.ssh et chmod 600 ~/.ssh/authorized_keys sur le serveur cible
Avertissement de certificat RDP persistant GPO non appliquée ou template non publié Exécuter gpupdate /force et vérifier dans certlm.msc que le certificat RDP-Ordinateur est présent
CERTSRV_E_TEMPLATE_DENIED lors de l'enrollment "Contrôleurs de domaine" absent des permissions du template Ouvrir le template dans certsrv.msc → onglet Sécurité → ajouter Contrôleurs de domaine avec droits Lire + Inscrire
Guacamole rejette la connexion RDP (erreur SSL) Certificat CA non importé dans le truststore Java Importer le CA via keytool et redémarrer tomcat9 et guacd