Dit artikel verscheen eerder in IT-Beheer Magazine
Windows Server 2008 is nu eindelijk uitgekomen en bevat tal van nieuwe functies waarbij met name op het gebied van Terminal Server een aantal grote veranderingen zijn gekomen. Een van de meest in het oog springende daarbij is de RemoteApp-functionaliteit. Samen met de Terminal Server Gateway-functionaliteit is dit de grote verbetering op Terminal Server-gebied te noemen en dan met name omdat dit de eindgebruikerservaring zo enorm kan verbeteren.
Figuur 1 : TS Webaccess interface
Er zijn natuurlijk nog veel meer verbeteringen, maar die lossen vaak een probleem van maar een deel van de doelgroep op. RemoteApp is een antwoord op een vraag die eigenlijk al sinds de introductie van Windows 2000 Server speelt en dat is hoe applicaties die in op een Terminal Server draaien, geprojecteerd kunnen worden op de desktop zonder dat de eindgebruiker het verschil kan zien. Daardoor ontstaat er een uniforme gebruikerservaring. Tot nu toe moest men of de toevlucht nemen tot Citrix, of, wanneer dit te duur werd geacht, tot de diverse hulpprogramma’s die op dit gebied zijn ontwikkeld.
Figuur 2 : Makkelijk programma's kiezen om te publiceren
RemoteApp biedt deze functionaliteit nu aan in Windows Server 2008.
RemoteApp zorgt ervoor dat een applicatie zich op de desktop zoveel mogelijk ook gedraagt als een desktopapplicatie en dit lukt tot in een vrij grote mate van detail. Knippen en plakken tussen applicaties kan bijvoorbeeld gewoon, zij het dat dit minder goed verloopt tussen lokale en via RemoteApp aangeboden applicaties. Aan de andere kant is vooral Outlook een mooi voorbeeld van de mate waarin remoteapp er in slaagt outlook visueel te scheiden van terminal services. Wanneer we een email openen in Outlook, opent er ook keurig een nieuw venster op de desktop. Openen we een attachment, dan opent die zich keurig in de applicatie die daarvoor bedoeld is en op de Terminal Server aanwezig is. Nog mooier is dat ook het Systray-icoon van Outlook gewoon zichtbaar is in de lokale taakbalk en we bij binnenkomst van een nieuwe email ook dezelfde berichtgeving krijgen als wanneer Outlook lokaal geïnstalleerd was. Wellicht het enige punt van kritiek hier is dat Aero Glass niet werkt in een Terminal Server-sessie en we dit helaas moeten missen voor de RemoteApp-functionaliteit.
Figuur 3 : Niet alles is koek en ei, we lopen soms tegen problemen met eerdere versies aan
Hoe werkt RemoteApp nu eigenlijk? Er zijn een aantal verschillende onderdelen van het systeem bij betrokken. Daarbij zokm het meest relevant het proces RDPINIT.EXE en RDPSHELL.EXE. RDPINIT.EXE wordt gestard door USERINIT, die normalerwijze ervoor zorgt dat zaken als loginscripts worden gestart en netwerkverbindingen worden gemaakt. Bij een RemoteApp-sessie werkt dit niet helemaal hetzelfde. USERINIT start normalerwijze Windows Explorer, die er op zijn beurt voor zorgt dat applicaties in de HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\Run-sleutel, de runonce-sleutel en de startupmappen worden gestart. Echter in een RemoteApp sessie gebeurt dit niet. Dat kan in specifieke gevallen tot problemen leiden wanneer deze hulpprogramma’s nodig zijn voor het goed functioneren van de applicatie.
Figuur 4 : De RDP instellingen voor TS Webaccess aanpassen.
De voornaamste taak van RDPINIT is om te dienen als een soort waakhond. Probleem is namelijk dat de gebruiker wel weet wanneer hij een applicatie stopt of start, maar de Terminal Server hier een minder goed overzicht over heeft. Dat is met name zo omdat een gebruiker meerdere applicaties van dezelfde server kan gebruiken en wanneer kan nu een sessie daadwerkelijk worden beëindigt omdat deze niet meer wordt gebruikt? RDPINIT start hiertoe RDPSHELL, de vervanger van Explorer in de RemoteApp-functionaliteit. RDPSHELL verbindt zich met alle Windows die worden afgevuurd op de desktop van de gebruiker. Wanneer RDPSHELL onverwacht stopt zal deze weer worden herstart door RDPINIT zodat de gebruiker zijn gegevens niet hoeft te verliezen. Wanneer het programma wat wordt gebruikt wordt gestopt, wordt het daarbij behorende proces ook gestopt. Om te kunnen bepalen of RemoteApp niet langer wordt gebruikt en of de Terminal Server-sessie kan worden gestopt, wordt bepaald of alle RemoteApp applicaties zijn gestopt. Daarna wordt gekeken of alle Systray-applicaties zijn gestopt. Wanneer dit allemaal is gebeurd, wordt er standaard twintig seconden gewacht en nogmaals gecontroleerd of alle applicaties zijn gestopt.
Figuur 5 : Ouderwets met de hand kan natuurlijk ook
Pas hierna wordt de Terminal Server-verbinding daadwerkelijk verbroken, de Terminal Server-client (MSTSC.EXE) gestopt en wordt aan de hand van Group Policies bepaald wat er verder nog moet gebeuren met de Terminal Server-sessie. De twintig secondentermijn is instelbaar met de volgende policy:
Computer Configuration\Administrative Templates\Windows Components\Terminal Services\Terminal Server\Session Time Limits
Of per gebruiker:
User Configuration\Administrative Templates\Windows Components\Terminal Services\Terminal Server\Session Time Limits
Doordat het opnieuw opbouwen van een Terminal-sessie meer tijd kost dan het herstellen van een verbroken verbinding en dit weer meer tijd kost dan het voortzetten van een actieve verbinding, kunnen we met behulp van deze instelling de performance beïnvloeden.
Het toevoegen van de RemoteApp-functionaliteit is vrij eenvoudig. Ervan uitgaande dat Terminal Services al is geconfigureerd, kunnen we volstaan met het toevoegen van een nieuwe Role Service, genaamd TSWebAccess. Deze Role Service voegt de gewenste functionaliteit toe samen met de benodigde extra diensten zoals IIS. Het is overigens niet verplicht dat Terminal Server Web Access op dezelfde server staat als de applicaties. Wanneer dit niet zo is, moeten de beveiligingsinstellingen worden aangepast om dit goed te laten functioneren. Nadat een en ander is geïnstalleerd, kunnen we applicaties toe gaan voegen. Dit doen we middels de TS RemoteApp Manager, die is terug te vinden in het startmenu. Publiceren kan met een eenvoudige wizard waarna de applicaties verschijnen in het TS Web Access-scherm, wat tevens één van de manieren is om applicaties te publiceren via RemoteApp en wellicht ook wel de meest aantrekkelijke. Via TSWebaccess kunnen we eenvoudig een soort portal maken met alle belangrijke bedrijfsapplicaties die we beschikbaar willen stellen. Er zit hier wel een nadeel aan vast: Terminal server Web Access heeft de Remote Desktop-client versie 6.1 nodig om goed te kunnen functioneren en deze versie wordt door Microsoft alleen geleverd middels Service Pack 1 voor Windows Vista en Service Pack 3 voor Windows XP. Dit kan momenteel problemen geven om de applicatie grootschalig uit te rollen, omdat in veel bedrijven deze Service Packs nog geen gemeengoed zijn. Wanneer de machine niet voorzien is van het juiste Service Pack komt er een enigszins misluidende melding over het ontbreken van de juiste ActiveX-control (dat is juist) en dat deze kan worden gedownload (dat is onjuist). Waarom de control niet eenvoudig direct kan worden toegevoegd is helaas niet duidelijk. Wanneer we gebruik maken van de TsWebAccess-functie kunnen we het gedrag van de control beïnvloeden middels de asp.net-instellingen in de IIS
Figuur 6 : De remoteapp manager
Naast de Terminal Server Web Access-functionaliteit zijn er nog een tweetal andere mogelijkheden om applicaties beschikbaar te maken. De eerste is het gebruik van snelkoppelingen. Via de TS RemoteApps Manager kan een snelkoppeling worden aangemaakt die we dan vervolgens kunnen plaatsen waar nodig. Eventueel is de snelkoppeling achteraf nog aan te passen op details voor zover dit via de wizard niet mogelijk is. Nadeel van deze aanpak is natuurlijk dat er een snelkoppeling moet worden gedistribueerd, maar hier is in voorzien middels een mogelijkheid om de snelkoppeling ook te verpakken in een MSI-bestand waarmee we bijvoorbeeld via een Group policy of andere distributiemethode de snelkoppelingen kunnen verspreiden.
Al eerder heb ik de Terminal Server Remote Gateway genoemd. Het publiceren van applicaties vanaf een Terminal Server is één ding, maar nog mooier is natuurlijk als we deze applicaties ook op een veilige manier kunnen publiceren aan medewerkers, zodat deze thuis kunnen werken zonder dat we volledige netwerk toegang hoeven te geven, waardoor we het netwerk zouden open stellen voor onbekende invloeden. De Terminal Server Gateway is een additionele Terminal Server-rol die Terminal Server Web Access aan de buitenwereld aanbiedt over SSL. Via Terminal Server Gateway kunnen een of meerdere Terminal Servers over dezelfde SSL-poort worden aangeboden, zodat we slechts één poort voor de buitenwereld hoeven open te stellen.
Het is raadzaam om voor deze toepassing meteen een SSL certificaat aan te schaffen. Dit hoeft niet een grote kostenpost te zijn; via bijvoorbeeld http://www.sslcertificaten.nl kan voor een laag bedrag al een certificaat worden verkregen.
De basisconfiguratie van de gateway is vrij eenvoudig in te stellen door op de firewall poort 443 naar de gatewayserver te leiden. Hierna is het zaak om een Connection Authorization Policy (CAP) in te stellen waarmee we kunnen bepalen wie er mag verbinden met de Terminal Server en een Resource Authorisation Policy (RAP) waarmee we bepalen welke resources beschikbaar zijn. Hoewel het logisch is om Terminal Server Web Access in te zetten, is dit niet per se verplicht. We kunnen ook direct met een Remote Desktop-client verbinden en daar de naam van een interne server opgeven. De Resource Authorization Policy bepaalt welke servers bereikbaar zijn op deze manier.
Middels de combinatie van Terminal Server Web Access, de Terminal Server Gateway en de Remote Apps-functionaliteit wordt de Terminal Server-functie van Windows Server 2008 op een heel nieuw niveau gebracht, wat wellicht een van de meest aantrekkelijke redenen is geworden om naar Windows Server 2008 over te stappen. Samen met de andere verbeteringen op Terminal Server gebied is dit een prachtige toevoeging aan dit nieuwe besturingssysteem.
W. Verveen is verbonden aan Ormer ICT dienstverlening als Consultant, daarnaast beheert hij Windows 2000 Wereld
E-mail: w.verveen@ormer.nl
Web: http://www.ormer.nl en http://www.win2kwereld.nl