
Es war einmal, als die Bäume hoch waren und ich ein junger und grüner Systemadministrator war, hatte ich die Möglichkeit, einen Terminalserver unter Windows 2000 zu implementieren. Dann dachte ich, dass es schön wäre, wenn kein separater Client für die Verbindung zum Server benötigt würde. Mit der Zeit wuchsen die Bäume, die Hirsche auf dem Pullover ließen ihre Hörner los, und ich - ein Bart, Lösungen für die Arbeit im Terminal über den Browser erschienen auf dem Markt. Aber sie waren entweder instabil oder teuer, und Testimplementierungen haben einen langen Weg zurückgelegt.
Etwas mehr Zeit verging, graues Haar erschien im Bart und es gab viel mehr HTML5-basierte Lösungen. Und ich wollte einen kurzen Überblick über die kostenlosen Optionen geben - sowohl für Systemadministratoren für Anfänger als auch für diejenigen, die diesen Punkt verpasst haben, wie ich.
Möchten Sie Mitarbeitern erlauben, über einen Browser zu terminieren oder Server über diesen zu verwalten? Willkommen bei Katze.
Der Komfort einer Verbindung ohne einen einzelnen Client kann kaum überschätzt werden - auf fast jedem Benutzergerät gibt es einen Browser. Neben der Benutzerfreundlichkeit gibt es einen Sicherheitsaspekt: Da ein solcher Client ein Webdienst ist, ist es viel einfacher, ihn zu schützen. In der Tat ist es einfach ziemlich gefährlich, klassisches RDP mit interessanten Schwachstellen herauszuhalten. Das Arbeiten über ein VPN ist nicht immer bequem, und Fail2Ban-Dienste und eine nicht standardmäßige Port-Hilfe bieten jedoch keinen 100% igen Schutz. Der Webdienst kann zwar durch Zertifikatsautorisierung und andere Zwei-Faktor-Authentifizierungsmethoden geschützt werden.
Es wird angenommen, dass die Verwendung von RDS-Gateway mit dem Umschließen des RDP-Verkehrs über HTTPS und dem Installieren von Zertifikaten auf Clients ein guter Schutz ist. Dies ist in der Tat nicht der Fall - die Installation von Zertifikaten für RDS-Gateway ist erforderlich, um nicht den Client, sondern den Server zu authentifizieren. Sie können dies überprüfen, indem Sie versuchen, eine Verbindung zu RDP-Clients von Drittanbietern herzustellen. Natürlich werden einige der Bots, die nach offenem RDP suchen, auf diese Weise aussortieren. In diesem Fall sind aber auch fail2ban-Lösungen erforderlich.
Ich lasse die Sicherheitseinstellung außerhalb des Geltungsbereichs dieses Artikels und gehe zu bestimmten Implementierungsbeispielen über. Wir werden auf einem Terminalserver testen, der auf Windows Server 2019 basiert. Wir werden 1C 7.7 als Anwendung zum Überprüfen von RemoteApp verwenden. Weil wir können.
Vor nicht allzu langer Zeit hat Microsoft endlich seine Lösung für die Verbindung mit RDP über einen Browser veröffentlicht. Beginnen wir mit ihm.
Microsoft Remote Desktop Web Client
Die Installation und Konfiguration des Clients wird in der Dokumentation ausführlich beschrieben, ich werde die grundlegenden Schritte unter dem Spoiler geben.
Client-Installation von MS.Vorbereitung . Den Rollen des Remotedesktop-Gateways und / oder des Verbindungsbrokers muss ein Zertifikat zugewiesen werden, dem Clients vertrauen würden. Ja, ungefähr das gleiche wie während des normalen Betriebs des RDP-Clients über https. Sie können über ein öffentliches vertrauenswürdiges Zertifikat verfügen, eine interne Zertifizierungsstelle verwenden und zu Testzwecken eine selbstsignierte Zertifizierungsstelle verwenden.
Möglicherweise müssen Sie zuerst das PowerShellGet-Modul aktualisieren.
Dies geschieht durch den Befehl:
Install-Module -Name PowerShellGet -Force
Danach müssen Sie die Konsole neu starten und um den Client zu installieren, reicht es aus, die folgenden Befehle auszuführen:
Install-Module -Name RDWebClientManagement Install-RDWebClientPackage
Dabei kann Nuget heruntergeladen werden, um Module aus dem Repository zu installieren. Der Server muss mit dem Internet verbunden sein. Ja, Windows ist bereits ausgereift und kann ein Repository erstellen.
Jetzt müssen Sie das Zertifikat für diesen Client konfigurieren. Dies geschieht durch den Befehl:
Import-RDWebClientBrokerCert cert.cer
Dabei ist cert.cer der Pfad zum Remotedesktop-Broker-Zertifikat im Cer-Format.
Jetzt können Sie den Client mit dem folgenden Befehl veröffentlichen:
Publish-RDWebClientPackage -Type Production -Latest
Nach der Installation wird der Client über einen Link des Formulars verfügbar:
https://trm.contoso.com/RDWeb/webclient/index.html
Nach einer erfolgreichen Anmeldung werden alle in der Sammlung veröffentlichten RemoteApp-Anwendungen angezeigt.

