Configuration de Devolutions Gateway sur Linux

Installer et exécuter Devolutions Gateway sur Linux est rapide et facile, à condition que plusieurs prérequis soient remplis. Ubuntu 22.04 LTS a été utilisé pour démontrer l'installation et la configuration.

Avoir besoin de Devolutions Server ou Devolutions Cloud pour la configuration ainsi que d'une licence Devolutions Gateway.

Installer Devolutions Gateway

  1. Naviguer vers la page de release Devolutions Gateway sur GitHub et télécharger le fichier .deb de la dernière version.

  2. Saisir ce qui suit en ligne de commande : wget https://github.com/Devolutions/devolutions-gateway/releases/download/v2024.3.2/devolutions-gateway_2024.3.2.0_amd64.deb

  3. Installer le paquet en utilisant l'utilitaire dpkg : sudo dpkg -i devolutions-gateway_2024.3.2.0_amd64.deb

Les paquets de configuration et binaires se trouvent aux emplacements suivants :

  • Configuration : /etc/devolutions-gateway

  • Binaire : /usr/bin/devolutions-gateway

Mettre à jour Devolutions Gateway

Pour mettre à jour Devolutions Gateway sur Linux, télécharger le dernier paquet comme expliqué dans la section précédente et exécuter la commande d'installation. Le paquet s'installe par-dessus l'installation existante et préserve les configurations.

Installer le module gateway PowerShell

Il est recommandé d'utiliser le module PowerShell gateway pour configurer et gérer l'instance de Devolutions Gateway sur Linux.

  1. Installer PowerShell avec cette commande :

    source /etc/os-release
    wget -q https://packages.microsoft.com/config/ubuntu/$VERSION_ID/packages-microsoft-prod.deb
    sudo dpkg -i packages-microsoft-prod.deb
    rm packages-microsoft-prod.deb
    sudo apt-get update
    sudo apt-get install -y powershell
    
  2. Installer le module Devolutions Gateway PowerShell :

    Install-Module -Name DevolutionsGateway
    Import-Module -Name DevolutionsGateway
    

Une fois installé, la configuration de Devolutions Gateway peut être démarrée, arrêtée, visualisée ou modifiée.

Configurer les certificats

Une bonne confiance des certificats entre les systèmes est essentielle pour faire fonctionner Devolutions Gateway. Les fonctionnalités telles que les WebSockets utilisées dans les vues de tableau de bord web de RDP, SSH, etc., nécessitent un certificat correctement approuvé. Un certificat d'une autorité officielle telle que Let's Encrypt serait idéal pour la plupart des systèmes de production. Les certificats auto-signés, comme l'exemple montré ci-dessous, peuvent être générés mais nécessitent une configuration supplémentaire pour être approuvés. Vous pouvez générer des certificats sur n'importe quel système et les utiliser dans Devolutions Gateway s'ils respectent les exigences du certificat.

Générer un certificat LetsEncrypt sur Ubuntu 22.04 LTS via Certbot.

