Wer ärgert sich nicht über die Abzockerei bei Windows Terminalservern mit CALs etc? Es geht aber auch billiger und besser mit HTML5.
Das in der IT Öffentlichkeit kaum wahrgenommene Apache Guacamole ist hier eine sehr schöne Lösung, mit der man auch sehr viele Probleme mit störrischen Anwendungen, die nicht auf Terminalserver laufen wollen, lösen kann. Quasi kostenlos dazu gibt es auch die Beseitigung der üblichen Security Probleme mit RDP und sonstigem Security Gefrickel made by Microsoft.
Wir machen jetzt hier aus Windows eine Web Anwendung, daher werden sich die Security Maßnahmen zunächst auch mit Web Security befassen. Die beteiligten Komponenten:
Als Web Application Firewall kommen z.B. Bunkerized Nginx oder für größere Unternehmen eine F5-Big Lösung in Betracht. In beiden Fällen sollten zumindest die OWASP Rulesets installiert werden, wobei speziell zunächst Rulesets zu Injection Angriffen aktiviert sein sollten. Weiterhin ist eine MFA Pflicht, dabei sind Smartcard HSM oder Yubikey zu empfehlen, beides wird von OpenSC unterstützt. Wer keine (DSGVO) Probleme bei der Nutzung von US Anbietern von Cloud Services sieht, kann z.B. via Cloudflare Access auch einen Zugriff über einen solchen Service aus dem Internet ermöglichen.
Am besten nutzt man dafür die Docker Images, die Apache dafür bereitstellt. Mit Docker Compose bekommt man die Komponenten in ein zentrales Config File.
version: '3.7'
services:
guacd:
image: guacamole/guacd
logging:
driver: json-file
restart: unless-stopped
guacamole:
environment:
- GUACD_HOSTNAME=guacd
- GUACD_PORT=4822
- POSTGRES_HOSTNAME=postgres
- POSTGRES_PORT=5432
- POSTGRES_DATABASE=guacamole
- POSTGRES_USER=guacamole
- POSTGRES_PASSWORD=***
extra_hosts:
- "postgres:192.168.54.32"
image: guacamole/guacamole
ports:
- 172.17.0.1:8080:8080
volumes:
- ./build:/usr/src/guacamole
logging:
driver: json-file
restart: unless-stopped
Es wird hier eine externe Postgresql Datenbank verwendet.
Sinnvollerweise sollte im Netzsegment von Guacamole eine DNS Auflösung gegen die Active Directory Domain möglich sein, dann muss man sich nicht mit dynamischen IP-Adressen herumschlagen.
Für einen ersten Versuch müssen unter Guacamole Verbindungen und User angelegt werden.
Wichtig sind bei den Verbindungen zunächst Netzwerk und Authentifizierung. Unte Netzwerk sollte der im Active Directory bekannte Hostname für jeden Windows Host, der über Guacamole genutzt werden soll, angegeben werden. Zu jedem Windows Host gehört genau eine Verbindung. Unter User werden die Accounts vergeben, die über HTML5 Windows nutzen sollen. Dort erfolgt auch die Zuordnung User ↔ Verbindung.
Das Durchreichen der Smartcard via RDP zu Windows wird von Guacamole derzeit (noch) nicht unterstützt (Stand Guacamole Version 1.4.0).
Bei der Konfiguration von Nginx muss nur beachtet werden, dass Websockets unterstützt werden und am besten X.509 Clientzertifikate erzwungen werden. Damit bekommt man eine wirksame 2F Authentifizierung, wenn der private Schlüssel auf einer Smartcard liegt.
Aus dem Internet ist jetzt ein Zugriff auf die persönliche Windows Instanz möglich.
Die Performance unterscheidet sich je nach Leistung der Internet Anbindung. Im LAN ist praktisch kein Unterschied zu direktem RDP zu bemerken. Hier ist Window 11 im Chromium Browser zu sehen. Die Verbindung bleibt allerdings nur bestehen, wenn die Smartcard gesteckt ist. Wird die Smartcard herausgezogen, dann wird die Verbindung nach wenigen Minuten unterbrochen.