Die Installation und spätere Verwaltung der Remotedesktopdienste („Terminalserver“) hat sich in Windows Server 2012 R2 gegenüber früheren Windowsversionen stark verändert. Es gibt jede Menge „Schritt für Schritt“ Anleitungen im Internet (wie z.B. hier), welche die grundlegenden Installationsschritte (Rolle im Server-Manager hinzufügen, Standardbereitstellung, Sitzungsbasierte Desktopbereitstellung) gut erklären.
Da im aktuellen Fall nicht vom Internet aus auf den „Terminalserver“ zugegriffen werden soll, habe ich auf die Installation des Remotedesktopgateways verzichtet.
Um die gelben Warnungen („Die Identität des Remotecomputers kann nicht überprüft werden…“) beim Aufbau der Remotedesktop-Verbindung zu vermeiden, habe ich vorab mit der Windows Domänen-Zertifizierungsstelle ein Zertifikat erzeugt und dieses mit dem Assistenten in die RDS-Bereitstellung eingetragen. Das zu dem Zertifikat gehörige Root-Zertifikat der CA (Zertifizierungsstelle) habe ich per Gruppenrichtlinie automatisch auf alle PCs in der Domäne verteilt.
1) RD-Lizenzierung
Auf das erste Problem bin ich bei der Konfiguration der Remotedesktop-Lizenzierung gestoßen: Man kann mit dem Assistenten in der RDS-Bereitstellung zwar wunderbar den Lizenzierungsmodus und den Lizenzierungsserver festlegen, nur leider haben diese Angaben keinerlei Wirkung! Es wird trotz dieser Angaben (und korrekt aktiviertem Lizenzmanager mit gekauften CALs) immer die Sprechblase „Der Lizenzierungsmodus für den Remotedesktop-Sitzungshostserver ist nicht konfiguriert“ im Systray angezeigt. Letztlich hat sicher herausgestellt, dass man diese Parameter nur mit den beiden folgenden (lokalen) Gruppenrichtlinien festlegen kann:
Computerkonfiguration -> Administrative Vorlagen -> Windows Komponenten -> Remotedesktopdienste -> Remotedesktopsitzungs-Host -> Lizenzierung-> Angegebene Remotedesktop-Server verwenden Computerkonfiguration -> Administrative Vorlagen -> Windows Komponenten -> Remotedesktopdienste -> Remotedesktopsitzungs-Host -> Lizenzierung-> Remotedesktop-Lizenzierungsmodus festlegen
2) Home Folder
Auf dem Terminalserver läuft eine ziemlich alte Datenbankanwendung, die für die meisten Anwender angenehm schnell läuft, bei einigen wenigen Anwendern allerdings quälend langsam war. Nach langer Recherche hat sich das „Laufwerk X:“ („Home Folder“ im Active Directory Profil jedes Benutzers) als Grund herausgestellt: Die alte Datenbankanwendung will eine kleine ini-Datei in das Windows-Verzeichnis schreiben, was unter Server 2012 R2 natürlich nicht möglich ist. Das Betriebssystem leitet diese Datei völlig transparent nach X:\Windows um, was im Prinzip wunderbar funktioniert solange der betreffende Benutzer sein „Laufwerk X:“ auf einem Server liegen hat, der sich am gleichen Standort wie der Terminalserver befindet. Wenn das „Laufwerk X:“ des Benutzers aber an einem andern Standort liegt, ist der Zugriff auf die ini-Datei über die VPN-Verbindung extrem langsam, obwohl die Datei nur 11 KB groß ist.
Ich habe mit Hilfe der folgenden Gruppenrichtlinie auf dem Terminalserver ein „Basisverzeichnis“ festgelegt. Damit können die Benutzer zwar leider auf dem Terminalserver nicht mehr auf ihr „Laufwerk X:“ zugreifen, aber die oben beschriebene transparente Umleitung des Zugriffs auf die ini-Datei funktioniert jetzt wunderbar in das lokale Basisverzeichnis und alle Benutzer können schnell mit der alten Datenbankanwendung arbeiten.
Computerkonfiguration -> Administrative Vorlagen -> Windows Komponenten -> Remotedesktopdienste -> Remotedesktopsitzungs-Host -> Profile-> Basisverzeichnis für Remotedesktopdienste-Benutzer festlegen
Für das Verzeichnis „C:\Basisverzeichnis“ habe ich folgende NTFS-Rechte vergeben:
- SYSTEM – Vollzugriff – Dieser Ordner, Unterordner und Dateien
- Administratoren – Vollzugriff – Dieser Ordner, Unterordner und Dateien
- Benutzer – Lesen, Ausführen – Nur dieser Ordner
- Benutzer – Speziell (Dateien erstellen/Daten schreiben, Ordner erstellen/Daten anhängen) – Dieser Ordner, Unterordner
- ERSTELLER-BESITZER – Vollzugriff – Nur Unterordner und Dateien
3) Sammlungen
Irgendwann ist mir aufgefallen, dass z.B. die Anzeige der momentan aktiven Verbindungen nur angezeigt wird, wenn man auf dem Remote Desktop Session Host eine „Sammlung“ angelegt hat. Dies hatte ich bis dahin nicht gemacht, gehört aber zu einer sauberen Installation dazu, auch wenn man die dadurch mögliche detaillierte Zugriffsverwaltung nicht benötigt. Die Erstellung einer Sammlung ist im Server-Manager mit einem Assistenten sehr einfach möglich (dabei im letzten Schritt die Option „Benutzerprofil-Datenträger aktivieren“ deaktivieren), nur leider schlägt die Erzeugung mit der Fehlermeldung „Der RD-Sitzungshostserver kann nicht konfiguriert werden. Der Vorgang ist ungültig“ fehl. Die Lösung habe ich in KB3014614 gefunden: Die beiden oben bei der RD-Lizenzierung beschriebenen Gruppenrichtlinien verhindern die saubere Erzeugung von Sammlungen! Also die beiden Gruppenrichtlinien temporär wieder auf „Nicht konfiguriert“ stellen, die gewünschte Sammlung anlegen (was dann ohne Probleme funktioniert) und dann die Gruppenrichtlinien wieder definieren.
Update
Die Verwendung von Windows Server 2012 R2 „RDS User CALs“ kann im „Remotedesktoplizenzierungs-Manager“ überprüft werden. Jeder Benutzer der sich am Terminalserver anmeldet bekommt eine User CAL zugewiesen, die damit natürlich nicht mehr für andere Benutzer zur Verfügung steht. Dies kann nicht manuell beeinflußt werden, es gibt also keine Möglichkeit eine User CAL aktiv „zurückzugeben“! Deshalb sollte man die Berechtigung zur Anmeldung per RemoteDesktop möglichst weit beschränken, damit nicht durch unnötige Anmeldungen CALs belegt werden.
Eine solche CAL-Zuweisung ist 60 Tage gültig, d.h. wenn sich ein Benutzer 60 Tage lang nicht am Terminalserver angemeldt hat, wird die ihm zugewiesene CAL „ungültig“. Genau 24 Stunden nach diesem Ablauf-Zeitpunkt (der für jede zugewiesene User CAL im Remotedesktoplizenzierungs-Manager angezeigt wird) wird die dann ungültige CAL wieder „frei“, d.h. sie kann anderen Benutzern zugewiesen werden.