Veröffentlichte Anwendungen im Browser.
Versuchen wir, 1C zu starten, indem wir Firefox mit Kubuntu verbinden .

Kubuntu, Firefox, 1C 7.7.
Sie können andere veröffentlichte Anwendungen ausführen. In diesem Fall arbeiten sie in einem Fenster, und das obere Bedienfeld ist so etwas wie eine Taskleiste.

1C, Paint und WordPad.
Im Allgemeinen sieht alles gut und bequem aus, ein vollwertiger Desktop wird ebenfalls unterstützt. Das Drucken erfolgt in Form des Sendens an einen virtuellen PDF-Drucker und des anschließenden Herunterladens der Datei durch den Browser. Die Zwischenablage für Text funktioniert ebenfalls, obwohl die Notwendigkeit, den Browserzugriff auf die Zwischenablage zu bestätigen, etwas ärgerlich ist.

Bestätigung des Kopierens vom Remotedesktop.
Was jedoch noch nicht verfügbar ist, ist die Übertragung von Dateien vom Server zum Server, und dies ist ein bedeutender Schritt in der Salbe. Zusammenfassend.
Vorteile:
- Relativ einfache Einrichtung.
- Die Installation auf einem Windows-Server kann direkt auf dem Desktop-Gateway erfolgen.
- Transparenter und bequemer Betrieb von RemoteApp.
- Unterstützt Druck und Zwischenablage für Text.
Nachteile:
- Es ist notwendig, mit Zertifikaten umzugehen.
- Fehlende Unterstützung für die gemeinsame Nutzung von Dateien.
Mal sehen, was uns die Welt OpenSource bietet.
Apache Guacamole
Vielleicht eine der bekanntesten Lösungen. Aber Version 1.0 erschien vor relativ kurzer Zeit. Zu den Nachteilen gehört der Mangel an offizieller Windows-Unterstützung als Installationspunkt - Sie benötigen einen separaten Linux-Computer oder ein Docker-Image. Die Dokumentation ist wie gewohnt auf der offiziellen Website verfügbar . Es ist erwähnenswert, dass die Lösung zusätzlich zu RDP den Browserzugriff auf SSH-, Telnet- und VNC-Server unterstützt.
Wenn Sie keine neue Version aus dem Quellcode erstellen und sich mit Abhängigkeiten befassen möchten, können Sie vorgefertigte Installationsskripts verwenden, z. B. das Guac-Installationsskript . Aber wie üblich sind die Redakteure nicht für Skripte von Drittanbietern verantwortlich.
Nach der Installation müssen Sie laut Dokumentation irgendwie Benutzer erstellen und Verbindungen konfigurieren. Ich habe die Arbeit mit MySQL als Repository für Benutzer und deren Einstellungen verwendet und diese ganze Sache über eine Weboberfläche eingerichtet. Über diese Funktion können Sie Benutzer, Verbindungen und Gruppen erstellen und konfigurieren, mit denen Sie gemeinsame Verbindungen für verschiedene Benutzer herstellen können.

