Windows dans un navigateur sans inscription et SMS - vue d'ensemble des clients HTML5 RDP


Il était une fois, lorsque les arbres étaient grands, et j'étais un administrateur système jeune et vert, j'ai eu l'occasion d'implémenter un serveur Terminal Server sur Windows 2000. J'ai alors pensé que ce serait bien si aucun client distinct n'était nécessaire pour se connecter au serveur. Au fil du temps, les arbres ont grandi, les cerfs sur le pull ont sorti leurs cornes et moi, une barbe, des solutions pour travailler dans le terminal via le navigateur ont commencé à apparaître sur le marché. Mais ils étaient soit instables, soit coûteux, et les implémentations d'essai ont fait du chemin.


Un peu plus de temps s'est écoulé, des cheveux gris sont apparus dans la barbe et il y avait beaucoup plus de solutions basées sur HTML5. Et je voulais faire un bref aperçu des options gratuites - à la fois pour les administrateurs système débutants et pour ceux qui ont raté ce point, comme moi.


Alors, voulez-vous permettre aux employés de terminalki via un navigateur ou d'administrer des serveurs à travers lui? Bienvenue au chat.


La commodité de la connexion sans client individuel ne peut guère être surestimée - il existe un navigateur sur presque tous les appareils utilisateur. En plus de la commodité de l'utilisateur, il y a un aspect de sécurité: comme un tel client est un service Web, il est beaucoup plus facile de le protéger. En effet, coller un RDP classique avec des vulnérabilités intéressantes est tout simplement assez dangereux, travailler via un VPN n'est pas toujours pratique, et les services fail2ban et une aide de port non standard, mais ne donnent pas une protection à 100%. Alors que le service Web peut être protégé par une autorisation de certificat et d'autres méthodes d'authentification à deux facteurs.


On pense que l'utilisation de RDS-Gateway avec le trafic RDP via HTTPS et l'installation de certificats sur les clients est une bonne protection. En fait, ce n'est pas le cas - l'installation de certificats pour RDS-Gateway est nécessaire pour authentifier non pas le client, mais le serveur. Vous pouvez le vérifier en essayant de vous connecter à des clients RDP tiers. Bien sûr, certains des robots à la recherche d'un RDP ouvert élimineront de cette façon. Mais les solutions fail2ban sont également nécessaires dans ce cas.

Je laisse le paramètre de sécurité en dehors du champ d'application de cet article et je passe à des exemples d'implémentation spécifiques. Nous allons tester sur un serveur Terminal Server basé sur Windows Server 2019, nous utiliserons 1C 7.7 comme application pour vérifier RemoteApp. Parce que nous le pouvons.


Il n'y a pas si longtemps, Microsoft a finalement publié sa solution de connexion à RDP via un navigateur. Commençons par lui.


Client Web Microsoft Remote Desktop


L'installation et la configuration du client sont décrites en détail dans la documentation , je donnerai les étapes de base sous le spoiler.


Installation client depuis MS.

Préparation . Les rôles de la passerelle Bureau à distance et / ou du courtier de connexion doivent se voir attribuer un certificat auquel les clients feraient confiance. Oui, à peu près la même chose que pendant le fonctionnement normal du client RDP via https. Vous pouvez avoir un certificat de confiance public, vous pouvez utiliser une autorité de certification interne et à des fins de test, vous pouvez utiliser un certificat auto-signé.


Vous devrez peut-être d'abord mettre à niveau le module PowerShellGet.


Cela se fait par la commande:


Install-Module -Name PowerShellGet -Force 

Après cela, vous devez redémarrer la console, et pour installer le client, il suffira d'exécuter les commandes:


 Install-Module -Name RDWebClientManagement Install-RDWebClientPackage 

Dans le processus, Nuget peut être téléchargé pour installer des modules à partir du référentiel, le serveur doit être connecté à Internet. Oui, Windows est déjà mature et peut référencer.


Vous devez maintenant configurer le certificat pour ce client. Cela se fait par la commande:


 Import-RDWebClientBrokerCert cert.cer 

Où cert.cer est le chemin d'accès au certificat du courtier de bureau à distance au format cer.


Vous pouvez maintenant publier le client avec la commande:


 Publish-RDWebClientPackage -Type Production -Latest 

Après l'installation, le client devient disponible via un lien du formulaire:


https://trm.contoso.com/RDWeb/webclient/index.html

Après une connexion réussie, toutes les applications RemoteApp publiées dans la collection sont visibles.



Applications publiées dans le navigateur.


Essayons de démarrer 1C en connectant Firefox à Kubuntu .



Kubuntu, Firefox, 1C 7.7.


Vous pouvez exécuter d'autres applications publiées. Dans ce cas, ils fonctionneront dans une seule fenêtre, et le panneau supérieur sera quelque chose comme une barre des tâches.



1C, Paint et WordPad.