Une option consiste à générer un certificat LetsEncrypt avec l'utilitaire Certbot. Pour installer la dernière version, il est possible d'utiliser le gestionnaire de paquets snap. Selon la distribution Ubuntu, les dépôts APT par défaut peuvent ne pas contenir la dernière version du logiciel. Dans cet exemple, la vérification du domaine est utilisée avec Cloudflare comme fournisseur DNS.

  1. L'exemple ci-dessous démontre l'exécution de Certbot installé et exécuté en tant qu'utilisateur root, mais Devolutions Gateway en tant qu'utilisateur différent.

    sudo snap install certbot --classic
    sudo snap set certbot trust-plugin-with-root=ok
    sudo snap install certbot-dns-cloudflare
    
  2. Lors de l'utilisation de Cloudflare, générer soit un jeton API limité à l'utilisateur ou à l'identifiant, en utilisant le modèle Edit zone DNS. Une fois que le jeton API est obtenu, créer le dossier contenant ainsi que le fichier correspondant .ini pour contenir le jeton API.

    sudo install -d -m 0700 /root/.secrets
    sudo nano /root/.secrets/cloudflare.ini
    sudo chmod 0600 /root/.secrets/cloudflare.ini
    
  3. Demander un certificat pour votre domaine Devolutions Gateway en utilisant le plugin Cloudflare DNS. Remplacer la valeur gateway.mydomain.com ci-dessous par votre propre domaine.

    certbot certonly --dns-cloudflare --dns-cloudflare-credentials /root/.secrets/cloudflare.ini -d gateway.mydomain.com --cert-name gateway
    
  4. Modifier votre fichier de configuration gateway.json pour ajouter les lignes suivantes et utiliser le certificat nouvellement généré, en utilisant le module Devolutions Gateway PowerShell. Les commandes ci-dessous modifient les variables de configuration TlsCertificateFile, TlsPrivateKeyFile, et Listeners.

    Import-Module DevolutionsGateway
    Set-DGatewayConfig -TlsCertificateFile "/etc/letsencrypt/live/gateway/fullchain.pem" -TlsPrivateKeyFile "/etc/letsencrypt/live/gateway/privkey.pem" -Listeners @(
    @{
            "InternalUrl" = "tcp://*:8181"
            "ExternalUrl" = "tcp://*:8181"
        }
        @{
            "InternalUrl" = "https://*:7171"
            "ExternalUrl" = "https://*:7171"
        }
    )
    
  5. Avant de pouvoir redémarrer Devolutions Gateway pour utiliser le nouveau certificat, donner à l'utilisateur exécutant Devolutions Gateway l'autorisation de lire les fichiers de certificat. Cela suppose que l'utilisateur s'appelle devolutions et que le certificat s'appelle gateway. Vous accordez les droits de traversée aux répertoires et les droits de lecture aux fichiers de certificat eux-mêmes.

    sudo setfacl -R -m u:devolutions:x /etc/letsencrypt/live
    sudo setfacl -R -m u:devolutions:x /etc/letsencrypt/live/gateway
    sudo setfacl -R -m u:devolutions:x /etc/letsencrypt/archive
    sudo setfacl -R -m u:devolutions:x /etc/letsencrypt/archive/gateway
    sudo setfacl -m u:devolutions:r /etc/letsencrypt/live/gateway/fullchain.pem
    sudo setfacl -m u:devolutions:r /etc/letsencrypt/live/gateway/privkey.pem
    sudo setfacl -m u:devolutions:r /etc/letsencrypt/archive/gateway/fullchain*.pem
    sudo setfacl -m u:devolutions:r /etc/letsencrypt/archive/gateway/privkey*.pem
    
    # Reconfigure to add a deploy hook
    sudo certbot reconfigure --cert-name gateway --deploy-hook "sudo setfacl -m u:devolutions:r /etc/letsencrypt/archive/gateway/fullchain*.pem; sudo setfacl -m u:devolutions:r /etc/letsencrypt/archive/gateway/privkey*.pem; systemctl restart devolutions-gateway.service"
    
  6. Redémarrer Devolutions Gateway en utilisant soit la commande systemctl, soit le module Devolutions Gateway PowerShell.

    # Restart Gateway using systemctl
    systemctl restart devolutions-gateway.service
    
    # Restart Gateway using the Devolutions Gateway PowerShell module, assuming it is run in a pwsh shell.
    Import-Module DevolutionsGateway; Restart-DGateway
    

Renouveler le certificat LetsEncrypt.

Par défaut, avec la méthode d'installation Snap, un minuteur systemd est utilisé (au lieu d'une tâche cron), qui s'exécute deux fois par jour (mais ne renouvelle un certificat que dans les 30 jours précédant son expiration). Pour forcer un renouvellement, utiliser la commande ci-dessous.

sudo certbot renew
# To perform a renewal dry run and force a restart of the service, you can use the following command:
# sudo certbot renew --dry-run --run-deploy-hooks

Générer un certificat auto-signé sur Ubuntu 22.04 LTS via OpenSSL

Utiliser l'utilitaire OpenSSL pour générer un certificat directement depuis la ligne de commande. Le certificat doit ensuite être placé directement dans le répertoire de configuration /etc/devolutions-gateway.