Einrichten einer einfachen RDP-Verbindung.
Es ist erwähnenswert, dass wir, wenn wir eine transparente Verbindung herstellen möchten, indem wir uns nur über die Weboberfläche anmelden, entweder manuell eine Verbindung für jeden Benutzer herstellen müssen, indem wir sein Kennwort (!) Eingeben, oder eine kompliziertere Installation durchführen müssen. Verwenden Sie beispielsweise Active Directory, um Einstellungen zu speichern und die Datenbank zu autorisieren, für die eine Änderung des AD-Schemas erforderlich ist. Oder konfigurieren Sie die Autorisierung über LDAP und erstellen Sie Benutzer in einer klassischen Datenbank wie MySql .
Ohne komplexe Installationen müssen Sie separate Benutzer der Weboberfläche erstellen oder eines gemeinsam tun. In diesem Fall müssen Sie die NLA-Sicherheit auf dem Server deaktivieren, wenn Sie in den Verbindungseinstellungen keinen Benutzernamen und kein Kennwort angeben. Nicht sehr praktisch.
Neben einem vollständigen Desktop wird auch RemoteApp unterstützt. Eine wichtige Nuance ist, dass Sie den Programmnamen in den Einstellungen auf die gleiche Weise wie in der RDP-Datei registrieren müssen.

Konfigurieren Sie RemoteApp.
Und wenn alles richtig gemacht wurde, öffnen sich unsere "Sieben" im Browser.

Und wieder 1C 7.7 im Browser.
Das Drucken funktioniert genauso: PDF wird heruntergeladen, aber - anders als bei der Lösung von MS - besteht die Möglichkeit des Dateiaustauschs mit dem Server.
Tatsächlich startet Apache Guacamole Freerdp und kann Ordner von seinem Linux-Computer zu einem Windows-Server durchsuchen.

Umgeleitete Festplatte in 1C.
Sie können wiederum eine Datei über ein spezielles Menü von einem Browser herunterladen oder herunterladen. In diesem Menü können Sie auch die Mausemulation und die Bildschirmtastatur konfigurieren. Es wird über die Tastenkombination Strg + Alt + Umschalt aufgerufen.

Mit Dateien arbeiten.
Die Text-Zwischenablage funktioniert ebenfalls, ist jedoch etwas unpraktisch (sie macht viel mehr wütend als die Lösung von MS). Moderne Browser in Kombination mit Apache Guacamole erleichtern das Kopieren von Text aus einer Remote-Anwendung mit Strg + C, aber um Text von einem lokalen Computer einzufügen, müssen Sie das Menü mit Strg + Alt + Umschalt verwenden.
Fast "out of the box" wurde jedoch eine Zwei-Faktor-Authentifizierung implementiert (insbesondere, wenn Sie die Installation mit einem Skript eines Drittanbieters durchführen). Zum Beispiel mit dem TOTP- Algorithmus.
Lassen Sie mich kurz daran erinnern: TOTP (Time-based One-Time Password Algorithm) ist ein Algorithmus zum Generieren von Zeitkennwörtern basierend auf der Zeit. Bei der ersten Anmeldung wird der Benutzer aufgefordert, einen zweidimensionalen Barcode zu lesen oder eine Reihe von Zeichen zu schreiben, um sie der Anwendung (z. B. Google Authenticator ) zuzuweisen . Basierend auf diesem Zeichensatz (Sicherheitszeichenfolge) generiert die Anwendung alle 30 Sekunden eine neue Codenummer für die Eingabe.
Im Allgemeinen machte die Lösung den Eindruck eines nachdenklicheren und vollständigeren, wenn auch nicht aufgrund einiger Schwierigkeiten bei der Einrichtung für den normalen Betrieb. Zusammenfassend.
Vorteile:
- Unterstützung für Textzwischenablage und Druck.
- Unterstützung für die gemeinsame Nutzung von Dateien.
- Unterstützung für Touchscreens in Form einer benutzerdefinierten Emulation von Maus und Tastatur.
- Möglichkeit, eine Sitzung in einer Videodatei aufzuzeichnen.
Nachteile:
- Die Notwendigkeit einer separaten Maschine oder eines separaten Containers.
- Schwierig zu konfigurieren, insbesondere für Spezialisten, die mit Linux nicht vertraut sind.
- Nicht sehr bequeme Bedienung der Text-Zwischenablage.
Auf den Freiflächen des Netzwerks fand ich ein weiteres wenig bekanntes Projekt, das freerdp startet und das Ergebnis über einen Browser anzeigt. Lass es uns auch versuchen.
Myrtille
Das Projekt mit der gesamten Dokumentation befindet sich auf dem Github des Autors. Im Gegensatz zu Guacamole wird Myrtille unter Windows installiert und sogar praktisch im Modus "Weiter - Weiter - OK". Installieren Sie den Browser.