En général, tout semble agréable et pratique, un bureau à part entière est également pris en charge. L'impression fonctionne sous forme d'envoi vers une imprimante PDF virtuelle puis de téléchargement du fichier par le navigateur. Le presse-papiers pour le texte fonctionne également, bien que la nécessité de confirmer l'accès du navigateur au presse-papiers soit un peu ennuyeuse.



Confirmation de la copie à partir du bureau distant.


Mais ce qui n'est pas encore disponible, c'est le transfert de fichiers du serveur vers le serveur, et c'est une mouche importante dans la pommade. Pour résumer.


Avantages:


  • Configuration relativement simple.
  • L'installation sur un serveur Windows peut se faire directement sur la passerelle du bureau.
  • Fonctionnement transparent et pratique de RemoteApp.
  • Prise en charge de l'impression et du presse-papiers pour le texte.

Inconvénients:


  • Il est nécessaire de traiter les certificats.
  • Manque de prise en charge du partage de fichiers.

Voyons ce que le monde open source nous offre.


Apache guacamole


Peut-être l'une des solutions les plus connues. Mais la version 1.0 est apparue relativement récemment. Ses inconvénients incluent le manque de support officiel de Windows comme point d'installation - vous avez besoin d'une machine Linux séparée ou d'une image Docker. La documentation est disponible, comme d'habitude, sur le site officiel . Il convient de noter qu'en plus de RDP, la solution prend en charge l'accès par navigateur aux serveurs ssh, telnet et vnc.


Si vous ne souhaitez pas créer une nouvelle version à partir des sources et gérer les dépendances, vous pouvez utiliser des scripts d'installation prêts à l'emploi, tels que le script d' installation de guac . Mais - comme d'habitude - les éditeurs ne sont pas responsables des scripts tiers.

Après l'installation, selon la documentation, vous devez en quelque sorte créer des utilisateurs et configurer les connexions. J'ai utilisé le travail avec MySQL comme référentiel d'utilisateurs et de leurs paramètres et mis en place le tout via une interface Web. Grâce à lui, vous pouvez créer et configurer des utilisateurs, des connexions et des groupes qui vous permettent d'établir des connexions communes pour différents utilisateurs.



Configuration d'une simple connexion RDP.


Il convient de noter que si nous voulons nous connecter de manière transparente en nous connectant uniquement via l'interface Web, nous devrons soit créer manuellement une connexion pour chaque utilisateur en entrant son mot de passe (!), Soit effectuer une installation plus compliquée. Par exemple, utilisez Active Directory pour stocker les paramètres et autoriser la base de données, ce qui nécessitera une modification du schéma AD. Ou configurez l'autorisation via LDAP, créant également des utilisateurs dans une base de données classique comme MySql .


Sans installations complexes, vous devrez créer des utilisateurs d'interface Web distincts ou faire une chose en commun. Dans ce cas, si vous ne spécifiez pas de nom d'utilisateur et de mot de passe dans les paramètres de connexion, vous devez désactiver la sécurité NLA sur le serveur. Pas très pratique.


En plus d'un bureau complet, il existe également un support pour RemoteApp. Une nuance importante est que vous devez enregistrer le nom du programme dans les paramètres de la même manière que dans le fichier RDP.



Configurez RemoteApp.


Et si tout a été fait correctement, notre "sept" s'ouvrira dans le navigateur.



Et encore 1C 7.7 dans le navigateur.


L'impression fonctionne de la même manière: le PDF est téléchargé, mais - contrairement à la solution de MS, il existe la possibilité d'un échange de fichiers avec le serveur.


En fait, Apache Guacamole lance freerdp et peut parcourir les dossiers de sa machine Linux vers un serveur Windows.



Disque redirigé en 1C.


À son tour, vous pouvez télécharger ou télécharger un fichier à partir d'un navigateur via un menu spécial. Dans ce menu, vous pouvez également configurer l'émulation de la souris et le clavier à l'écran. Il est appelé par le raccourci clavier Ctrl + Alt + Maj.



Travaillez avec des fichiers.


Le presse-papiers de texte fonctionne également, mais un peu gênant (il exaspère beaucoup plus que la solution de MS). Les navigateurs modernes associés à Apache Guacamole facilitent la copie de texte à partir d'une application distante à l'aide de Ctrl + C, mais pour coller du texte à partir d'une machine locale, vous devrez utiliser le menu par Ctrl + Alt + Maj.


Mais presque «prêt à l'emploi» a implémenté une authentification à deux facteurs (surtout si vous effectuez l'installation avec un script tiers). Par exemple, en utilisant l'algorithme TOTP .


Permettez-moi de rappeler brièvement: TOTP (Time-based One-time Password Algorithm) est un algorithme pour générer des mots de passe à usage unique en fonction du temps. Lors de la première connexion, l'utilisateur sera invité à lire un code-barres bidimensionnel ou à écrire un ensemble de caractères, à les «transmettre» à l'application (par exemple, Google Authenticator ). Et sur la base de cet ensemble de caractères (chaîne de sécurité), l'application générera un nouveau numéro de code pour une entrée toutes les 30 secondes.