sudo openssl req -x509 -subj "/C=CA/ST=Quebec/L=Lavaltrie/O=Devolutions/CN=ubuntu-2204" -addext "subjectAltName = IP:10.10.0.20" -addext "extendedKeyUsage = serverAuth" -nodes -days 365 -newkey rsa:2048 -keyout /etc/devolutions-gateway/server.key -out /etc/devolutions-gateway/server.crt

La demande de certificat sera différente pour chaque configuration.

Noter que le certificat doit inclure une extension Subject Alternative Name (SAN) avec soit un nom DNS ou une adresse IP, et il doit aussi contenir l'extension Extended Key Usage (EKU) avec pour but Server Authentication (serverAuth). Cela est requis car les systèmes d'exploitation et navigateurs modernes, y compris Google Chrome et macOS, rejetteront les certificats qui manquent d'un SAN ou d'un EKU approprié, même si le Nom Commun (CN) est défini. Il est possible d'assouplir cette obligation en définissant l'option TlsVerifyStrict sur false si nécessaire, mais cela n'est pas recommandé.

Options de personnalisation

Explication

req

Créer et traiter les demandes de certificat, y compris les certificats auto-signés au format PKCS#10.

-x509

Produire un certificat auto-signé.

-subj

Définir le sujet du certificat en ligne de commande. Il ne doit y avoir aucun espace entre les sections

  • /C - Pays en code à 2 chiffres tel que "CA" pour le Canada ou "US" pour les États-Unis.

  • /ST - État ou Province, tel que Québec ou Californie.

  • /L - Localité, comme Lavaltrie ou Sacramento.

  • /O - Organisation, telle que Devolutions ou Microsoft.

  • /CN - Nom commun, ici ubuntu-2204 (tel qu'affiché via la commande hostname).

-addext

Pour ajouter un Nom Alternatif de Sujet (SAN), vous pouvez utiliser ce paramètre pour définir soit une entrée IP ou DNS.

  • "subjectAltName = IP:10.10.0.20"

  • "subjectAltName = DNS:ubuntu-2204"

-nodes

Ne pas chiffrer la clé privée créée.

-days

Le nombre de jours pendant lesquels le certificat est valide.

-newkey

Définir l'algorithme et la taille des bits, ici rsa:2048 est utilisé.

-keyout

L'emplacement pour créer le fichier de clé privée.

-out

L'emplacement pour créer le fichier de clé publique.

Faire confiance au certificat auto-signé sur Ubuntu

Le certificat TLS a deux objectifs :

  1. Sécuriser l'API de gestion ;

  2. Sécuriser tout tunnel client-à-passerelle dans lequel la passerelle peut inspecter ou filtrer le trafic (sites Web, Gateway Tunnel, SCP/SFTP, etc.).
    Pour les protocoles opaques tels que RDP ou SSH, Devolutions Gateway réachemine simplement les octets déjà chiffrés, mais le certificat est toujours requis pour les vérifications de santé de la passerelle et les fonctionnalités futures.

Une fois que le certificat auto-signé est créé, le certificat dans le système Ubuntu devra être approuvé. Pour approuver à l'échelle du système, utiliser la série de commandes suivante :

cd /etc/devolutions-gateway
sudo apt-get install -y ca-certificates
sudo cp server.crt /usr/local/share/ca-certificates
sudo update-ca-certificates

Le ca-certificates peut déjà être installé. En exécutant la commande update-ca-certificates, un lien symbolique sera créé dans /etc/ssl/certs vers le fichier de certificat copié dans /usr/local/share/ca-certificates.

Si cela est fait dans Firefox, plusieurs erreurs de confiance apparaîtront car le navigateur n'utilise pas le magasin de certificats à l'échelle du système. Leur documentation offre quelques solutions à cela.

Faire confiance au certificat auto-signé sous Windows

Après que le certificat auto-signé est créé, il devra être approuvé sur Devolutions Server. Les fichiers server.crt et server.key devront être transférés sur le système Windows ; ou copier-coller le contenu dans les fichiers (c'est-à-dire sudo cat server.crt dans Ubuntu et copier cela dans un fichier texte sur Windows).

Passer cette section si Devolutions Server n'est pas exécuté sur Windows.

  1. Copier la clé publique vers Windows (dans l'exemple, C:\Gateway est un emplacement temporaire) :
    sudo cat server.crt

  2. Copier le contenu dans un fichier server.crt.

  3. Copier la clé privée vers Windows :
    sudo cat server.key

  4. Copier le contenu dans un fichier server.key.

  5. Créer un fichier PFX en utilisant l'outil en ligne de commande certutil de Windows. Pour que cela fonctionne, le fichier de clé doit avoir le même nom que le fichier crt, seule l'extension diffère :
    certutil -mergepfx server.crt server.pfx

  6. Importer le fichier PFX dans le magasin de certificats des autorités de certification racines de confiance.

    1. Double-cliquer sur le fichier server.pfx pour démarrer l'assistant d'importation et choisir Ordinateur local.

    2. Cliquer sur Suivant et accepter l'invite.

    3. Cliquer sur Suivant.

    4. Entrer le mot de passe que vous avez entré avec la commande certutil.

      • Optionnellement : choisir de marquer cette clé comme exportable.

    5. Choisir l'option Placer tous les certificats dans le magasin suivant.

    6. Sélectionner Autorités de certification racines approuvées avec le bouton Parcourir....

    7. Cliquer sur Suivant.

    8. Cliquer sur Terminer pour compléter l'importation.

Ouvrir les ports du pare-feu Ubuntu

Si le système Linux utilise UFW (Uncomplicated Firewall) pour gérer le pare-feu basé sur iptable, exécuter les commandes suivantes pour ouvrir les ports nécessaires :

sudo ufw status
sudo ufw allow 7171
sudo ufw allow 8181
sudo ufw status

Modifier la configuration de Devolutions Gateway

La configuration par défaut d'une passerelle contenue dans le fichier /etc/devolutions-gateway/gateway.json nécessite l'ajout de directives de certificat (l'InternalUrl devra utiliser HTTPS) :

{
  "Id": "YOUR-UNIQUE-GUID",
  "ProvisionerPublicKeyFile": "provisioner.pem",
  "ProvisionerPrivateKeyFile": null,
  "Listeners": [
    {
      "InternalUrl": "tcp://:8181",
      "ExternalUrl": "tcp://:8181"
    },
    {
      "InternalUrl": "http://:7171",
      "ExternalUrl": "https://:7171"
    }
  ]
}

Modifier le fichier ci-dessus pour refléter ce qui suit, en supposant que server.crt et server.key sont dans le même répertoire que gateway.json (il est recommandé d'utiliser l'éditeur de fichiers intégré Nano):

{
  "Id": "YOUR-UNIQUE-GUID",
  "ProvisionerPublicKeyFile": "provisioner.pem",
  "ProvisionerPrivateKeyFile": null,
  "TlsCertificateFile": "server.crt",
  "TlsPrivateKeyFile": "server.key",
  "Listeners": [
    {
      "InternalUrl": "tcp://:8181",
      "ExternalUrl": "tcp://:8181"
    },
    {
      "InternalUrl": "https://:7171",
      "ExternalUrl": "https://:7171"
    }
  ]
}

Redémarrer Devolutions Gateway

Avec la nouvelle configuration en place, redémarrer Devolutions Gateway. Cela peut être fait avec la commande systemctl :

sudo systemctl restart devolutions-gateway.service
sudo systemctl status devolutions-gateway.service

Alternativement, les commandes PowerShell Stop-DGateway et Start-DGateway peuvent aussi être utilisées.

Connecter Devolutions Gateway à Devolutions Server

Copier la clé publique de Devolutions Server vers Devolutions Gateway Linux

  1. Se connecter à la console Web de Devolutions Server et naviguer vers AdministrationDevolutions Gateway.

  2. Cliquer sur le bouton Plus et choisir l'option Télécharger la clé publique.

  3. Copier le contenu du fichier gateway_public_key.pem téléchargé sous Windows.

  4. Remplacer le contenu du fichier /etc/devolutions-gateway/provisioner.pem (l'utilitaire Nano est recommandé) par le contenu copié depuis Windows.

  5. Redémarrer Devolutions Gateway avec la commande sudo systemctl restart devolutions-gateway.service.

     

Configurer Devolutions Gateway dans Devolutions Server

Aller à l'interface web de Devolutions Server où la nouvelle Devolutions Gateway Linux configurée sera ajoutée.

Ignorer cette section si installer Devolutions Gateway avec Devolutions Cloud.

  1. Se connecter à la console Web de Devolutions Server et naviguer vers AdministrationDevolutions Gateway.

  2. Cliquer sur le bouton Ajouter (+).

  3. Sélectionner Passerelle.

  4. Entrer ce qui suit (cela changera en fonction de la configuration).

    1. Nom : Passerelle Linux

    2. URL de Devolutions Gateway : https://10.10.0.20:7171

    3. Nom d'hôte TCP : Ubuntu-2204

  5. Cliquer sur Enregistrer.

Cliquer sur le menu Plus d'options pour le gateway et choisir l'option Publier la liste de révocation si la liste de révocation est obsolète.

Résoudre les hôtes dans Ubuntu

Le système Devolutions Gateway hébergé sous Linux doit être capable de résoudre les adresses demandées par Devolutions Server. La méthode la plus simple pour tester cela est de modifier le fichier hosts.

Se connecter au système suivant :

  • Nom d'hôte : it-help-dc

  • Nom de domaine entièrement qualifié (FQDN) : it-help-dc.ad.it-help.ninja

  • Adresse IP : 10.10.0.3

Ouvrir le fichier hosts pour édition sudo nano /etc/hosts pour ajouter l'hôte dans Ubuntu.

Ouvrir une session RDP basée sur le Web

La passerelle peut désormais se connecter aux hôtes. Puisque l'hôte it-help-dc a été ajouté comme résolvable sur Ubuntu, il peut être utilisé pour se connecter dans une session basée sur le Web.

Les sessions basées sur le Web nécessitent une passerelle active configurée pour l'entrée et l'utilisateur lançant nécessitera une licence Remote Desktop Manager Team edition ou une licence Devolutions Launcher.

De plus, si des changements ont été apportés aux attributions de licences, il peut être nécessaire de se déconnecter et de se reconnecter pour voir l'option de lancer la connexion basée sur le Web.

  1. Dans l'interface Web de Devolutions Server, cliquer sur Ajouter. Sélectionner une entrée de session RDP.

  2. Cliquer sur Continuer.

  3. Saisir un Nom et un Hôte qui doivent être résolvables par l'installation de Devolutions Gateway sur Linux.

  4. Cliquer sur Ajouter.

  5. Entrer ou lier tout identifiant nécessaire à la session RDP et cliquer sur Ajouter.

  6. Sous l'onglet VPN/Tunnel/Gateway, choisir Devolutions Gateway comme type de VPN.

  7. Définir l'option Connecter sur Toujours connecter.

  8. Choisir la passerelle correcte.

  9. Cliquer sur Ajouter.

  10. Cliquer sur Ouvrir dans le client Web.

Ouvrir une session RDP dans Remote Desktop Manager

Si l'entrée est déjà configurée depuis l'interface web de Devolutions Server, elle peut être lancée depuis Remote Desktop Manager lorsqu'elle est connectée à la source de données Devolutions Server.

Ignorer cette section si installer Devolutions Gateway avec Devolutions Cloud.

Lors de la création d'une nouvelle entrée depuis Remote Desktop Manager, le processus est similaire à celui de Devolutions Server.

  1. Dans Remote Desktop Manager, cliquer sur Nouvelle entrée. Sélectionner une entrée de session RDP.

  2. Cliquer sur Sélectionner.

  3. Saisir un Nom et un Hôte qui doivent être résolvables par l'installation de Devolutions Gateway sur Linux.

  4. Saisir ou lier les informations d'identification nécessaires à la session RDP.

  5. Définir l'option Connecter sur Toujours connecter.

  6. Sous l'onglet VPN/Tunnel/Gateway, choisir Devolutions Gateway comme type de VPN.

  7. Aller à l'onglet Paramètres (Devolutions Gateway).

  8. Choisir le Devolutions Gateway désiré.

  9. Cliquer sur Ajouter.

  10. Cliquer sur le bouton Ouvrir la session.

En survolant la barre de titre, une info-bulle apparaîtra et montrera que le RDP est connecté via Devolutions Gateway.

Devolutions Forum logo Partagez vos commentaires