Windows im Browser.
Zusätzlich zu RDP werden SSH und die Verbindung zur virtuellen Hyper-V-Maschine unterstützt. Das Verbindungsverwaltungsmenü wird über eine Schaltfläche mit drei Punkten in der oberen linken Ecke aufgerufen.

Verbindungsverwaltungsmenü.
Die Arbeit mit Dateien erfolgt über die Weboberfläche. Über die Schaltfläche "Dateien" können Sie auf den Ordner "Eigene Dateien" des Benutzers zugreifen, um Dateien hoch- und herunterzuladen. Wenn Myrtille jedoch nicht auf einem Terminalserver installiert ist, müssen Sie die Ordnerumleitung konfigurieren. Beim Drucken wird im Gegensatz zu den beiden anderen Lösungen sofort ein Fenster mit einem PDF-Druckdialog geöffnet.
Bei RemoteApp ist es etwas schlimmer, wenn die Anwendung im normalen Modus ausgeführt wird. Um das unglückliche 1C auszuführen, müssen Sie einen Link des Formulars erstellen:
https: // myserver / Myrtille /? __EVENTTARGET = & __ EVENTARGUMENT = & server = server & domain = domain & user = user & passwordHash = passwordHash & program = program
In dem müssen Sie den Benutzer und sein Passwort (oder Passwort-Hash) explizit angeben. Das Programm muss auf die gleiche Weise wie in der RDP-Datei geschrieben sein - im Fall unseres 1C ist es || 1cv7l . Alle Parameter müssen URL-codiert sein .

Und das dritte Mal 1C im Browser.
Um den Passwort-Hash zu erhalten, können Sie myrtille auch verwenden, indem Sie einfach dem Link folgen (indem Sie eine GET-Anfrage ausführen):
https: //server/myrtille/GetHash.aspx? password = password
Die Zwei-Faktor-Authentifizierung ist auch "out of the box" verfügbar und basiert auf oliveinnovations.com .
Um in einer Domänenumgebung zu arbeiten, verfügt die Anwendung über einen separaten Betriebsmodus - den Unternehmensmodus. Um es zu aktivieren, müssen Sie den Domänennamen und die Gruppe der Administratoren (Benutzer, die Verbindungen konfigurieren können) während der Installation (oder später in den Konfigurationsdateien) angeben. Beim Anmelden werden dann nur ein Benutzername und ein Kennwort angefordert, und der Administrator kann vordefinierte Verbindungskonfigurationen für Benutzergruppen erstellen. Auf diese Weise können wir eine bequeme Verknüpfung zum Starten von 1C erstellen.

Erstellen einer Verbindung in der Systemsteuerung im Enterprise-Modus.
Jetzt sieht der Benutzer am Eingang die ihm zur Verfügung stehenden Verbindungen und startet 1C per Knopfdruck und nicht über einen seltsamen Link mit einem Passwort.

Die Schnittstelle, wenn sich ein normaler Benutzer anmeldet.
Leider konnte ich im Moment die Text-Zwischenablage in modernen Browsern nicht zum Laufen bringen - die Arbeit wird nur über die Schaltfläche der Zwischenablage und nur seitlich vom Server zum lokalen PC ausgeführt.
Insgesamt
Vorteile:
- Einfache Installation unter Windows.
- Unterstützung für fast alles, was Sie brauchen, wie Drucken und Dateiübertragung.
- Die Möglichkeit, über den Link sofort eine Verbindung zur Anwendung oder zum Desktop herzustellen.
- Es ist möglich, im Kompatibilitätsmodus (HTML4) zu arbeiten.
Nachteile:
- Während die Text-Zwischenablage nicht normal funktioniert.
- Das Arbeiten mit Dateien ist nur dann bequem, wenn der Dienst direkt auf dem Terminalserver installiert ist.
Anstelle eines Nachwortes
Natürlich gibt es auch andere Lösungen, einschließlich kostenpflichtiger. Hier sind einige der beliebtesten, ohne Monster wie Xen Desktop zu berühren:
Sie unterstützen bereits Drucker und arbeiten mit Dateien, aber im Prinzip haben kostenlose Lösungen mehr oder weniger ein ähnliches Niveau erreicht.
Nach den Ergebnissen der Studie habe ich mich für eine Lösung von MS entschieden, da die Übertragung von Dateien in meinem Fall nicht erforderlich war (genauer gesagt, kategorisch nicht erforderlich war).