En général, la solution a donné l'impression d'une solution plus réfléchie et complète, si ce n'est pour une certaine difficulté à mettre en place pour un fonctionnement normal. Pour résumer.


Avantages:


  • Prise en charge du presse-papiers et de l'impression de texte.
  • Prise en charge du partage de fichiers.
  • Prise en charge des écrans tactiles sous forme d'émulation personnalisée de la souris et du clavier.
  • Possibilité d'enregistrer une session dans un fichier vidéo.

Inconvénients:


  • La nécessité d'une machine ou d'un conteneur séparé.
  • Difficile à configurer, surtout pour un spécialiste qui ne connaît pas Linux.
  • Fonctionnement peu pratique du presse-papiers de texte.

Sur les espaces ouverts du réseau, j'ai trouvé un autre projet peu connu qui lance freerdp et affiche le résultat via un navigateur. Essayons aussi.


Myrtille


Le projet avec toute la documentation se trouve sur le github de l'auteur. Contrairement à Guacamole, Myrtille est installé sur Windows, et même pratiquement en mode "Suivant - Suivant - OK". Installez, lancez le navigateur.



Windows dans le navigateur.


Outre RDP, SSH et la connexion à la machine virtuelle Hyper-V sont pris en charge. Le menu de gestion des connexions est appelé par un bouton à trois points dans le coin supérieur gauche.



Menu de gestion des connexions.


Le travail avec les fichiers se fait via l'interface Web - le bouton Fichiers permet d'accéder au dossier Mes documents de l'utilisateur pour télécharger et télécharger des fichiers. Cependant, si Myrtille n'est pas installé sur un serveur Terminal Server, vous devrez configurer la redirection de dossiers. L'impression, contrairement aux deux autres solutions, ouvre immédiatement une fenêtre avec une boîte de dialogue d'impression PDF.


Les choses sont un peu pires avec RemoteApp lorsque l'application s'exécute en mode normal. Pour exécuter le malheureux 1C, vous devez former un lien du formulaire:


https: // myserver / Myrtille /? __EVENTTARGET = & __ EVENTARGUMENT = & server = server & domain = domain & user = user & passwordHash = passwordHash & program = program

Dans lequel vous devez spécifier explicitement l'utilisateur et son mot de passe (ou hachage de mot de passe). Le programme doit être écrit de la même manière que dans le fichier RDP - dans le cas de notre 1C, ce sera || 1cv7l . Tous les paramètres doivent être codés par URL .



Et la troisième fois 1C dans le navigateur.


Pour obtenir le hachage du mot de passe, vous pouvez également utiliser myrtille en suivant simplement le lien (en exécutant une requête GET):

https: //server/myrtille/GetHash.aspx? password = mot de passe

L'authentification à deux facteurs est également disponible « prête à l' emploi » et est basée sur oliveinnovations.com .


Pour fonctionner dans un environnement de domaine, l'application dispose d'un mode de fonctionnement distinct - le mode Entreprise. Pour l'activer, vous devez spécifier le nom de domaine et le groupe d'administrateurs (utilisateurs pouvant configurer les connexions) lors de l'installation (ou plus tard, dans les fichiers de configuration). Ensuite, lors de la connexion, seuls un nom d'utilisateur et un mot de passe seront demandés, et l'administrateur peut créer des configurations de connexion prédéfinies pour les groupes d'utilisateurs. Cela nous permettra de créer un raccourci pratique pour lancer 1C.



Création d'une connexion dans le panneau de configuration du mode Entreprise.


Maintenant, l'utilisateur à l'entrée verra les connexions disponibles et lancera 1C par bouton, mais pas par un lien étrange avec un mot de passe.



L'interface lorsqu'un utilisateur normal se connecte.


Malheureusement, pour le moment, je n'ai pas pu faire fonctionner le presse-papiers de texte dans les navigateurs modernes - le travail est uniquement sur le bouton du presse-papiers et uniquement sur le côté du serveur au PC local.


Total


Avantages:


  • Installation facile sous Windows.
  • Prise en charge de presque tout ce dont vous avez besoin, comme l'impression et le transfert de fichiers.
  • La possibilité de se connecter à l'application ou au bureau immédiatement via le lien.
  • Il est possible de travailler en mode compatibilité (HTML4).

Inconvénients:


  • Alors que le presse-papiers de texte ne fonctionne pas normalement.
  • Travailler avec des fichiers n'est pratique que si le service est installé directement sur le serveur Terminal Server.

Au lieu d'une postface


Bien sûr, il existe d'autres solutions, notamment payantes. Voici quelques-uns des plus populaires sans toucher à des monstres comme Xen Desktop:



Ils prennent déjà en charge les imprimantes et travaillent avec des fichiers, mais en principe, les solutions gratuites ont plus ou moins atteint un niveau similaire.


Selon les résultats de l'étude, j'ai décidé de m'attarder sur une solution de la SEP, car le transfert de fichiers dans mon cas n'était pas nécessaire (plus précisément, il n'était catégoriquement pas nécessaire).

Source: https://habr.com/ru/post/fr470525/


All Articles